diff --git a/src/main/java/net/mcreator/superbwarfare/client/screens/DroneUIOverlay.java b/src/main/java/net/mcreator/superbwarfare/client/screens/DroneUIOverlay.java index 6f1c95b56..93d47089e 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/screens/DroneUIOverlay.java +++ b/src/main/java/net/mcreator/superbwarfare/client/screens/DroneUIOverlay.java @@ -4,11 +4,15 @@ import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import net.mcreator.superbwarfare.entity.DroneEntity; import net.mcreator.superbwarfare.init.ModItems; +import net.mcreator.superbwarfare.tools.TraceTool; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.RenderGuiEvent; import net.minecraftforge.eventbus.api.EventPriority; @@ -44,7 +48,22 @@ public class DroneUIOverlay { .stream().filter(e -> e.getStringUUID().equals(stack.getOrCreateTag().getString("LinkedDrone"))).findFirst().orElse(null); if (entity != null) { + + boolean lookAtEntity = false; double distance = player.distanceTo(entity); + double block_range = entity.position().distanceTo((Vec3.atLowerCornerOf(entity.level().clip( + new ClipContext(entity.getEyePosition(), entity.getEyePosition().add(entity.getLookAngle().scale(520)), + ClipContext.Block.OUTLINE, ClipContext.Fluid.NONE, entity)).getBlockPos()))); + + double entity_range = 0; + + Entity lookingEntity = TraceTool.findLookingEntity(entity, 520); + + if (lookingEntity != null) { + lookAtEntity = true; + entity_range = entity.distanceTo(lookingEntity); + } + int color = -1; @@ -60,6 +79,12 @@ public class DroneUIOverlay { } else { event.getGuiGraphics().drawString(Minecraft.getInstance().font, "KAMIKAZE", w / 2 + 12, h / 2 + -37, -65536, false); } + + if (lookAtEntity) { + event.getGuiGraphics().drawString(Minecraft.getInstance().font, "Range:" + new DecimalFormat("##.#").format(entity_range) + "M " + lookingEntity.getDisplayName().getString(), w / 2 + 12, h / 2 - 28, color, false); + } else { + event.getGuiGraphics().drawString(Minecraft.getInstance().font, block_range > 512 ? "Range:---M" : "Range:" + new DecimalFormat("##.#").format(block_range) + "M", w / 2 + 12, h / 2 - 28, color, false); + } } } RenderSystem.depthMask(true); diff --git a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java index 25de35058..2f0bf79e0 100644 --- a/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/superbwarfare/event/PlayerEventHandler.java @@ -30,6 +30,16 @@ import net.minecraftforge.network.PacketDistributor; @Mod.EventBusSubscriber public class PlayerEventHandler { + @SubscribeEvent + public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) { + Player player = event.getEntity(); + ItemStack stack = player.getMainHandItem(); + if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using")) { + stack.getOrCreateTag().putBoolean("Using", false); + } + + } + @SubscribeEvent public static void onPlayerRespawned(PlayerEvent.PlayerRespawnEvent event) { Player player = event.getEntity(); diff --git a/src/main/java/net/mcreator/superbwarfare/item/Monitor.java b/src/main/java/net/mcreator/superbwarfare/item/Monitor.java index 1c00084dc..ca6e6a054 100644 --- a/src/main/java/net/mcreator/superbwarfare/item/Monitor.java +++ b/src/main/java/net/mcreator/superbwarfare/item/Monitor.java @@ -6,6 +6,7 @@ import net.mcreator.superbwarfare.tools.TooltipTool; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -18,6 +19,7 @@ import net.minecraft.world.entity.EquipmentSlot; import com.google.common.collect.Multimap; import com.google.common.collect.ImmutableMultimap; +import org.jetbrains.annotations.NotNull; import java.util.List; @@ -81,4 +83,12 @@ public class Monitor extends Item { public void appendHoverText(ItemStack stack, Level world, List list, TooltipFlag flag) { TooltipTool.addMonitorTips(list, stack.getOrCreateTag().getString(LINKED_DRONE)); } + + @Override + public void inventoryTick(ItemStack itemstack, Level world, Entity entity, int slot, boolean selected) { + super.inventoryTick(itemstack, world, entity, slot, selected); + if (!selected) { + itemstack.getOrCreateTag().putBoolean("Using",false); + } + } }