From 15c8e25301bac93ae273d0edd27dfd53b147e238 Mon Sep 17 00:00:00 2001 From: 17146 <1714673995@qq.com> Date: Wed, 24 Jul 2024 03:51:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=81=A5=E6=8E=A7=E5=99=A8?= =?UTF-8?q?=E7=9A=84=E6=8F=8F=E8=BF=B0=E5=AE=9E=E7=8E=B0=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcreator/target/entity/DroneEntity.java | 18 +++++++++++++----- .../java/net/mcreator/target/item/Monitor.java | 8 ++++---- .../net/mcreator/target/tools/TooltipTool.java | 12 ++++++------ 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/mcreator/target/entity/DroneEntity.java b/src/main/java/net/mcreator/target/entity/DroneEntity.java index bec0c13f3..57e691d18 100644 --- a/src/main/java/net/mcreator/target/entity/DroneEntity.java +++ b/src/main/java/net/mcreator/target/entity/DroneEntity.java @@ -54,6 +54,8 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { private boolean swinging; private boolean lastloop; private boolean linked = false; + private String controller; + private long lastSwing; public String animationprocedure = "empty"; @@ -110,11 +112,17 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { @Override public void addAdditionalSaveData(CompoundTag compound) { super.addAdditionalSaveData(compound); + + compound.putBoolean("Linked", this.linked); + compound.putString("Controller", this.controller); } @Override public void readAdditionalSaveData(CompoundTag compound) { super.readAdditionalSaveData(compound); + + this.linked = compound.getBoolean("Linked"); + this.controller = compound.getString("Controller"); } @Override @@ -136,10 +144,10 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { return InteractionResult.sidedSuccess(this.level().isClientSide()); } - this.getPersistentData().putString("controller", player.getStringUUID()); this.linked = true; + this.controller = player.getStringUUID(); - Monitor.link(stack, this.getId()); + Monitor.link(stack, this.getStringUUID()); player.displayClientMessage(Component.translatable("des.target.monitor.linked").withStyle(ChatFormatting.GREEN), true); if (player instanceof ServerPlayer serverPlayer) { @@ -155,12 +163,12 @@ public class DroneEntity extends PathfinderMob implements GeoEntity { return InteractionResult.sidedSuccess(this.level().isClientSide()); } - this.getPersistentData().putString("controller", "none"); - + this.controller = "none"; this.linked = false; - Monitor.disLink(stack); + Monitor.disLink(stack); player.displayClientMessage(Component.translatable("des.target.monitor.unlinked").withStyle(ChatFormatting.RED), true); + if (player instanceof ServerPlayer serverPlayer) { serverPlayer.level().playSound(null, serverPlayer.getOnPos(), Objects.requireNonNull(ForgeRegistries.SOUND_EVENTS.getValue(new ResourceLocation("entity.arrow.hit_player"))), SoundSource.PLAYERS, 0.5F, 1); } diff --git a/src/main/java/net/mcreator/target/item/Monitor.java b/src/main/java/net/mcreator/target/item/Monitor.java index f8324f6d8..977e95bb9 100644 --- a/src/main/java/net/mcreator/target/item/Monitor.java +++ b/src/main/java/net/mcreator/target/item/Monitor.java @@ -18,18 +18,18 @@ public class Monitor extends Item { super(new Properties().stacksTo(1)); } - public static void link(ItemStack itemstack, int id) { + public static void link(ItemStack itemstack, String id) { ItemNBTTool.setBoolean(itemstack, LINKED, true); - ItemNBTTool.setInt(itemstack, LINKED_DRONE, id); + itemstack.getOrCreateTag().putString(LINKED_DRONE, id); } public static void disLink(ItemStack itemstack) { ItemNBTTool.setBoolean(itemstack, LINKED, false); - ItemNBTTool.setInt(itemstack, LINKED_DRONE, -1); + itemstack.getOrCreateTag().putString(LINKED_DRONE, "none"); } @Override public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { - TooltipTool.addMonitorTips(list, ItemNBTTool.getInt(stack, LINKED_DRONE, -1)); + TooltipTool.addMonitorTips(list, stack.getOrCreateTag().getString(LINKED_DRONE)); } } diff --git a/src/main/java/net/mcreator/target/tools/TooltipTool.java b/src/main/java/net/mcreator/target/tools/TooltipTool.java index 4b1c53972..04959a1b2 100644 --- a/src/main/java/net/mcreator/target/tools/TooltipTool.java +++ b/src/main/java/net/mcreator/target/tools/TooltipTool.java @@ -5,7 +5,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -119,16 +118,17 @@ public class TooltipTool { ); } - public static void addMonitorTips(List tooltip, int id) { - if (id == -1) return; + public static void addMonitorTips(List tooltip, String id) { + if (id.equals("none")) return; Player player = Minecraft.getInstance().player; if (player == null) return; - Entity entity = player.level().getEntity(id); - if (entity == null) return; + DroneEntity entity = player.level().getEntitiesOfClass(DroneEntity.class, player.getBoundingBox().inflate(256)) + .stream().filter(e -> e.getStringUUID().equals(id)).findFirst().orElse(null); - if (!(entity instanceof DroneEntity)) return; + tooltip.add(Component.literal("" + entity)); + if (entity == null) return; tooltip.add(Component.literal(""));