添加无人机的测距功能
This commit is contained in:
parent
609559d84a
commit
09bb7bb287
3 changed files with 45 additions and 0 deletions
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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<Component> 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue