diff --git a/gradle.properties b/gradle.properties index 135c18c..20feef6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,15 +4,15 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21 -yarn_mappings=1.21+build.9 -loader_version=0.16.14 -loom_version=1.10-SNAPSHOT +minecraft_version=1.21.1 +yarn_mappings=1.21.1+build.3 +loader_version=0.17.3 +loom_version=1.13-SNAPSHOT + +# Fabric API +fabric_version=0.116.7+1.21.1 # Mod Properties mod_version=1.0.0 maven_group=com.acethewildfire.acesbs archives_base_name=acesbs - -# Dependencies -fabric_version=0.102.0+1.21 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e18bc25..002b867 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/prisma_steel.json b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/prisma_steel.json index 903997b..638978e 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/prisma_steel.json +++ b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/prisma_steel.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:prisma_steel" + "recipe": "acesbs:prisma_steel" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:prisma_steel" + "acesbs:prisma_steel" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/raw_entropy.json b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/raw_entropy.json index cfbe590..3edfae8 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/raw_entropy.json +++ b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/raw_entropy.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:raw_entropy" + "recipe": "acesbs:raw_entropy" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:raw_entropy" + "acesbs:raw_entropy" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/stable_entropy.json b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/stable_entropy.json index 76bd293..645d1e8 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/building_blocks/stable_entropy.json +++ b/src/main/generated/data/acesbs/advancement/recipes/building_blocks/stable_entropy.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:stable_entropy" + "recipe": "acesbs:stable_entropy" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:stable_entropy" + "acesbs:stable_entropy" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/decorations/entropy_block.json b/src/main/generated/data/acesbs/advancement/recipes/decorations/entropy_block.json index 041ca10..ce22b73 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/decorations/entropy_block.json +++ b/src/main/generated/data/acesbs/advancement/recipes/decorations/entropy_block.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:entropy_block" + "recipe": "acesbs:entropy_block" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:entropy_block" + "acesbs:entropy_block" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/decorations/prisma_steel_block.json b/src/main/generated/data/acesbs/advancement/recipes/decorations/prisma_steel_block.json index 9fad1e6..433de02 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/decorations/prisma_steel_block.json +++ b/src/main/generated/data/acesbs/advancement/recipes/decorations/prisma_steel_block.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:prisma_steel_block" + "recipe": "acesbs:prisma_steel_block" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:prisma_steel_block" + "acesbs:prisma_steel_block" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/decorations/stable_entropy_block.json b/src/main/generated/data/acesbs/advancement/recipes/decorations/stable_entropy_block.json index ff7448f..dbfe2b3 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/decorations/stable_entropy_block.json +++ b/src/main/generated/data/acesbs/advancement/recipes/decorations/stable_entropy_block.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:stable_entropy_block" + "recipe": "acesbs:stable_entropy_block" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:stable_entropy_block" + "acesbs:stable_entropy_block" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_campfire_cooking.json b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_campfire_cooking.json index ea2dd6c..097734e 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_campfire_cooking.json +++ b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_campfire_cooking.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:cooked_lemon_from_campfire_cooking" + "recipe": "acesbs:cooked_lemon_from_campfire_cooking" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:cooked_lemon_from_campfire_cooking" + "acesbs:cooked_lemon_from_campfire_cooking" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smelting.json b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smelting.json index 87a014a..585ecd5 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smelting.json +++ b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smelting.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:cooked_lemon_from_smelting" + "recipe": "acesbs:cooked_lemon_from_smelting" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:cooked_lemon_from_smelting" + "acesbs:cooked_lemon_from_smelting" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smoking.json b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smoking.json index af3104b..9c1b240 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smoking.json +++ b/src/main/generated/data/acesbs/advancement/recipes/food/cooked_lemon_from_smoking.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:cooked_lemon_from_smoking" + "recipe": "acesbs:cooked_lemon_from_smoking" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:cooked_lemon_from_smoking" + "acesbs:cooked_lemon_from_smoking" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_entropy_ore.json b/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_entropy_ore.json index a1b6cb7..7c7d5bd 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_entropy_ore.json +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_entropy_ore.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:stable_entropy_from_blasting_entropy_ore" + "recipe": "acesbs:stable_entropy_from_blasting_entropy_ore" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:stable_entropy_from_blasting_entropy_ore" + "acesbs:stable_entropy_from_blasting_entropy_ore" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_raw_entropy.json b/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_raw_entropy.json index b49cb28..e873b01 100644 --- a/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_raw_entropy.json +++ b/src/main/generated/data/acesbs/advancement/recipes/misc/stable_entropy_from_blasting_raw_entropy.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "minecraft:stable_entropy_from_blasting_raw_entropy" + "recipe": "acesbs:stable_entropy_from_blasting_raw_entropy" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "minecraft:stable_entropy_from_blasting_raw_entropy" + "acesbs:stable_entropy_from_blasting_raw_entropy" ] } } \ No newline at end of file diff --git a/src/main/generated/data/acesbs/enchantment/lightning_strike.json b/src/main/generated/data/acesbs/enchantment/lightning_strike.json new file mode 100644 index 0000000..b6ba691 --- /dev/null +++ b/src/main/generated/data/acesbs/enchantment/lightning_strike.json @@ -0,0 +1,32 @@ +{ + "anvil_cost": 2, + "description": { + "translate": "enchantment.acesbs.lightning_strike" + }, + "effects": { + "minecraft:post_attack": [ + { + "affected": "victim", + "effect": { + "type": "acesbs:lighting_strike" + }, + "enchanted": "attacker" + } + ] + }, + "max_cost": { + "base": 25, + "per_level_above_first": 9 + }, + "max_level": 2, + "min_cost": { + "base": 5, + "per_level_above_first": 7 + }, + "primary_items": "#minecraft:enchantable/bow", + "slots": [ + "mainhand" + ], + "supported_items": "#minecraft:enchantable/weapon", + "weight": 5 +} \ No newline at end of file diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBS.java b/src/main/java/com/acethewildfire/acesbs/AcesBS.java index 431bfd2..e0c86ae 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBS.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBS.java @@ -3,6 +3,7 @@ package com.acethewildfire.acesbs; import com.acethewildfire.acesbs.block.ModBlocks; import com.acethewildfire.acesbs.component.ModDataComponentTypes; import com.acethewildfire.acesbs.effect.ModEffects; +import com.acethewildfire.acesbs.enchantment.ModEnchantmentEffects; import com.acethewildfire.acesbs.item.ModItemGroups; import com.acethewildfire.acesbs.item.ModItems; import com.acethewildfire.acesbs.potion.ModPotions; @@ -41,6 +42,8 @@ public class AcesBS implements ModInitializer { ModBlocks.registerModBlocks(); ModSounds.registerSounds(); ModEffects.registerEffects(); + ModPotions.registerPotions(); + ModEnchantmentEffects.registerModEnchantments(); ModDataComponentTypes.registerDataComponentsTypes(); diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java b/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java index 98bb3d7..2773441 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBSDataGenerator.java @@ -1,6 +1,7 @@ package com.acethewildfire.acesbs; import com.acethewildfire.acesbs.datagen.*; +import com.acethewildfire.acesbs.enchantment.ModEnchantments; import com.acethewildfire.acesbs.trim.ModTrimMaterials; import com.acethewildfire.acesbs.trim.ModTrimPatterns; import net.fabricmc.fabric.api.datagen.v1.DataGeneratorEntrypoint; @@ -25,5 +26,6 @@ public class AcesBSDataGenerator implements DataGeneratorEntrypoint { public void buildRegistry(RegistryBuilder registryBuilder) { registryBuilder.addRegistry(RegistryKeys.TRIM_MATERIAL, ModTrimMaterials::bootstrap); registryBuilder.addRegistry(RegistryKeys.TRIM_PATTERN, ModTrimPatterns::bootstrap); + registryBuilder.addRegistry(RegistryKeys.ENCHANTMENT, ModEnchantments::bootstrap); } } diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java index 848ad15..f483227 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModRegistryDataGenerator.java @@ -16,6 +16,7 @@ public class ModRegistryDataGenerator extends FabricDynamicRegistryProvider { protected void configure(RegistryWrapper.WrapperLookup registries, Entries entries) { entries.addAll(registries.getWrapperOrThrow(RegistryKeys.TRIM_MATERIAL)); entries.addAll(registries.getWrapperOrThrow(RegistryKeys.TRIM_PATTERN)); + entries.addAll(registries.getWrapperOrThrow(RegistryKeys.ENCHANTMENT)); } @Override diff --git a/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantmentEffects.java b/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantmentEffects.java new file mode 100644 index 0000000..0e2bb3c --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantmentEffects.java @@ -0,0 +1,25 @@ +package com.acethewildfire.acesbs.enchantment; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.enchantment.custom.LightningStrikeEnchantmentEffect; +import com.mojang.serialization.MapCodec; +import net.minecraft.enchantment.effect.EnchantmentEntityEffect; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class ModEnchantmentEffects { + + public static final MapCodec LIGHTNING_STRIKE = + registerEntityEffect("lighting_strike", LightningStrikeEnchantmentEffect.CODEC); + + + private static MapCodec registerEntityEffect (String name, + MapCodec codec){ + return Registry.register(Registries.ENCHANTMENT_ENTITY_EFFECT_TYPE, Identifier.of(AcesBS.MOD_ID, name), codec); + } + + public static void registerModEnchantments(){ + AcesBS.LOGGER.info("Registering Mod Enchantment Effects for " + AcesBS.MOD_ID); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantments.java b/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantments.java new file mode 100644 index 0000000..9f07ffe --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/enchantment/ModEnchantments.java @@ -0,0 +1,48 @@ +package com.acethewildfire.acesbs.enchantment; + +import com.acethewildfire.acesbs.AcesBS; +import com.acethewildfire.acesbs.enchantment.custom.LightningStrikeEnchantmentEffect; +import net.minecraft.component.EnchantmentEffectComponentTypes; +import net.minecraft.component.type.AttributeModifierSlot; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.enchantment.effect.EnchantmentEffectTarget; +import net.minecraft.registry.Registerable; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.tag.EnchantmentTags; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; + + +public class ModEnchantments { + + public static final RegistryKey LIGHTNING_STRIKE = + RegistryKey.of(RegistryKeys.ENCHANTMENT, Identifier.of(AcesBS.MOD_ID, "lightning_strike")); + + public static void bootstrap(Registerable registerable){ + var enchantments = registerable.getRegistryLookup(RegistryKeys.ENCHANTMENT); + var items = registerable.getRegistryLookup(RegistryKeys.ITEM); + + register(registerable, LIGHTNING_STRIKE, Enchantment.builder(Enchantment.definition( + items.getOrThrow(ItemTags.BOW_ENCHANTABLE), + 5, + 2, + Enchantment.leveledCost(5, 7), + Enchantment.leveledCost(25, 9), + 2, + AttributeModifierSlot.MAINHAND + )).addEffect( + EnchantmentEffectComponentTypes.PROJECTILE_SPAWNED, + new LightningStrikeEnchantmentEffect())); + } + + private static void register(Registerable registry, RegistryKey key, Enchantment.Builder builder){ + registry.register(key, builder.build(key.getValue())); + } + +// public static void registerModEnchantments(){ +// AcesBS.LOGGER.info("Registering Mod Enchantments for " + AcesBS.MOD_ID); +// } +} diff --git a/src/main/java/com/acethewildfire/acesbs/enchantment/custom/LightningStrikeEnchantmentEffect.java b/src/main/java/com/acethewildfire/acesbs/enchantment/custom/LightningStrikeEnchantmentEffect.java new file mode 100644 index 0000000..f8b7451 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/enchantment/custom/LightningStrikeEnchantmentEffect.java @@ -0,0 +1,32 @@ +package com.acethewildfire.acesbs.enchantment.custom; + +import com.mojang.serialization.MapCodec; +import net.minecraft.enchantment.EnchantmentEffectContext; +import net.minecraft.enchantment.effect.EnchantmentEntityEffect; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.Vec3i; + +public record LightningStrikeEnchantmentEffect() implements EnchantmentEntityEffect { + public static final MapCodec CODEC = MapCodec.unit(LightningStrikeEnchantmentEffect::new); + + @Override + public void apply(ServerWorld world, int level, EnchantmentEffectContext context, Entity user, Vec3d pos) { + if(level == 1){ + EntityType.LIGHTNING_BOLT.spawn(world, user.getBlockPos(), SpawnReason.TRIGGERED); + } + if(level == 2){ + EntityType.LIGHTNING_BOLT.spawn(world, user.getBlockPos(), SpawnReason.TRIGGERED); + EntityType.LIGHTNING_BOLT.spawn(world, user.getBlockPos(), SpawnReason.TRIGGERED); + } + } + + @Override + public MapCodec getCodec() { + return CODEC; + } +} diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index 139a1c3..f1ca7d8 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -96,5 +96,7 @@ "tooltip.acesbs.thanks_sov": "§7§oTextures by Sovaeris§r", "sounds.acesbs.lizard": "Lizard!", - "sounds.acesbs.crab_rave": "Jukebox plays Crab Rave" + "sounds.acesbs.crab_rave": "Jukebox plays Crab Rave", + + "enchantment.acesbs.lightning_strike": "Lightning Strike" } \ No newline at end of file diff --git a/src/main/resources/data/minecraft/tags/enchantment/in_enchanting_table.json b/src/main/resources/data/minecraft/tags/enchantment/in_enchanting_table.json new file mode 100644 index 0000000..8293748 --- /dev/null +++ b/src/main/resources/data/minecraft/tags/enchantment/in_enchanting_table.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "acesbs:lightning_strike" + ] +} \ No newline at end of file