From b6cdaad4738d782945647411ed8a5a1df2f34bc0 Mon Sep 17 00:00:00 2001 From: doc-bok <41854155+doc-bok@users.noreply.github.com> Date: Wed, 19 Jul 2023 20:33:05 +0100 Subject: [PATCH] [FIX] Tidied up some of the butterfly net code. --- README.md | 5 +++++ build.gradle | 2 +- .../world/entity/ambient/Butterfly.java | 22 +++++++++++-------- .../world/item/ButterflyNetItem.java | 3 +-- .../butterflies/recipes/butterfly_net.json | 10 ++++----- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index ad5fbad..e6c9aa3 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,11 @@ ## Changelog +### [0.2.1] 2023-07-19 +- Fixed butterfly release code. +- Reduced butterfly speed to make them easier to catch. +- Made fishing rod recipe a bit more readable. + ### [0.1.12] 2023-07-17 - Added the butterfly net. diff --git a/build.gradle b/build.gradle index 3b93b80..1f6fb71 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { id 'net.minecraftforge.gradle' version '5.1.+' } -version = '0.1.12' +version = '0.2.1' group = 'com.bokmcdok.butterflies' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'butterflies' diff --git a/src/main/java/com/bokmcdok/butterflies/world/entity/ambient/Butterfly.java b/src/main/java/com/bokmcdok/butterflies/world/entity/ambient/Butterfly.java index dd38f4f..9889148 100644 --- a/src/main/java/com/bokmcdok/butterflies/world/entity/ambient/Butterfly.java +++ b/src/main/java/com/bokmcdok/butterflies/world/entity/ambient/Butterfly.java @@ -74,6 +74,9 @@ public enum Size { // The name of the "respawned" attribute in the save data. private static final String PLACED_BY_PLAYER = "butterflyPlacedByPlayer"; + // Helper constant to modify butterfly speed + private static final double BUTTERFLY_SPEED = 0.0325d; + // The size of the butterfly private final Size size; @@ -304,17 +307,16 @@ public static Butterfly createBuckeyeButterfly(EntityType e /** * Used to release a butterfly from an item back into the world. - * @param level The current level. * @param player The player releasing the butterfly. * @param entityId The type of butterfly to release. * @param position The current position of the player. */ - public static void release(@NotNull Level level, - @NotNull Player player, + public static void release(@NotNull Player player, String entityId, BlockPos position) { - + Level level = player.level; if (level instanceof ServerLevel) { + // Move the target position slightly in front of the player Vec3 lookAngle = player.getLookAngle(); position = position.offset((int) lookAngle.x, (int) lookAngle.y + 1, (int) lookAngle.z); @@ -322,12 +324,14 @@ public static void release(@NotNull Level level, ResourceLocation key = new ResourceLocation(entityId); EntityType entityType = ForgeRegistries.ENTITY_TYPES.getValue(key); if (entityType != null) { - Butterfly butterfly = (Butterfly) entityType.create(player.level); - if (butterfly != null) { + Entity entity = entityType.create(player.level); + if (entity instanceof Butterfly butterfly) { + butterfly.moveTo(position.getX() + 0.45D, position.getY() + 0.2D, position.getZ() + 0.5D, 0.0F, 0.0F); + butterfly.finalizeSpawn((ServerLevel) level, level.getCurrentDifficultyAt(player.getOnPos()), MobSpawnType.NATURAL, @@ -335,7 +339,7 @@ public static void release(@NotNull Level level, null); butterfly.setPlacedByPlayer(); - player.level.addFreshEntity(butterfly); + level.addFreshEntity(butterfly); } } } else { @@ -523,9 +527,9 @@ protected void customServerAiStep() { double dz = this.targetPosition.getZ() + 0.5d - this.getZ(); Vec3 deltaMovement = this.getDeltaMovement(); - Vec3 updatedDeltaMovement = deltaMovement.add((Math.signum(dx) * 0.5d - deltaMovement.x) * 0.1d, + Vec3 updatedDeltaMovement = deltaMovement.add((Math.signum(dx) * 0.5d - deltaMovement.x) * BUTTERFLY_SPEED, (Math.signum(dy) * 0.7d - deltaMovement.y) * 0.1d, - (Math.signum(dz) * 0.5d - deltaMovement.z) * 0.1d); + (Math.signum(dz) * 0.5d - deltaMovement.z) * BUTTERFLY_SPEED); this.setDeltaMovement(updatedDeltaMovement); this.zza = 0.5f; diff --git a/src/main/java/com/bokmcdok/butterflies/world/item/ButterflyNetItem.java b/src/main/java/com/bokmcdok/butterflies/world/item/ButterflyNetItem.java index f7ac7e4..f17969a 100644 --- a/src/main/java/com/bokmcdok/butterflies/world/item/ButterflyNetItem.java +++ b/src/main/java/com/bokmcdok/butterflies/world/item/ButterflyNetItem.java @@ -1,6 +1,5 @@ package com.bokmcdok.butterflies.world.item; -import com.bokmcdok.butterflies.registries.ItemRegistry; import com.bokmcdok.butterflies.world.entity.ambient.Butterfly; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; @@ -105,7 +104,7 @@ public InteractionResultHolder use(@NotNull Level level, CompoundTag tag = stack.getOrCreateTag(); if (tag.contains("EntityId")) { String entityId = tag.getString("EntityId"); - Butterfly.release(level, player, entityId, player.blockPosition()); + Butterfly.release(player, entityId, player.blockPosition()); tag.remove("CustomModelData"); tag.remove("EntityId"); diff --git a/src/main/resources/data/butterflies/recipes/butterfly_net.json b/src/main/resources/data/butterflies/recipes/butterfly_net.json index 8c29abb..c61f2ea 100644 --- a/src/main/resources/data/butterflies/recipes/butterfly_net.json +++ b/src/main/resources/data/butterflies/recipes/butterfly_net.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "pattern": [ - " #", - " #X", - "#XX" + " /", + " /s", + "/ss" ], "key": { - "#": { + "/": { "item": "minecraft:stick" }, - "X": { + "s": { "item": "minecraft:string" } },