From 33d4233866b926db96810f93b1e0d7fd53204888 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 18 Sep 2022 21:39:42 +0200 Subject: [PATCH] Added polearms --- .../unicopia/client/URenderers.java | 6 ++ .../client/render/PolearmRenderer.java | 82 ++++++++++++++++++ .../unicopia/entity/UEntityAttributes.java | 1 - .../unicopia/item/PolearmItem.java | 36 ++++++++ .../minelittlepony/unicopia/item/UItems.java | 16 ++-- .../unicopia/mixin/MixinReachDistanceFix.java | 49 +++++++++++ .../mixin/MixinServerPlayNetworkHandler.java | 3 +- .../MixinClientPlayerInteractionManager.java | 7 ++ .../mixin/client/MixinGameRenderer.java | 19 +++- .../resources/assets/unicopia/lang/en_us.json | 7 ++ .../unicopia/models/item/diamond_polearm.json | 14 +++ .../item/diamond_polearm_in_inventory.json | 6 ++ .../models/item/diamond_polearm_throwing.json | 6 ++ .../unicopia/models/item/golden_polearm.json | 14 +++ .../item/golden_polearm_in_inventory.json | 6 ++ .../models/item/golden_polearm_throwing.json | 6 ++ .../unicopia/models/item/iron_polearm.json | 14 +++ .../item/iron_polearm_in_inventory.json | 6 ++ .../models/item/iron_polearm_throwing.json | 6 ++ .../models/item/netherite_polearm.json | 14 +++ .../item/netherite_polearm_in_inventory.json | 6 ++ .../item/netherite_polearm_throwing.json | 6 ++ .../unicopia/models/item/stone_polearm.json | 14 +++ .../item/stone_polearm_in_inventory.json | 6 ++ .../models/item/stone_polearm_throwing.json | 6 ++ .../unicopia/models/item/wooden_polearm.json | 14 +++ .../item/wooden_polearm_in_inventory.json | 6 ++ .../models/item/wooden_polearm_throwing.json | 6 ++ .../entity/polearm/diamond_polearm.png | Bin 0 -> 3384 bytes .../entity/polearm/golden_polearm.png | Bin 0 -> 3119 bytes .../textures/entity/polearm/iron_polearm.png | Bin 0 -> 2788 bytes .../entity/polearm/netherite_polearm.png | Bin 0 -> 3368 bytes .../textures/entity/polearm/stone_polearm.png | Bin 0 -> 2630 bytes .../entity/polearm/wooden_polearm.png | Bin 0 -> 2639 bytes .../textures/item/diamond_polearm.png | Bin 0 -> 2313 bytes .../unicopia/textures/item/golden_polearm.png | Bin 0 -> 2257 bytes .../unicopia/textures/item/iron_polearm.png | Bin 0 -> 2192 bytes .../textures/item/netherite_polearm.png | Bin 0 -> 1934 bytes .../unicopia/textures/item/stone_polearm.png | Bin 0 -> 2177 bytes .../unicopia/textures/item/wooden_polearm.png | Bin 0 -> 2195 bytes .../recipes/tools/diamond_polearm.json | 30 +++++++ .../recipes/tools/golden_polearm.json | 30 +++++++ .../recipes/tools/iron_polearm.json | 30 +++++++ .../tools/netherite_polearm_smithing.json | 30 +++++++ .../recipes/tools/stone_polearm.json | 30 +++++++ .../recipes/tools/wooden_polearm.json | 30 +++++++ .../unicopia/recipes/diamond_polearm.json | 19 ++++ .../data/unicopia/recipes/golden_polearm.json | 19 ++++ .../data/unicopia/recipes/iron_polearm.json | 19 ++++ .../recipes/netherite_polearm_smithing.json | 12 +++ .../data/unicopia/recipes/stone_polearm.json | 19 ++++ .../data/unicopia/recipes/wooden_polearm.json | 19 ++++ src/main/resources/unicopia.mixin.json | 1 + 53 files changed, 657 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/client/render/PolearmRenderer.java create mode 100644 src/main/java/com/minelittlepony/unicopia/item/PolearmItem.java create mode 100644 src/main/java/com/minelittlepony/unicopia/mixin/MixinReachDistanceFix.java create mode 100644 src/main/resources/assets/unicopia/models/item/diamond_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/diamond_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/diamond_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/models/item/golden_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/golden_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/golden_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/models/item/iron_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/iron_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/iron_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/models/item/netherite_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/netherite_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/netherite_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/models/item/stone_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/stone_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/stone_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/models/item/wooden_polearm.json create mode 100644 src/main/resources/assets/unicopia/models/item/wooden_polearm_in_inventory.json create mode 100644 src/main/resources/assets/unicopia/models/item/wooden_polearm_throwing.json create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/diamond_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/golden_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/iron_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/netherite_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/stone_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/entity/polearm/wooden_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/diamond_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/golden_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/iron_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/netherite_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/stone_polearm.png create mode 100644 src/main/resources/assets/unicopia/textures/item/wooden_polearm.png create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/diamond_polearm.json create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/golden_polearm.json create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/iron_polearm.json create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/netherite_polearm_smithing.json create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/stone_polearm.json create mode 100644 src/main/resources/data/unicopia/advancements/recipes/tools/wooden_polearm.json create mode 100644 src/main/resources/data/unicopia/recipes/diamond_polearm.json create mode 100644 src/main/resources/data/unicopia/recipes/golden_polearm.json create mode 100644 src/main/resources/data/unicopia/recipes/iron_polearm.json create mode 100644 src/main/resources/data/unicopia/recipes/netherite_polearm_smithing.json create mode 100644 src/main/resources/data/unicopia/recipes/stone_polearm.json create mode 100644 src/main/resources/data/unicopia/recipes/wooden_polearm.json diff --git a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java index b76efaef..d4da7abe 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/URenderers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/URenderers.java @@ -105,6 +105,12 @@ public interface URenderers { matrices.push(); }); + PolearmRenderer.register(UItems.WOODEN_POLEARM); + PolearmRenderer.register(UItems.STONE_POLEARM); + PolearmRenderer.register(UItems.IRON_POLEARM); + PolearmRenderer.register(UItems.GOLDEN_POLEARM); + PolearmRenderer.register(UItems.DIAMOND_POLEARM); + PolearmRenderer.register(UItems.NETHERITE_POLEARM); ModelPredicateProviderRegistry.register(UItems.GEMSTONE, new Identifier("affinity"), (stack, world, entity, seed) -> { return GemstoneItem.isEnchanted(stack) ? 1 + GemstoneItem.getSpellKey(stack).getAffinity().ordinal() : 0; }); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/PolearmRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/PolearmRenderer.java new file mode 100644 index 00000000..04170d03 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/client/render/PolearmRenderer.java @@ -0,0 +1,82 @@ +package com.minelittlepony.unicopia.client.render; + +import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.BuiltinItemRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.BuiltinItemRendererRegistry.DynamicItemRenderer; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.item.ModelPredicateProviderRegistry; +import net.minecraft.client.item.UnclampedModelPredicateProvider; +import net.minecraft.client.model.*; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.entity.model.TridentEntityModel; +import net.minecraft.client.render.item.ItemRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.json.ModelTransformation.Mode; +import net.minecraft.client.util.ModelIdentifier; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.*; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class PolearmRenderer implements DynamicItemRenderer, UnclampedModelPredicateProvider { + + private static final PolearmRenderer INSTANCE = new PolearmRenderer(); + private static final Identifier THROWING = new Identifier("throwing"); + + private final TridentEntityModel model = new TridentEntityModel(getTexturedModelData().createModel()); + + public static void register(Item item) { + BuiltinItemRendererRegistry.INSTANCE.register(item, INSTANCE); + ModelPredicateProviderRegistry.register(item, THROWING, INSTANCE); + ModelLoadingRegistry.INSTANCE.registerModelProvider((renderer, out) -> out.accept(getModelId(item))); + } + + static ModelIdentifier getModelId(ItemConvertible item) { + Identifier id = Registry.ITEM.getId(item.asItem()); + return new ModelIdentifier(id.toString() + "_in_inventory#inventory"); + } + + public static TexturedModelData getTexturedModelData() { + ModelData data = new ModelData(); + ModelPartData root = data.getRoot(); + + int y = -9; + + ModelPartData pole = root.addChild("pole", ModelPartBuilder.create().uv(0, 6).cuboid(-0.5f, y, -0.5f, 1, 25, 1), ModelTransform.NONE); + pole.addChild("base", ModelPartBuilder.create().uv(4, 0).cuboid(-1.5f, y - 2, -0.5f, 3, 2, 1), ModelTransform.NONE); + pole.addChild("head", ModelPartBuilder.create().uv(0, 0).cuboid(-0.5f, y - 6, -0.5f, 1, 4, 1), ModelTransform.NONE); + return TexturedModelData.of(data, 32, 32); + } + + @Override + public void render(ItemStack stack, Mode mode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay) { + + if (mode == Mode.GUI || mode == Mode.GROUND || mode == Mode.FIXED) { + // render as normal sprite + ItemRenderer renderer = MinecraftClient.getInstance().getItemRenderer(); + + BakedModel model = renderer.getModels().getModelManager().getModel(getModelId(stack.getItem())); + matrices.pop(); + matrices.push(); + renderer.renderItem(stack, mode, false, matrices, vertexConsumers, light, overlay, model); + matrices.pop(); + matrices.push(); + } else { + matrices.push(); + matrices.scale(1, -1, -1); + Identifier id = Registry.ITEM.getId(stack.getItem()); + Identifier texture = new Identifier(id.getNamespace(), "textures/entity/polearm/" + id.getPath() + ".png"); + VertexConsumer vertexConsumer2 = ItemRenderer.getDirectItemGlintConsumer(vertexConsumers, model.getLayer(texture), false, stack.hasGlint()); + model.render(matrices, vertexConsumer2, light, overlay, 1, 1, 1, 1); + matrices.pop(); + } + } + + @Override + public float unclampedCall(ItemStack stack, ClientWorld world, LivingEntity entity, int seed) { + return entity != null && entity.isUsingItem() && entity.getActiveItem() == stack ? 1 : 0; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/UEntityAttributes.java b/src/main/java/com/minelittlepony/unicopia/entity/UEntityAttributes.java index 0378b4f2..6fb66d94 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/UEntityAttributes.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/UEntityAttributes.java @@ -16,7 +16,6 @@ public interface UEntityAttributes { EntityAttribute EXTRA_MINING_SPEED = register("earth.mining_speed", new ClampedEntityAttribute("player.miningSpeed", 1, 0, 5).setTracked(true)); EntityAttribute ENTITY_GRAVTY_MODIFIER = register("player.gravity", (new EntityAttribute("player.gravityModifier", 1) {}).setTracked(true)); - private static EntityAttribute register(String name, EntityAttribute attribute) { REGISTRY.add(attribute); return Registry.register(Registry.ATTRIBUTE, Unicopia.id(name), attribute); diff --git a/src/main/java/com/minelittlepony/unicopia/item/PolearmItem.java b/src/main/java/com/minelittlepony/unicopia/item/PolearmItem.java new file mode 100644 index 00000000..bfd9c334 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/item/PolearmItem.java @@ -0,0 +1,36 @@ +package com.minelittlepony.unicopia.item; + +import java.util.UUID; + +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; +import com.minelittlepony.unicopia.entity.UEntityAttributes; + +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.attribute.*; +import net.minecraft.item.*; + +public class PolearmItem extends SwordItem { + protected static final UUID ATTACK_RANGE_MODIFIER_ID = UUID.fromString("A7B3659C-AA74-469C-963A-09A391DCAA0F"); + + private final Multimap attributeModifiers; + + private final int attackRange; + + public PolearmItem(ToolMaterial material, int damage, float speed, int range, Settings settings) { + super(material, damage, speed, settings); + this.attackRange = range; + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.putAll(super.getAttributeModifiers(EquipmentSlot.MAINHAND)); + builder.put(UEntityAttributes.EXTENDED_REACH_DISTANCE, new EntityAttributeModifier(ATTACK_RANGE_MODIFIER_ID, "Weapon modifier", attackRange, EntityAttributeModifier.Operation.ADDITION)); + attributeModifiers = builder.build(); + } + + @Override + public Multimap getAttributeModifiers(EquipmentSlot slot) { + if (slot == EquipmentSlot.MAINHAND) { + return attributeModifiers; + } + return super.getAttributeModifiers(slot); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/item/UItems.java b/src/main/java/com/minelittlepony/unicopia/item/UItems.java index 32437ec4..a7486180 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/item/UItems.java @@ -9,15 +9,10 @@ import com.minelittlepony.unicopia.entity.UEntities; import com.minelittlepony.unicopia.item.enchantment.UEnchantments; import com.minelittlepony.unicopia.item.toxin.UFoodComponents; -import net.minecraft.item.Item; +import net.minecraft.item.*; import net.minecraft.item.Item.Settings; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.Items; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; -import net.minecraft.item.BlockItem; -import net.minecraft.item.FoodComponents; -import net.minecraft.item.MusicDiscItem; -import net.minecraft.item.SpawnEggItem; +import net.fabricmc.fabric.api.registry.FuelRegistry; import net.minecraft.sound.SoundEvent; import net.minecraft.util.Rarity; import net.minecraft.util.registry.Registry; @@ -83,6 +78,13 @@ public interface UItems { Item DRAGON_BREATH_SCROLL = register("dragon_breath_scroll", new DragonBreathScrollItem(new Item.Settings().rarity(Rarity.UNCOMMON).group(ItemGroup.TOOLS))); + Item WOODEN_POLEARM = register("wooden_polearm", new PolearmItem(ToolMaterials.WOOD, 3, -2.4F, 2, new Item.Settings().group(ItemGroup.COMBAT))); + Item STONE_POLEARM = register("stone_polearm", new PolearmItem(ToolMaterials.STONE, 3, -2.4F, 2, new Item.Settings().group(ItemGroup.COMBAT))); + Item IRON_POLEARM = register("iron_polearm", new PolearmItem(ToolMaterials.IRON, 3, -2.4F, 3, new Item.Settings().group(ItemGroup.COMBAT))); + Item GOLDEN_POLEARM = register("golden_polearm", new PolearmItem(ToolMaterials.GOLD, 3, -2.4F, 4, new Item.Settings().group(ItemGroup.COMBAT))); + Item DIAMOND_POLEARM = register("diamond_polearm", new PolearmItem(ToolMaterials.DIAMOND, 3, -2.4F, 5, new Item.Settings().group(ItemGroup.COMBAT))); + Item NETHERITE_POLEARM = register("netherite_polearm", new PolearmItem(ToolMaterials.NETHERITE, 3, -2.4F, 5, new Item.Settings().group(ItemGroup.COMBAT).fireproof())); + Item BUTTERFLY_SPAWN_EGG = register("butterfly_spawn_egg", new SpawnEggItem(UEntities.BUTTERFLY, 0x222200, 0xaaeeff, new Item.Settings().group(ItemGroup.MISC))); Item BUTTERFLY = register("butterfly", new Item(new Item.Settings().group(ItemGroup.FOOD).food(UFoodComponents.INSECTS))); diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinReachDistanceFix.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinReachDistanceFix.java new file mode 100644 index 00000000..a66b8035 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinReachDistanceFix.java @@ -0,0 +1,49 @@ +package com.minelittlepony.unicopia.mixin; + +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.injection.*; +import com.minelittlepony.unicopia.entity.player.Pony; + +import net.minecraft.server.network.*; + +@Mixin(value = { + ServerPlayerInteractionManager.class, + ServerPlayNetworkHandler.class +}) +abstract class MixinReachDistanceFix { + + @Accessor + public abstract ServerPlayerEntity getPlayer(); + + @Redirect( + method = { + "processBlockBreakingAction", + "onPlayerInteractBlock", + "onPlayerInteractEntity" + }, + at = @At( + value = "FIELD", + target = "net/minecraft/server/network/ServerPlayNetworkHandler.MAX_BREAK_SQUARED_DISTANCE:D", + opcode = Opcodes.GETSTATIC + ) + ) + private double getMaxBreakSquaredDistance() { + double reach = 6 + Pony.of(getPlayer()).getExtendedReach(); + return reach * reach; + } +/* + @ModifyConstant( + method = { + "processBlockBreakingAction", + "onPlayerInteractBlock", + "onPlayerInteractEntity" + }, + constant = @Constant(doubleValue = 36D) + ) + private double modifyMaxBreakSquaredDistance(double initial) { + double reach = 6 + Pony.of(getPlayer()).getExtendedReach(); + return reach * reach; + }*/ +} diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinServerPlayNetworkHandler.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinServerPlayNetworkHandler.java index a07cb481..2c567e7f 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinServerPlayNetworkHandler.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinServerPlayNetworkHandler.java @@ -2,8 +2,7 @@ package com.minelittlepony.unicopia.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import com.minelittlepony.unicopia.entity.duck.ServerPlayerEntityDuck; diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinClientPlayerInteractionManager.java b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinClientPlayerInteractionManager.java index 429bfce2..3ab60ef1 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinClientPlayerInteractionManager.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinClientPlayerInteractionManager.java @@ -20,4 +20,11 @@ abstract class MixinClientPlayerInteractionManager { info.setReturnValue(player.getExtendedReach() + info.getReturnValueF()); } } + + @Inject(method = "hasExtendedReach", at = @At("HEAD"), cancellable = true) + private void onHasExtendedReach(CallbackInfoReturnable info) { + if (!info.getReturnValueZ() && Pony.of(MinecraftClient.getInstance().player).getExtendedReach() > 0) { + info.setReturnValue(true); + } + } } diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinGameRenderer.java b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinGameRenderer.java index 702d9204..250c2387 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinGameRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/client/MixinGameRenderer.java @@ -1,14 +1,15 @@ package com.minelittlepony.unicopia.mixin.client; -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.*; +import org.spongepowered.asm.mixin.injection.*; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.minelittlepony.unicopia.EquinePredicates; import com.minelittlepony.unicopia.client.BatEyesApplicator; import com.minelittlepony.unicopia.client.UnicopiaClient; + +import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.Camera; import net.minecraft.client.render.GameRenderer; import net.minecraft.client.util.math.MatrixStack; @@ -19,6 +20,18 @@ import net.minecraft.resource.SynchronousResourceReloader; @Mixin(GameRenderer.class) abstract class MixinGameRenderer implements AutoCloseable, SynchronousResourceReloader { + + @Shadow + private @Final MinecraftClient client; + + @ModifyConstant( + method = "updateTargetedEntity", + constant = @Constant(doubleValue = 6) + ) + private double onUpdateTargetedEntity(double initial) { + return Math.max(initial, client.interactionManager.getReachDistance()); + } + @Inject(method = "getFov(Lnet/minecraft/client/render/Camera;FZ)D", at = @At("RETURN"), cancellable = true) diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json index 7dc6bc87..c25c3c78 100644 --- a/src/main/resources/assets/unicopia/lang/en_us.json +++ b/src/main/resources/assets/unicopia/lang/en_us.json @@ -69,6 +69,13 @@ "item.unicopia.alicorn_amulet": "Alicorn Amulet", "item.unicopia.alicorn_amulet.lore": "Time worn: %d", + + "item.unicopia.wooden_polearm": "Wooden Polearm", + "item.unicopia.stone_polearm": "Stone Polearm", + "item.unicopia.iron_polearm": "Iron Polearm", + "item.unicopia.golden_polearm": "Golden Polearm", + "item.unicopia.diamond_polearm": "Diamond Polearm", + "item.unicopia.netherite_polearm": "Netherite Polearm", "item.unicopia.music_disc_pet": "Music Disc", "item.unicopia.music_disc_pet.desc": "Danial Ingram - pet", diff --git a/src/main/resources/assets/unicopia/models/item/diamond_polearm.json b/src/main/resources/assets/unicopia/models/item/diamond_polearm.json new file mode 100644 index 00000000..d4fa68f0 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/diamond_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/diamond_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/diamond_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/diamond_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/diamond_polearm_in_inventory.json new file mode 100644 index 00000000..d2bb0d76 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/diamond_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/diamond_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/diamond_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/diamond_polearm_throwing.json new file mode 100644 index 00000000..c23fa56c --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/diamond_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/diamond_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/golden_polearm.json b/src/main/resources/assets/unicopia/models/item/golden_polearm.json new file mode 100644 index 00000000..d5876f57 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/golden_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/golden_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/golden_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/golden_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/golden_polearm_in_inventory.json new file mode 100644 index 00000000..a368786e --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/golden_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/golden_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/golden_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/golden_polearm_throwing.json new file mode 100644 index 00000000..d36f86fe --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/golden_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/golden_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/iron_polearm.json b/src/main/resources/assets/unicopia/models/item/iron_polearm.json new file mode 100644 index 00000000..50ff1f53 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/iron_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/iron_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/iron_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/iron_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/iron_polearm_in_inventory.json new file mode 100644 index 00000000..e1619d5e --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/iron_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/iron_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/iron_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/iron_polearm_throwing.json new file mode 100644 index 00000000..50d9c2e1 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/iron_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/iron_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/netherite_polearm.json b/src/main/resources/assets/unicopia/models/item/netherite_polearm.json new file mode 100644 index 00000000..e9021ea1 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/netherite_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/netherite_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/netherite_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/netherite_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/netherite_polearm_in_inventory.json new file mode 100644 index 00000000..1abde3fe --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/netherite_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/netherite_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/netherite_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/netherite_polearm_throwing.json new file mode 100644 index 00000000..39c652a5 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/netherite_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/netherite_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/stone_polearm.json b/src/main/resources/assets/unicopia/models/item/stone_polearm.json new file mode 100644 index 00000000..fc92f268 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/stone_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/stone_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/stone_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/stone_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/stone_polearm_in_inventory.json new file mode 100644 index 00000000..2e9256ee --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/stone_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/stone_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/stone_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/stone_polearm_throwing.json new file mode 100644 index 00000000..3e82373a --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/stone_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/stone_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/wooden_polearm.json b/src/main/resources/assets/unicopia/models/item/wooden_polearm.json new file mode 100644 index 00000000..fa5b2759 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/wooden_polearm.json @@ -0,0 +1,14 @@ +{ + "parent": "item/trident_in_hand", + "textures": { + "particle": "unicopia:item/wooden_polearm" + }, + "overrides": [ + { + "predicate": { + "throwing": 1 + }, + "model": "unicopia:item/wooden_polearm_throwing" + } + ] +} diff --git a/src/main/resources/assets/unicopia/models/item/wooden_polearm_in_inventory.json b/src/main/resources/assets/unicopia/models/item/wooden_polearm_in_inventory.json new file mode 100644 index 00000000..6dd937b6 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/wooden_polearm_in_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/wooden_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/wooden_polearm_throwing.json b/src/main/resources/assets/unicopia/models/item/wooden_polearm_throwing.json new file mode 100644 index 00000000..8f087c5d --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/wooden_polearm_throwing.json @@ -0,0 +1,6 @@ +{ + "parent": "item/trident_throwing", + "textures": { + "particle": "unicopia:item/wooden_polearm" + } +} diff --git a/src/main/resources/assets/unicopia/textures/entity/polearm/diamond_polearm.png b/src/main/resources/assets/unicopia/textures/entity/polearm/diamond_polearm.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7b846e25e6e967938a4c0ae8baa00a8a350701 GIT binary patch literal 3384 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 O0000;g literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/entity/polearm/golden_polearm.png b/src/main/resources/assets/unicopia/textures/entity/polearm/golden_polearm.png new file mode 100644 index 0000000000000000000000000000000000000000..056e380b16973c007fd057cc9594f3961b482bc4 GIT binary patch literal 3119 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 xk5V_l@=?nCE}-E0?YndX)*n!}>Vc&Z{Rfu9F zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bvmLw+({O1%t0zv}BaaiB;4SakD31lr@-5!r! z+0`rwS|TJtnf}+G!~B7db1FuB)R023_(+oEGCFD>pT651qe1UWoU^M1TIyG+^NF`5qeZ02go5`a(G zP90aS9u^h=!`HTeC*teTkJpp%sLi$-65DLG1y7|!j@S+oYLsbEzuHO_CW`AWqIIr1 zzUGvpORlnIVlgZ%G+gAwjg=i&*O@WvZd>Tmn=W;g6p9;Rr6UL*4vn@+R@$`r-HW$&1g&wV} z&9Q9(fC#!hj3EXCHV}IXWTSJD2skSE$*|n95m!I~dG8vmbiy1!j=HHEdm>$Hop);* zDFh-s2acd7aRyf+UV@P*iWthCy?F0~k6wN9IdG8RLkKaX1zv1mypSAT9U6YE3np<{CF? zzJ(T>w$yT`j!^2-eGff$?WyO1P#ZjC_z^}NI?~8DYZt5Lg|n~B{mdF|)(FiMYv}nVi|=kQLs+Ni!Sr%%tuEb6lVsD86wdaNT?dks(^@7BCe{BHXuha;!n&_K3t`b|IFV;RAn+6VvwHZTq+YZXFS!-erQTM2Juuo%_rdzoyXHPHuOleGg zE$evIl6lpHaJ&{f&UM(Za8ELdvR$|*F4ipu?zWe%W_A%KP6xQTUi8GBq^`J0)Pi4} zX6ed#hgKap|59GUyYMimt-bSE3C>ARD98$h4)bi@Zowg+`q(3nYScrUF5#rD5ZFW6 zZrFi?w>~7_5theVAzU+er8UYj)HAu|8j?DR+Yrpcb?Ng|x3-VUM%WOxfwZg!r}a)E z5xlphT~dPh)My1j&B$-Ny(u-SoZ#Z6y(2zxKcWRitF;~)M&6Sn>d?luE*_Bf+))Fh z-+44x-GJGMY%jP$>`Y=#uVhRv(zdxNcdi3fW=Tzo_u|H7xABQk0{yZ(^(d)_w7t0Q zKP$?DoM1lLMY=)gsG&_w*_$LLqZ^ye?sp%E4Az|4&1O@Gd@`4U!#L$=D9dglCtdC@4(b?pIY& z@cCQZ%)AHg@Pe2vAD7Yk=F#wN4GZ*iE-w{D*CUKL!RfI4n=Xc4K43g zZMVig<(J#}RfqO@Vz1M&YIi%;YSq!eCxv^Zm3H;bRE&r^YEd~JXB;j8*DP4();AbH z+d{w&Mzs$QT! zVSe7u>WtJpM-Koicd>qNV>Fwol;_RyTqwRTX!p*>Tfw~4L8nQ_3vswFrgZWo;Md{< zsS_B8d|WgK`z;%l1Xoe~65Mh0@4R?&;!#!157y^&A`+g^?f7dr9E8n*IJO(&I#V~C zJ4=G`4`ginh6(e76Zd6pwEM(;e<%A)3J~=0zVNxE1(0E*9wMAZRB$ZaW3RFDYxbEL ze_U@rdb9tKo!_*^{^rJC7lfbVE#cbxHweX4T&F;}FaQ7oS4l)cR5;76lU+!YVHk$5 zZ)`QUw%P|9gTf8*FMo=m4H~g6g1~Y|We0^37H3 z;C8iz<^?+d>x)s2*m9Yko@QxjNdb%=r&wQ%0+4t&Cvo@dssbB5PRe3ql*Ps<=xjxs zXD1vEW3^hzZ|cJ6af-6om?$0&3T>WU0I09(cLUJ8U?(rwLSlBFRBVM^haCX8-EII( z{X@JSxorDuAMzW-KR9 zD6lry#*C|q$``{J@A!}n8sT-wgodJ6<59^Pk4k9))syigrU$3+I%K3P^$P5I+D~dz zAR9CyXRi)_cLblyB3<(B1HgRa`OgOD%6H;*$oRV>9C-GI8CMlG1LGKVYLXWY3a>+^ zcVZbpG8r_qh9ZP|Mp#X3Wd7&T;498d%(Fi*K&Vzvh0`n=YYRkSwq6uw>sjqFW4G!! zEoU(`HI+F;fN$|6sT4H!`*=916EMtXnTLqN@NZoMw?$?tA@7fy3=7 zZeCv_(2-yzFhpr->7TohK5Vt!bbJTl_LQPp_kM%EO2=Q9Ntr=mwqB&~O1^vtAllN4 j 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/iron_polearm.png b/src/main/resources/assets/unicopia/textures/item/iron_polearm.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe4ebc6f0b947ed62c09e295204ae50fdc04f4e GIT binary patch literal 2192 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 Ux!q&EoB#j-07*qoM6N<$g1r`^WdHyG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/stone_polearm.png b/src/main/resources/assets/unicopia/textures/item/stone_polearm.png new file mode 100644 index 0000000000000000000000000000000000000000..ab10ec6628d2dfc6550bfc84d96a07738977242f GIT binary patch literal 2177 zcmV-{2!8j8P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bxwj3u6{AU$e0zy2O0|L&;4!rynjp%vYNql2_ z+GA*%mP#tAhHJ);zo+>NALl3wvW%yu~<9T+~Z5SM)xi8!%7TRd8intr+sQTd@t7P$5TbCwb~rY0|hxApu11hD#Wo z6UWzD=H!YKwoL2|d-gP4;=-LXI~F&XvFdItbonipJE086ov_mpj1k_rE^{Wodwn!C zr>qnaqCdF;F6R~vw6e(Sf9wJwG*2CcE5YY_|A1H+@z}M}oDpEPZJTI;9<{~hBAT%= zVD$Ut)YSk|1m6K*h{1r3#DOB&`9y9o!5*B8h(TkM;dvQQ71}m^7J#zIMd9t%zCqSv1(p8`^wyZvqs7q z2s0OF9-9tpSWfAfpd}|^aR$bmCorBC11M;>IJ23&cZ)f*IJ3o}D}n>cu*m7O7z2ZT zkPDM;?jFp2;mx4$f0Z})%$!-&{R!sGqV5B8UwQk$T3`Aus}C)NZMES_s%5laB_HrF zbt+J!0Av~9ARH6wx8`jmnN{p{1A)9p^S$Vx&H4VKcDM;S6gM#?f z<1uEIwKo$Fqab>}GnTn~!}}O9E<|BgqD85w=gApmK%*WP(LG}Pf_P&x&ymie9mbI2uV>tnbHLX&4x1wH*EsT zMa<~CDF%cr?`d^@7G0ht1G0aH92IgI$(Iq8Y16K=$p#z!m*Rh5M~meXD42{;uKiXk z$Z|Jn-xUa&!bT4B+@KS%dD`=waTM9pnsG2mN?S~Macow7;0GA$6}#5dfOeAhdbNqE z>l4J$V;I{S&PkK4W~s8lUDw=9$ns$M7Y*aymFh}s+i3e%M0}~)ta-tascOJBzXT&1 z3}(|Nb>RK%Btz6cj6z1F@64dN2R*#IU5eA$0q=75fODW!_3HpLsc-9MWSQ$RAG)E8 zVx3m>8E0jUE7_Slr|rjsOSh>s5fOTI2&_2l0-4^|b)w|vwohcU`pKHWzJAmmeo)zJ zqsvT?q^veNI4RSOpxrQVdJ4N$LzgAQ63Vl_nGb@8X3=t8#6d5&tl=Et6RE-s%)wi- zr$)_y^(f(PLpg4tN>3sps+|RO4AFL)?F`Y|9cS8@9=BD?tYwtZboqz|QVZ7X5eulL z_;)6*(L7U=G_7OxNZ}kbuOO9vmUE*?f62K-g@?b^yp~1q9j_lxS%$xhZk;(+W$$o4 z;{7(DF{+M+=#A}|CmqMH!uqAsHFIw7K> zBNmIHC<^g-Tr!lvhx$VJwtNOamStKLg_nJI0BDccu=(3j6DDL?#^G?R zod9qoFix$rj>PLJlF6ht(6LejfX(m4ZZ(RgMl*_{0AS*mq!9q*vIQdNI@xIv+zmx& zc{fcuFZg<<9=p{jnq7AMLs3i!sraPbwVwGzmV7~Aw;DyA z!-9V(iuY)>blJNbfT|nMiv$2K(bkl^arB^M<2tL_UtAYJPQ2=S;v4#F%6nC~bG<*FNIuDX78S;6!J?`bvj78M$ zGV8#LKLzfrpeH;@$J=k(raD7jT(Z$OW7wd)@TI`)2SH#k4ZyRd)S8Lw!RwXF!9C$g z%(sSh53B;fBUg!%^4Rnb4ICcGbMsn?z+jrCzsT8GJ!|zo9zCRqL`pOC2+E1=F@n7RFsOIq07CM@*00000NkvXXu0mjf D0l_8Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/item/wooden_polearm.png b/src/main/resources/assets/unicopia/textures/item/wooden_polearm.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0c808d5589203e1869da0acca30efa445c1947 GIT binary patch literal 2195 zcmV;E2yFL>P) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1bnmK-Mx{O1%o0z!b`I3VD?+#ttK(Lm4a%&Z;T zna-Mq7D7^$Bx3qMe-HB)e$KgMe2^4#j21tieRc&e$v%F4kJ;KW-#z|luhA_<=F5lk zMtDB0JB*Bx*W!I1PeuH+A>Jc>TBq=`&i66yi$&=ua(JHBoqTb2nX>=JXlcM_Go^j; z5%G!JspHD^2EmHJ@U<=C5&Q+b%k^YD$rh`Iylqx(#iNwT5!*qY8WkGUuTe>1qIca1 zM(5P=wU$_1cFLBCy9^L3n3!oiIo=?KaQJFdr^mp^?z zDjGv)hzQ=FSivsmX548;k>|gV0w6RFkHQt;^Su55ER=Xi%`hi8SZrM?YM=+V*jzv} z1OrCDHcQ(I5F(r%U<@%3u#q@WBrDDd5#pGDPl4r*jdv9gPzbKUO6Qp)z)5bNjXgq_ ztP5@}BZUA&;K%}KG8bUweeltE@d+F%frAer#2_Js97^QqV~8PVB1y88 z#L1_SVv>|nPQ_%G8MzvA%#u^ixfC2)pt)doNd*hlRj$5<8mrV)b1e$`sMnxTMU!SN zrn$z=x6opfmRfG5QwNp0@1e&oJ@wqn0M!N$Kf;JZMjCmP8?_5n^98eab|NWVfp;6G`U zQH=sDOE3*S`~olpIm+9+CO8JnWClEP)W zwfAVgE>PF)TyoOnv5fd!%XJ3!RSmVU6a@tZD7Q;CYK%)6+7Mr&p#sSfYr7_`h+?{A zuDvbZ7EvF0hZ)&JdNiFe=ngg7N=x1?hwam7t{2^b8QwASleI4q;LN?-K33$0)2{5+ zq^YJ(aeeS=x@Wq-=<88Kjw#8G)VcOG&CqgWdYIZwDm^37_EzvY4IlSrucNjbQ0@Ep z0zfTn-EMS-STe4xn4#6S{n{lr7t0E5qLTZLzEm%mJP82GO!8QrfpM-gdaM!;PBa-0~o0?s8CwU=!K88SF!D**wKp z@`?7mYaE*&CV%F;TcDWUP%b7EOM9P58OF9cx=rax7w(&GxVP99^FBMndNsX(Lv3kw z&}esdYC`Sed~%*M?nz;Z^+c*Dxa&&>)+oGYVVo)-T8{{>DNNq+$T|~6X@AW~n)<|i z*beUH2$)&hMaUUn+v#yo-YyLE(gxJy(djElsdbe=+y#)s=wS;yBh)SGW_+vW zFJ&1u?<5PvRs2$i3Qg+a2bdiOavl9H>n15gp}f*Q7#*4Rv4Vnj_$`eWiDh=tYV-sH zmvJcAVAh6NsVfj2fhS%RpGd%aMxgl7F)LZ~lg`KOgcXIh7k^i2Y`6X?=4J=|=P}=v zy`$IXO}d5)3^L;SU@p?+oAW(BxnqC9T=Q;k+eO{t9-KBMs~!@3XRG<%*lp`;%+E(j zXtsc7+kiVH()~l{T#lYbiA!L;E&7<3<|Q#p+$U($c_`&-Kx-MFFrb9K6>$=s!HHTD=4_I-%ag@As!FoP)&Pm`yiUOyM>zlMJHaz zHdd!aRcLR*x$J%ow%@+Q)7FX(Rs28n0V1HynOWy)FH~Gz9|zWr$BJC>V2zt8@m zA|AM~XTbh1T0>{UHZ!<_0006eNkl!qokEl zQc|Q9jlh?{2zrQKVn`455QUGC&_h89LJZa)7{s7PiKyTt6s4d9dvF*drcPVVvAO;B z+ve?I{C;lgQ*@p#=bq2`o^$Ux9PIwYv1bGPtLYtQ8Yt#-n_l|c>;PQt4{N@r`ki7S zp#TtxWhCk8N|Mg%9RM8Z8Poz_|9Dc7tbLycv$sQBX|829p5x=#Zz8dbq%VhE=bZq2 zpNi3*^6=K40H7mm#_a7Nxsqo#o}+H}RxPmvaKbl&)oH_IG7$b5XE~{$WYb#E_D60k zCWCO;wh6Uvh05$jDml9lat@WcQ`L(i*dU7`o zi14*3f_xSPcnkXiDL;&eJU z?t*$KFT1;S3n70&Q}xW`8NS@O>Aq-haA<$EP<@W{DgcYmhp4@MuA=N$cTV$P?JsUn V_iLSe5fcCa002ovPDHLkV1npxFU|k} literal 0 HcmV?d00001 diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/diamond_polearm.json b/src/main/resources/data/unicopia/advancements/recipes/tools/diamond_polearm.json new file mode 100644 index 00000000..52794d3d --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/diamond_polearm.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:diamond_polearm" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "items": [ "minecraft:diamond" ] } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:diamond_polearm" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/golden_polearm.json b/src/main/resources/data/unicopia/advancements/recipes/tools/golden_polearm.json new file mode 100644 index 00000000..ab03c0bd --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/golden_polearm.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:golden_polearm" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "items": [ "minecraft:gold_ingot" ] } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:golden_polearm" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/iron_polearm.json b/src/main/resources/data/unicopia/advancements/recipes/tools/iron_polearm.json new file mode 100644 index 00000000..4db161bd --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/iron_polearm.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:iron_polearm" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "items": [ "minecraft:iron_ingot" ] } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:iron_polearm" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/netherite_polearm_smithing.json b/src/main/resources/data/unicopia/advancements/recipes/tools/netherite_polearm_smithing.json new file mode 100644 index 00000000..07d09b50 --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/netherite_polearm_smithing.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:netherite_polearm_smithing" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "items": [ "minecraft:netherite_ingot" ] } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:netherite_polearm_smithing" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/stone_polearm.json b/src/main/resources/data/unicopia/advancements/recipes/tools/stone_polearm.json new file mode 100644 index 00000000..bd846770 --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/stone_polearm.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:stone_polearm" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "tag": "minecraft:stone_tool_materials" } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:stone_polearm" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/advancements/recipes/tools/wooden_polearm.json b/src/main/resources/data/unicopia/advancements/recipes/tools/wooden_polearm.json new file mode 100644 index 00000000..fd9a8fd9 --- /dev/null +++ b/src/main/resources/data/unicopia/advancements/recipes/tools/wooden_polearm.json @@ -0,0 +1,30 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "unicopia:wooden_polearm" + ] + }, + "criteria": { + "has_ingredients": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { "items": [ "minecraft:stick" ] } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "unicopia:wooden_polearm" + } + } + }, + "requirements": [ + [ + "has_ingredients", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/diamond_polearm.json b/src/main/resources/data/unicopia/recipes/diamond_polearm.json new file mode 100644 index 00000000..5818e4cb --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/diamond_polearm.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X", + " # ", + "# " + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "item": "minecraft:diamond" + } + }, + "result": { + "item": "unicopia:diamond_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/golden_polearm.json b/src/main/resources/data/unicopia/recipes/golden_polearm.json new file mode 100644 index 00000000..6c5297a3 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/golden_polearm.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X", + " # ", + "# " + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "item": "minecraft:gold_ingot" + } + }, + "result": { + "item": "unicopia:golden_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/iron_polearm.json b/src/main/resources/data/unicopia/recipes/iron_polearm.json new file mode 100644 index 00000000..ceceac21 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/iron_polearm.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X", + " # ", + "# " + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "unicopia:iron_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/netherite_polearm_smithing.json b/src/main/resources/data/unicopia/recipes/netherite_polearm_smithing.json new file mode 100644 index 00000000..37635070 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/netherite_polearm_smithing.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:smithing", + "addition": { + "item": "minecraft:netherite_ingot" + }, + "base": { + "item": "unicopia:diamond_polearm" + }, + "result": { + "item": "unicopia:netherite_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/stone_polearm.json b/src/main/resources/data/unicopia/recipes/stone_polearm.json new file mode 100644 index 00000000..49dcd70a --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/stone_polearm.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X", + " # ", + "# " + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "tag": "minecraft:stone_tool_materials" + } + }, + "result": { + "item": "unicopia:stone_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/recipes/wooden_polearm.json b/src/main/resources/data/unicopia/recipes/wooden_polearm.json new file mode 100644 index 00000000..3b659c76 --- /dev/null +++ b/src/main/resources/data/unicopia/recipes/wooden_polearm.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " X", + " # ", + "# " + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "X": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "unicopia:wooden_polearm" + } +} \ No newline at end of file diff --git a/src/main/resources/unicopia.mixin.json b/src/main/resources/unicopia.mixin.json index 1cbce8ea..b4f2d9a8 100644 --- a/src/main/resources/unicopia.mixin.json +++ b/src/main/resources/unicopia.mixin.json @@ -23,6 +23,7 @@ "MixinPersistentProjectileEntity", "MixinPlayerEntity", "MixinProjectileEntity", + "MixinReachDistanceFix", "MixinServerPlayerEntity", "MixinServerPlayNetworkHandler", "MixinServerWorld",