diff --git a/gradle.properties b/gradle.properties index 4f57117..7b1f895 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,11 +6,11 @@ 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.17.3 -loom_version=1.13-SNAPSHOT +loader_version=0.18.4 +loom_version=1.15-SNAPSHOT # Fabric API -fabric_version=0.116.7+1.21.1 +fabric_version=0.116.8+1.21.1 # Mod Properties mod_version=1.2.0 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..f8e1ee3 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 002b867..6954be8 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.14.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f3b75f3..adff685 100644 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -114,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -172,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -205,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat index 9d21a21..c4bdd3a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -70,11 +70,10 @@ goto fail :execute @rem Setup the command line -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* :end @rem End local scope for the variables with windows NT shell diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots.json new file mode 100644 index 0000000..c7ad4ef --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots.json @@ -0,0 +1,68 @@ +{ + "parent": "minecraft:item/generated", + "overrides": [ + { + "model": "acesbs:item/wildfire_boots_quartz_trim", + "predicate": { + "trim_type": 0.1 + } + }, + { + "model": "acesbs:item/wildfire_boots_iron_trim", + "predicate": { + "trim_type": 0.2 + } + }, + { + "model": "acesbs:item/wildfire_boots_netherite_trim", + "predicate": { + "trim_type": 0.3 + } + }, + { + "model": "acesbs:item/wildfire_boots_redstone_trim", + "predicate": { + "trim_type": 0.4 + } + }, + { + "model": "acesbs:item/wildfire_boots_copper_trim", + "predicate": { + "trim_type": 0.5 + } + }, + { + "model": "acesbs:item/wildfire_boots_gold_trim", + "predicate": { + "trim_type": 0.6 + } + }, + { + "model": "acesbs:item/wildfire_boots_emerald_trim", + "predicate": { + "trim_type": 0.7 + } + }, + { + "model": "acesbs:item/wildfire_boots_diamond_trim", + "predicate": { + "trim_type": 0.8 + } + }, + { + "model": "acesbs:item/wildfire_boots_lapis_trim", + "predicate": { + "trim_type": 0.9 + } + }, + { + "model": "acesbs:item/wildfire_boots_amethyst_trim", + "predicate": { + "trim_type": 1.0 + } + } + ], + "textures": { + "layer0": "acesbs:item/wildfire_boots" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_amethyst_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_amethyst_trim.json new file mode 100644 index 0000000..ce7fcf3 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_amethyst_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_amethyst" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_copper_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_copper_trim.json new file mode 100644 index 0000000..873dc96 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_copper_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_copper" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_diamond_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_diamond_trim.json new file mode 100644 index 0000000..cff8a0d --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_diamond_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_diamond" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_emerald_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_emerald_trim.json new file mode 100644 index 0000000..fc3bf3a --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_emerald_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_emerald" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_gold_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_gold_trim.json new file mode 100644 index 0000000..09c1893 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_gold_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_gold" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_iron_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_iron_trim.json new file mode 100644 index 0000000..4d476dc --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_iron_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_iron" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_lapis_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_lapis_trim.json new file mode 100644 index 0000000..ff35724 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_lapis_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_lapis" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_netherite_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_netherite_trim.json new file mode 100644 index 0000000..761deaa --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_netherite_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_netherite" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_quartz_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_quartz_trim.json new file mode 100644 index 0000000..dce3e36 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_quartz_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_quartz" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/acesbs/models/item/wildfire_boots_redstone_trim.json b/src/main/generated/assets/acesbs/models/item/wildfire_boots_redstone_trim.json new file mode 100644 index 0000000..4e507c6 --- /dev/null +++ b/src/main/generated/assets/acesbs/models/item/wildfire_boots_redstone_trim.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "acesbs:item/wildfire_boots", + "layer1": "minecraft:trims/items/boots_trim_redstone" + } +} \ 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 65a25a9..1ec5d33 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBS.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBS.java @@ -9,6 +9,7 @@ import com.acethewildfire.acesbs.entity.ModEntities; import com.acethewildfire.acesbs.entity.custom.FrenEntity; import com.acethewildfire.acesbs.item.ModItemGroups; import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.particle.ModParticles; import com.acethewildfire.acesbs.potion.ModPotions; import com.acethewildfire.acesbs.recipe.ModRecipies; import com.acethewildfire.acesbs.screen.ModScreenHandlers; @@ -57,6 +58,7 @@ public class AcesBS implements ModInitializer { ModBlockEntities.registerBlockEntities(); ModScreenHandlers.registerScreenHandlers(); ModRecipies.registerRecipes(); + ModParticles.registerModParticles(); ModDataComponentTypes.registerDataComponentsTypes(); diff --git a/src/main/java/com/acethewildfire/acesbs/AcesBSClient.java b/src/main/java/com/acethewildfire/acesbs/AcesBSClient.java index 9be3a24..604f6dd 100644 --- a/src/main/java/com/acethewildfire/acesbs/AcesBSClient.java +++ b/src/main/java/com/acethewildfire/acesbs/AcesBSClient.java @@ -6,6 +6,9 @@ import com.acethewildfire.acesbs.entity.client.CombustibleLemonModel; import com.acethewildfire.acesbs.entity.client.CombustibleLemonRenderer; import com.acethewildfire.acesbs.entity.client.FrenModel; import com.acethewildfire.acesbs.entity.client.FrenRenderer; +import com.acethewildfire.acesbs.particle.GreenFlame; +import com.acethewildfire.acesbs.particle.ModParticles; +import com.acethewildfire.acesbs.particle.PurpleFlame; import com.acethewildfire.acesbs.screen.ModScreenHandlers; import com.acethewildfire.acesbs.screen.custom.EntropicEntanglerScreen; import com.acethewildfire.acesbs.screen.custom.EntropicEvisceratorScreen; @@ -13,6 +16,7 @@ import com.acethewildfire.acesbs.screen.custom.EntropicStabilizerScreen; import com.acethewildfire.acesbs.util.ModModelPredicates; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityModelLayerRegistry; import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.minecraft.client.gui.screen.ingame.HandledScreens; @@ -40,5 +44,8 @@ public class AcesBSClient implements ClientModInitializer { HandledScreens.register(ModScreenHandlers.ENTROPIC_STABILIZER_SCREEN_HANDLER, EntropicStabilizerScreen::new); HandledScreens.register(ModScreenHandlers.ENTROPIC_EVISCERATOR_SCREEN_HANDLER, EntropicEvisceratorScreen::new); HandledScreens.register(ModScreenHandlers.ENTROPIC_ENTANGLER_SCREEN_HANDLER, EntropicEntanglerScreen::new); + + ParticleFactoryRegistry.getInstance().register(ModParticles.PURPLE_FLAME, PurpleFlame.Factory::new); + ParticleFactoryRegistry.getInstance().register(ModParticles.GREEN_FLAME, GreenFlame.Factory::new); } } diff --git a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java index 1054501..e5c1ba1 100644 --- a/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java +++ b/src/main/java/com/acethewildfire/acesbs/datagen/ModModelProvider.java @@ -103,6 +103,7 @@ public class ModModelProvider extends FabricModelProvider { itemModelGenerator.registerArmor((ArmorItem) PrismaSteelItems.PRISMA_STEEL_BOOTS); itemModelGenerator.registerArmor((ArmorItem) ModItems.BERSERKERS_PAULDRON); + itemModelGenerator.registerArmor((ArmorItem) ModItems.WILDFIRE_BOOTS); itemModelGenerator.register(ModItems.FREN_SPAWN_EGG, new Model(Optional.of(Identifier.of("item/template_spawn_egg")), Optional.empty())); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java b/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java index 36f35fd..059fee1 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModArmorMaterials.java @@ -28,6 +28,16 @@ public class ModArmorMaterials { }), 20, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, () -> Ingredient.ofItems(PrismaSteelItems.PRISMA_STEEL), List.of(new ArmorMaterial.Layer(Identifier.of(AcesBS.MOD_ID, "prisma_steel"))), 0, 0)); + public static final RegistryEntry WILDFIRE_ARMOR_MATERIAL = registerArmorMaterial("wildfire", + () -> new ArmorMaterial(Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { + map.put(ArmorItem.Type.BOOTS, 3); + map.put(ArmorItem.Type.LEGGINGS, 6); + map.put(ArmorItem.Type.CHESTPLATE, 8); + map.put(ArmorItem.Type.HELMET, 3); + map.put(ArmorItem.Type.BODY, 11); + }), 20, SoundEvents.ITEM_ARMOR_EQUIP_NETHERITE, () -> Ingredient.ofItems(ModItems.INFERNAL_ASHES), + List.of(new ArmorMaterial.Layer(Identifier.of(AcesBS.MOD_ID, "wildfire"))), 0, 0)); + public static final RegistryEntry BERSERKERS = registerArmorMaterial("berserkers", () -> new ArmorMaterial(Util.make(new EnumMap<>(ArmorItem.Type.class), map -> { map.put(ArmorItem.Type.BOOTS, 2); diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java index 35cdacf..787d6e1 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItemGroups.java @@ -102,6 +102,7 @@ public class ModItemGroups { entries.add(ModItems.KAUPEN_BOW); entries.add(ModItems.COMBUSTIBLE_LEMON); entries.add(ModItems.BERSERKERS_PAULDRON); + entries.add(ModItems.WILDFIRE_BOOTS); }) diff --git a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java index a9fad39..efb1c28 100644 --- a/src/main/java/com/acethewildfire/acesbs/item/ModItems.java +++ b/src/main/java/com/acethewildfire/acesbs/item/ModItems.java @@ -144,6 +144,24 @@ public class ModItems { } ); + public static final Item WILDFIRE_BOOTS = registerItem("wildfire_boots", + new WildfireArmorItem(ModArmorMaterials.WILDFIRE_ARMOR_MATERIAL, ArmorItem.Type.BOOTS, new Item.Settings() + .maxDamage(ArmorItem.Type.BOOTS.getMaxDamage(15))){ + @Override + public void appendTooltip(ItemStack stack, TooltipContext context, List tooltip, TooltipType type) { + if(!Screen.hasShiftDown()){ + tooltip.add(Text.translatable("tooltip.acesbs.wildfire_boots_desc")); + tooltip.add(Text.translatable("tooltip.acesbs.generic.shift_more")); + } + else { + tooltip.add(Text.translatable("tooltip.acesbs.wildfire_boots_thanks")); +// tooltip.add(Text.translatable("tooltip.acesbs.thanks_sov")); + } + super.appendTooltip(stack, context, tooltip, type); + } + } + ); + public static final Item TOBACCO_SEEDS = registerItem("tobacco_seeds", new AliasedBlockItem(ModBlocks.TOBACCO_CROP, new Item.Settings())); public static final Item TOBACCO = registerItem("tobacco", new Item(new Item.Settings())); diff --git a/src/main/java/com/acethewildfire/acesbs/item/custom/WildfireArmorItem.java b/src/main/java/com/acethewildfire/acesbs/item/custom/WildfireArmorItem.java new file mode 100644 index 0000000..96b0323 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/item/custom/WildfireArmorItem.java @@ -0,0 +1,96 @@ +package com.acethewildfire.acesbs.item.custom; + +import com.acethewildfire.acesbs.item.ModItems; +import com.acethewildfire.acesbs.particle.ModParticles; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ArmorMaterial; +import net.minecraft.item.ItemStack; +import net.minecraft.network.packet.s2c.play.ParticleS2CPacket; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class WildfireArmorItem extends ArmorItem { + + int tick = 0; + + public WildfireArmorItem(RegistryEntry material, Type type, Settings settings) { + super(material, type, settings); + } + + @Override + public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { + if(!world.isClient()) { + if(entity instanceof PlayerEntity player) { + ItemStack bootsStack = player.getInventory().getArmorStack(0); + if (!bootsStack.isEmpty() && bootsStack.getItem() == ModItems.WILDFIRE_BOOTS){ + double x = player.getX(); + double y = player.getY(); // feet level + double z = player.getZ(); + + ParticleS2CPacket packet; + + packet = switch (tick % 4){ + case 0 -> new ParticleS2CPacket( + ParticleTypes.FLAME, + true, + (float) x, (float) y + 0.2f, (float) z, + 0.2f, 0f, 0.2f, + 0.01f, + 2 + ); + case 1 -> new ParticleS2CPacket( + ParticleTypes.SOUL_FIRE_FLAME, + true, + (float) x, (float) y + 0.2f, (float) z, + 0.2f, 0f, 0.2f, + 0.01f, + 2 + ); + case 2 -> new ParticleS2CPacket( + ModParticles.PURPLE_FLAME, + true, + (float) x, (float) y + 0.2f, (float) z, + 0.2f, 0f, 0.2f, + 0.01f, + 2 + ); + case 3 -> new ParticleS2CPacket( + ModParticles.GREEN_FLAME, + true, + (float) x, (float) y + 0.2f, (float) z, + 0.2f, 0f, 0.2f, + 0.01f, + 2 + ); + default -> throw new IllegalStateException("Unexpected value: " + tick % 4); + }; + + tick++; + + if (tick >= 200){ + tick = 0; + } + + BlockPos pos = new BlockPos((int) x, (int) y, (int) z); + + // Send to all players in the world near that position + for (PlayerEntity player_i : world.getPlayers()) { + if (player.getBlockPos().isWithinDistance(pos, 128)) { + if (player_i instanceof ServerPlayerEntity serverPlayer) { + serverPlayer.networkHandler.sendPacket(packet); + } + } + + } + } + } + } + + super.inventoryTick(stack, world, entity, slot, selected); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/particle/GreenFlame.java b/src/main/java/com/acethewildfire/acesbs/particle/GreenFlame.java new file mode 100644 index 0000000..5cf1d6f --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/particle/GreenFlame.java @@ -0,0 +1,34 @@ +package com.acethewildfire.acesbs.particle; + +import net.minecraft.client.particle.*; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.particle.SimpleParticleType; +import org.jetbrains.annotations.Nullable; + +public class GreenFlame extends AbstractSlowingParticle { + public GreenFlame(ClientWorld clientWorld, double x, double y, double z, + SpriteProvider spriteProvider, double xSpeed, double ySpeed, double zSpeed) { + super(clientWorld, x, y, z, xSpeed, ySpeed, zSpeed); + + this.setSpriteForAge(spriteProvider); + } + + @Override + public ParticleTextureSheet getType() { + return ParticleTextureSheet.PARTICLE_SHEET_TRANSLUCENT; + } + + public static class Factory implements ParticleFactory { + private final SpriteProvider spriteProvider; + + public Factory(SpriteProvider spriteProvider) { + this.spriteProvider = spriteProvider; + } + + @Override + public @Nullable Particle createParticle(SimpleParticleType parameters, ClientWorld world, + double x, double y, double z, double velocityX, double velocityY, double velocityZ) { + return new GreenFlame(world, x, y, z, this.spriteProvider, velocityX, velocityY, velocityZ); + } + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/particle/ModParticles.java b/src/main/java/com/acethewildfire/acesbs/particle/ModParticles.java new file mode 100644 index 0000000..a8d3877 --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/particle/ModParticles.java @@ -0,0 +1,22 @@ +package com.acethewildfire.acesbs.particle; + +import com.acethewildfire.acesbs.AcesBS; +import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; +import net.minecraft.particle.SimpleParticleType; +import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.util.Identifier; + +public class ModParticles { + + public static final SimpleParticleType PURPLE_FLAME = registerParticles("purple_flame", FabricParticleTypes.simple(true)); + public static final SimpleParticleType GREEN_FLAME = registerParticles("green_flame", FabricParticleTypes.simple(true)); + + private static SimpleParticleType registerParticles(String name, SimpleParticleType particleType){ + return Registry.register(Registries.PARTICLE_TYPE, Identifier.of(AcesBS.MOD_ID, name), particleType); + } + + public static void registerModParticles() { + AcesBS.LOGGER.info("Registering Mod Particles for " + AcesBS.MOD_ID); + } +} diff --git a/src/main/java/com/acethewildfire/acesbs/particle/PurpleFlame.java b/src/main/java/com/acethewildfire/acesbs/particle/PurpleFlame.java new file mode 100644 index 0000000..8584d5e --- /dev/null +++ b/src/main/java/com/acethewildfire/acesbs/particle/PurpleFlame.java @@ -0,0 +1,34 @@ +package com.acethewildfire.acesbs.particle; + +import net.minecraft.client.particle.*; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.particle.SimpleParticleType; +import org.jetbrains.annotations.Nullable; + +public class PurpleFlame extends AbstractSlowingParticle { + public PurpleFlame(ClientWorld clientWorld, double x, double y, double z, + SpriteProvider spriteProvider, double xSpeed, double ySpeed, double zSpeed) { + super(clientWorld, x, y, z, xSpeed, ySpeed, zSpeed); + + this.setSpriteForAge(spriteProvider); + } + + @Override + public ParticleTextureSheet getType() { + return ParticleTextureSheet.PARTICLE_SHEET_TRANSLUCENT; + } + + public static class Factory implements ParticleFactory { + private final SpriteProvider spriteProvider; + + public Factory(SpriteProvider spriteProvider) { + this.spriteProvider = spriteProvider; + } + + @Override + public @Nullable Particle createParticle(SimpleParticleType parameters, ClientWorld world, + double x, double y, double z, double velocityX, double velocityY, double velocityZ) { + return new PurpleFlame(world, x, y, z, this.spriteProvider, velocityX, velocityY, velocityZ); + } + } +} diff --git a/src/main/resources/assets/acesbs/lang/en_us.json b/src/main/resources/assets/acesbs/lang/en_us.json index afcf89e..df6bf5c 100644 --- a/src/main/resources/assets/acesbs/lang/en_us.json +++ b/src/main/resources/assets/acesbs/lang/en_us.json @@ -42,6 +42,7 @@ "item.acesbs.prisma_armor_trim_smithing_template": "Prisma Smithing Template", "item.acesbs.berserkers_pauldron": "Berserker's Pauldron", + "item.acesbs.wildfire_boots": "Wildfire Boots", "item.acesbs.kaupen_bow": "Kaupen Bow", @@ -156,6 +157,10 @@ "tooltip.acesbs.berserkers_pauldron_desc": "§c§oI will not be moved.§r", "tooltip.acesbs.berserkers_pauldron_thanks": "§7§oProgrammed with <3 for Tennocraft§r", + + "tooltip.acesbs.wildfire_boots_desc": "§c§oThere are no walls.§r", + "tooltip.acesbs.wildfire_boots_thanks": "§7§oProgrammed with <3 by/for AceTheWildfire§r", + "tooltip.acesbs.thanks_sov": "§7§oTextures by Sovaeris§r", "tooltip.acesbs.combustible_lemon1": "§7§oDo you know who I am?§r", diff --git a/src/main/resources/assets/acesbs/particles/green_flame.json b/src/main/resources/assets/acesbs/particles/green_flame.json new file mode 100644 index 0000000..f0ca8f6 --- /dev/null +++ b/src/main/resources/assets/acesbs/particles/green_flame.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "acesbs:flame_green" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/particles/purple_flame.json b/src/main/resources/assets/acesbs/particles/purple_flame.json new file mode 100644 index 0000000..ac2e54c --- /dev/null +++ b/src/main/resources/assets/acesbs/particles/purple_flame.json @@ -0,0 +1,5 @@ +{ + "textures": [ + "acesbs:flame_purple" + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/acesbs/textures/item/wildfire_boots.png b/src/main/resources/assets/acesbs/textures/item/wildfire_boots.png new file mode 100644 index 0000000..ec4183e Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/item/wildfire_boots.png differ diff --git a/src/main/resources/assets/acesbs/textures/models/armor/wildfire_layer_1.png b/src/main/resources/assets/acesbs/textures/models/armor/wildfire_layer_1.png new file mode 100644 index 0000000..11c961e Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/models/armor/wildfire_layer_1.png differ diff --git a/src/main/resources/assets/acesbs/textures/particle/flame_green.png b/src/main/resources/assets/acesbs/textures/particle/flame_green.png new file mode 100644 index 0000000..0d2fe50 Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/particle/flame_green.png differ diff --git a/src/main/resources/assets/acesbs/textures/particle/flame_purple.png b/src/main/resources/assets/acesbs/textures/particle/flame_purple.png new file mode 100644 index 0000000..f667a7b Binary files /dev/null and b/src/main/resources/assets/acesbs/textures/particle/flame_purple.png differ