Add demo thunder enchantment
This commit is contained in:
parent
6348679de7
commit
4e1b7d8ade
@ -22,7 +22,7 @@ loom {
|
||||
splitEnvironmentSourceSets()
|
||||
|
||||
mods {
|
||||
"modid" {
|
||||
"customenchants" {
|
||||
sourceSet sourceSets.main
|
||||
sourceSet sourceSets.client
|
||||
}
|
||||
@ -85,4 +85,8 @@ publishing {
|
||||
// The repositories here will be used for publishing your artifact, not for
|
||||
// retrieving dependencies.
|
||||
}
|
||||
}
|
||||
|
||||
fabricApi {
|
||||
configureDataGeneration()
|
||||
}
|
@ -6,12 +6,12 @@ org.gradle.parallel=true
|
||||
# check these on https://fabricmc.net/develop
|
||||
minecraft_version=1.21.1
|
||||
yarn_mappings=1.21.1+build.3
|
||||
loader_version=0.16.2
|
||||
loader_version=0.16.5
|
||||
|
||||
# Mod Properties
|
||||
mod_version=1.0.0
|
||||
maven_group=com.example
|
||||
archives_base_name=modid
|
||||
maven_group=com.itzilly
|
||||
archives_base_name=customenchants
|
||||
|
||||
# Dependencies
|
||||
fabric_version=0.102.1+1.21.1
|
||||
fabric_version=0.105.0+1.21.1
|
@ -1,24 +0,0 @@
|
||||
package com.example;
|
||||
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class ExampleMod implements ModInitializer {
|
||||
public static final String MOD_ID = "modid";
|
||||
|
||||
// This logger is used to write text to the console and the log file.
|
||||
// It is considered best practice to use your mod id as the logger's name.
|
||||
// That way, it's clear which mod wrote info, warnings, and errors.
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
// This code runs as soon as Minecraft is in a mod-load-ready state.
|
||||
// However, some things (like resources) may still be uninitialized.
|
||||
// Proceed with mild caution.
|
||||
|
||||
LOGGER.info("Hello Fabric world!");
|
||||
}
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package com.example.mixin;
|
||||
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
@Mixin(MinecraftServer.class)
|
||||
public class ExampleMixin {
|
||||
@Inject(at = @At("HEAD"), method = "loadWorld")
|
||||
private void init(CallbackInfo info) {
|
||||
// This code is injected into the start of MinecraftServer.loadWorld()V
|
||||
}
|
||||
}
|
24
src/main/java/com/itzilly/CustomEnchants.java
Normal file
24
src/main/java/com/itzilly/CustomEnchants.java
Normal file
@ -0,0 +1,24 @@
|
||||
package com.itzilly;
|
||||
|
||||
import com.itzilly.init.EnchantmentInit;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
|
||||
import net.minecraft.util.Identifier;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class CustomEnchants implements ModInitializer {
|
||||
public static final String MOD_ID = "customenchants";
|
||||
|
||||
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
|
||||
|
||||
public static Identifier id(String path) {
|
||||
return Identifier.of(MOD_ID, path);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitialize() {
|
||||
LOGGER.info("Starting Custom Enchants - Realm");
|
||||
EnchantmentInit.load();
|
||||
}
|
||||
}
|
13
src/main/java/com/itzilly/DataGenerator.java
Normal file
13
src/main/java/com/itzilly/DataGenerator.java
Normal file
@ -0,0 +1,13 @@
|
||||
package com.itzilly;
|
||||
|
||||
import com.itzilly.enchantments.EnchantmentGenerator;
|
||||
import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataGenerator;
|
||||
|
||||
public class DataGenerator implements DataGeneratorEntrypoint {
|
||||
@Override
|
||||
public void onInitializeDataGenerator(FabricDataGenerator fabricDataGenerator) {
|
||||
FabricDataGenerator.Pack pack = fabricDataGenerator.createPack();
|
||||
pack.addProvider(EnchantmentGenerator::new);
|
||||
}
|
||||
}
|
19
src/main/java/com/itzilly/LanguageProvider.java
Normal file
19
src/main/java/com/itzilly/LanguageProvider.java
Normal file
@ -0,0 +1,19 @@
|
||||
package com.itzilly;
|
||||
|
||||
import com.itzilly.init.EnchantmentInit;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricLanguageProvider;
|
||||
import net.minecraft.registry.RegistryWrapper;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class LanguageProvider extends FabricLanguageProvider {
|
||||
protected LanguageProvider(FabricDataOutput dataOutput, CompletableFuture<RegistryWrapper.WrapperLookup> registryLookup) {
|
||||
super(dataOutput, registryLookup);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateTranslations(RegistryWrapper.WrapperLookup registryLookup, TranslationBuilder translationBuilder) {
|
||||
translationBuilder.addEnchantment(EnchantmentInit.THUNDERING_KEY, "Thundering");
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package com.itzilly.enchantments;
|
||||
|
||||
import com.itzilly.enchantments.effects.LightningEnchantmentEffect;
|
||||
import com.itzilly.init.EnchantmentInit;
|
||||
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
|
||||
import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider;
|
||||
import net.fabricmc.fabric.api.resource.conditions.v1.ResourceCondition;
|
||||
import net.minecraft.component.EnchantmentEffectComponentTypes;
|
||||
import net.minecraft.component.type.AttributeModifierSlot;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentLevelBasedValue;
|
||||
import net.minecraft.enchantment.effect.EnchantmentEffectTarget;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
import net.minecraft.registry.RegistryWrapper;
|
||||
import net.minecraft.registry.tag.ItemTags;
|
||||
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class EnchantmentGenerator extends FabricDynamicRegistryProvider {
|
||||
public EnchantmentGenerator(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
|
||||
super(output, registriesFuture);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) {
|
||||
RegistryWrapper<Item> itemLookup = registries.getWrapperOrThrow(RegistryKeys.ITEM);
|
||||
|
||||
register(entries, EnchantmentInit.THUNDERING_KEY, Enchantment.builder(
|
||||
Enchantment.definition(
|
||||
itemLookup.getOrThrow(ItemTags.SWORD_ENCHANTABLE),
|
||||
15, // probability of showing up in the enchantment table
|
||||
5, // max level
|
||||
Enchantment.leveledCost(1, 10), // cost per level (base)
|
||||
Enchantment.leveledCost(1, 15), // cost per level (max)
|
||||
7, // anvil applying cost
|
||||
AttributeModifierSlot.HAND
|
||||
))
|
||||
.addEffect(EnchantmentEffectComponentTypes.POST_ATTACK,
|
||||
EnchantmentEffectTarget.ATTACKER,
|
||||
EnchantmentEffectTarget.VICTIM,
|
||||
new LightningEnchantmentEffect(EnchantmentLevelBasedValue.linear(0.5f, 0.15f))));
|
||||
}
|
||||
|
||||
private static void register(Entries entries, RegistryKey<Enchantment> key, Enchantment.Builder builder, ResourceCondition... resourceConditions) {
|
||||
entries.add(key, builder.build(key.getValue()), resourceConditions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Enchantment Generator";
|
||||
}
|
||||
}
|
25
src/main/java/com/itzilly/init/EnchantmentInit.java
Normal file
25
src/main/java/com/itzilly/init/EnchantmentInit.java
Normal file
@ -0,0 +1,25 @@
|
||||
package com.itzilly.init;
|
||||
|
||||
import com.itzilly.CustomEnchants;
|
||||
|
||||
import com.itzilly.enchantments.effects.LightningEnchantmentEffect;
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.effect.EnchantmentEntityEffect;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
import net.minecraft.registry.RegistryKeys;
|
||||
|
||||
|
||||
public class EnchantmentInit {
|
||||
public static final RegistryKey<Enchantment> THUNDERING_KEY = RegistryKey.of(RegistryKeys.ENCHANTMENT, CustomEnchants.id("thundering"));
|
||||
|
||||
public static final MapCodec<LightningEnchantmentEffect> LIGHTNING_EFFECT = register("lightning", LightningEnchantmentEffect.CODEC);
|
||||
|
||||
private static <T extends EnchantmentEntityEffect> MapCodec<T> register(String name, MapCodec<T> codec) {
|
||||
return Registry.register(Registries.ENCHANTMENT_ENTITY_EFFECT_TYPE, CustomEnchants.id(name), codec);
|
||||
}
|
||||
|
||||
public static void load() {}
|
||||
}
|
Before Width: | Height: | Size: 453 B After Width: | Height: | Size: 453 B |
@ -1,34 +1,29 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"id": "modid",
|
||||
"id": "customenchants",
|
||||
"version": "${version}",
|
||||
"name": "Example mod",
|
||||
"description": "This is an example description! Tell everyone what your mod is about!",
|
||||
"name": "Custom Enchants",
|
||||
"description": "Simple server-side fabric mod to add custom enchantments",
|
||||
"authors": [
|
||||
"Me!"
|
||||
"itzilly",
|
||||
"iillyum"
|
||||
],
|
||||
"contact": {
|
||||
"homepage": "https://fabricmc.net/",
|
||||
"sources": "https://github.com/FabricMC/fabric-example-mod"
|
||||
"homepage": "http://itzilly.com/",
|
||||
"sources": "http://itzilly.com/CustomEnchants-Realm"
|
||||
},
|
||||
"license": "CC0-1.0",
|
||||
"icon": "assets/modid/icon.png",
|
||||
"icon": "assets/customenchants/icon.png",
|
||||
"environment": "*",
|
||||
"entrypoints": {
|
||||
"fabric-datagen": [
|
||||
"com.itzilly.DataGenerator"
|
||||
],
|
||||
"main": [
|
||||
"com.example.ExampleMod"
|
||||
],
|
||||
"client": [
|
||||
"com.example.ExampleModClient"
|
||||
"com.itzilly.CustomEnchants"
|
||||
]
|
||||
},
|
||||
"mixins": [
|
||||
"modid.mixins.json",
|
||||
{
|
||||
"config": "modid.client.mixins.json",
|
||||
"environment": "client"
|
||||
}
|
||||
],
|
||||
"mixins": [],
|
||||
"depends": {
|
||||
"fabricloader": ">=0.16.2",
|
||||
"minecraft": "~1.21.1",
|
||||
|
Loading…
x
Reference in New Issue
Block a user