From f2c4ec0a68bef4e8ddad2a3e5d84c326350fc4f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ZX=E5=A4=8F=E5=A4=9C=E4=B9=8B=E9=A3=8E?= Date: Wed, 20 Nov 2024 19:46:27 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=85=81=E8=AE=B8=E4=BD=BF=E7=94=A8=20Hide?= =?UTF-8?q?Flag=20=E9=9A=90=E8=97=8F=E9=85=8D=E4=BB=B6=E7=9A=84=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=96=87=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tooltip/ClientAttachmentItemTooltip.java | 18 +++++++++++++++++- .../tooltip/AttachmentItemTooltip.java | 9 ++++++++- .../com/tacz/guns/item/AttachmentItem.java | 2 +- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java b/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java index a16de3661..1f90e6498 100644 --- a/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java +++ b/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java @@ -11,6 +11,7 @@ import com.tacz.guns.client.resource.ClientAssetManager; import com.tacz.guns.client.resource.pojo.PackInfo; import com.tacz.guns.inventory.tooltip.AttachmentItemTooltip; +import com.tacz.guns.item.GunTooltipPart; import com.tacz.guns.resource.pojo.data.attachment.AttachmentData; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.Font; @@ -34,6 +35,7 @@ public class ClientAttachmentItemTooltip implements ClientTooltipComponent { private static final Cache> CACHE = CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.SECONDS).build(); + private final ItemStack itemStack; private final ResourceLocation attachmentId; private final List components = Lists.newArrayList(); private final MutableComponent tips = Component.translatable("tooltip.tacz.attachment.yaw.shift"); @@ -42,6 +44,7 @@ public class ClientAttachmentItemTooltip implements ClientTooltipComponent { private List showGuns = Lists.newArrayList(); public ClientAttachmentItemTooltip(AttachmentItemTooltip tooltip) { + this.itemStack = tooltip.getItemStack(); this.attachmentId = tooltip.getAttachmentId(); this.addText(tooltip.getType()); this.getShowGuns(); @@ -72,6 +75,9 @@ private static List getAllAllowGuns(List output, ResourceL @Override public int getHeight() { + if (!shouldRender()) { + return 0; + } if (!Screen.hasShiftDown()) { return components.size() * 10 + 28; } @@ -80,6 +86,9 @@ public int getHeight() { @Override public int getWidth(Font font) { + if (!shouldRender()) { + return 0; + } int[] width = new int[]{0}; if (packInfo != null) { width[0] = Math.max(width[0], font.width(packInfo) + 4); @@ -98,6 +107,9 @@ public int getWidth(Font font) { @Override public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBufferSource.BufferSource bufferSource) { + if (!shouldRender()) { + return; + } int yOffset = pY; for (Component component : this.components) { font.drawInBatch(component, pX, yOffset, 0xffaa00, false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, 0xF000F0); @@ -117,7 +129,7 @@ public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBuffer @Override public void renderImage(Font font, int mouseX, int mouseY, GuiGraphics gui) { - if (!Screen.hasShiftDown()) { + if (!Screen.hasShiftDown() || !shouldRender()) { return; } int minY = components.size() * 10 + 3; @@ -181,4 +193,8 @@ private void addText(AttachmentType type) { }); }); } + + private boolean shouldRender() { + return GunTooltipPart.getHideFlags(itemStack) == 0; + } } diff --git a/src/main/java/com/tacz/guns/inventory/tooltip/AttachmentItemTooltip.java b/src/main/java/com/tacz/guns/inventory/tooltip/AttachmentItemTooltip.java index 57e369422..1b7b011ad 100644 --- a/src/main/java/com/tacz/guns/inventory/tooltip/AttachmentItemTooltip.java +++ b/src/main/java/com/tacz/guns/inventory/tooltip/AttachmentItemTooltip.java @@ -3,16 +3,23 @@ import com.tacz.guns.api.item.attachment.AttachmentType; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.tooltip.TooltipComponent; +import net.minecraft.world.item.ItemStack; public class AttachmentItemTooltip implements TooltipComponent { + private final ItemStack itemStack; private final ResourceLocation attachmentId; private final AttachmentType type; - public AttachmentItemTooltip(ResourceLocation attachmentId, AttachmentType type) { + public AttachmentItemTooltip(ItemStack itemStack, ResourceLocation attachmentId, AttachmentType type) { + this.itemStack = itemStack; this.attachmentId = attachmentId; this.type = type; } + public ItemStack getItemStack() { + return itemStack; + } + public ResourceLocation getAttachmentId() { return attachmentId; } diff --git a/src/main/java/com/tacz/guns/item/AttachmentItem.java b/src/main/java/com/tacz/guns/item/AttachmentItem.java index dc810a96c..0395eb427 100644 --- a/src/main/java/com/tacz/guns/item/AttachmentItem.java +++ b/src/main/java/com/tacz/guns/item/AttachmentItem.java @@ -81,6 +81,6 @@ public AttachmentType getType(ItemStack attachmentStack) { @Override public Optional getTooltipImage(ItemStack stack) { - return Optional.of(new AttachmentItemTooltip(this.getAttachmentId(stack), this.getType(stack))); + return Optional.of(new AttachmentItemTooltip(stack, this.getAttachmentId(stack), this.getType(stack))); } } From ab5490aefc12fe3e36c72a4a6bf88395b6ed8499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ZX=E5=A4=8F=E5=A4=9C=E4=B9=8B=E9=A3=8E?= Date: Wed, 20 Nov 2024 19:55:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=B8=BA=E5=BC=B9=E8=8D=AF=E7=9B=92?= =?UTF-8?q?=E4=B9=9F=E5=AE=9E=E7=8E=B0=E6=AD=A4=20PR=20=E7=9A=84=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guns/client/tooltip/ClientAmmoBoxTooltip.java | 13 +++++++++++++ .../client/tooltip/ClientAttachmentItemTooltip.java | 12 ++++++------ src/main/java/com/tacz/guns/item/AmmoBoxItem.java | 6 ++++++ .../java/com/tacz/guns/item/GunTooltipPart.java | 4 ++++ 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java b/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java index c51f77eee..6669971a2 100644 --- a/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java +++ b/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java @@ -2,6 +2,7 @@ import com.tacz.guns.api.item.IAmmoBox; import com.tacz.guns.inventory.tooltip.AmmoBoxTooltip; +import com.tacz.guns.item.GunTooltipPart; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent; @@ -28,22 +29,34 @@ public ClientAmmoBoxTooltip(AmmoBoxTooltip tooltip) { @Override public int getHeight() { + if (GunTooltipPart.hideFlagsPresent(ammo)) { + return 0; + } return 28; } @Override public int getWidth(Font font) { + if (GunTooltipPart.hideFlagsPresent(ammo)) { + return 0; + } return Math.max(font.width(ammoName), font.width(count)) + 22; } @Override public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBufferSource.BufferSource bufferSource) { + if (GunTooltipPart.hideFlagsPresent(ammo)) { + return; + } font.drawInBatch(ammoName, pX + 20, pY + 4, 0xffaa00, false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, 0xF000F0); font.drawInBatch(count, pX + 20, pY + 15, 0x666666, false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, 0xF000F0); } @Override public void renderImage(Font pFont, int pX, int pY, GuiGraphics pGuiGraphics) { + if (GunTooltipPart.hideFlagsPresent(ammo)) { + return; + } pGuiGraphics.renderItem(ammo, pX, pY + 5); } } diff --git a/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java b/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java index 1f90e6498..edb09aee3 100644 --- a/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java +++ b/src/main/java/com/tacz/guns/client/tooltip/ClientAttachmentItemTooltip.java @@ -75,7 +75,7 @@ private static List getAllAllowGuns(List output, ResourceL @Override public int getHeight() { - if (!shouldRender()) { + if (shouldNotRender()) { return 0; } if (!Screen.hasShiftDown()) { @@ -86,7 +86,7 @@ public int getHeight() { @Override public int getWidth(Font font) { - if (!shouldRender()) { + if (shouldNotRender()) { return 0; } int[] width = new int[]{0}; @@ -107,7 +107,7 @@ public int getWidth(Font font) { @Override public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBufferSource.BufferSource bufferSource) { - if (!shouldRender()) { + if (shouldNotRender()) { return; } int yOffset = pY; @@ -129,7 +129,7 @@ public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBuffer @Override public void renderImage(Font font, int mouseX, int mouseY, GuiGraphics gui) { - if (!Screen.hasShiftDown() || !shouldRender()) { + if (!Screen.hasShiftDown() || shouldNotRender()) { return; } int minY = components.size() * 10 + 3; @@ -194,7 +194,7 @@ private void addText(AttachmentType type) { }); } - private boolean shouldRender() { - return GunTooltipPart.getHideFlags(itemStack) == 0; + private boolean shouldNotRender() { + return GunTooltipPart.hideFlagsPresent(itemStack); } } diff --git a/src/main/java/com/tacz/guns/item/AmmoBoxItem.java b/src/main/java/com/tacz/guns/item/AmmoBoxItem.java index 017261cae..0963dd170 100644 --- a/src/main/java/com/tacz/guns/item/AmmoBoxItem.java +++ b/src/main/java/com/tacz/guns/item/AmmoBoxItem.java @@ -254,6 +254,9 @@ public static void fillItemCategory(CreativeModeTab.Output output) { @Override public Optional getTooltipImage(ItemStack stack) { + if (GunTooltipPart.hideFlagsPresent(stack)) { + return Optional.empty(); + } if (!(stack.getItem() instanceof IAmmoBox iAmmoBox)) { return Optional.empty(); } @@ -271,6 +274,9 @@ public Optional getTooltipImage(ItemStack stack) { @Override public void appendHoverText(ItemStack stack, @Nullable Level pLevel, List components, TooltipFlag isAdvanced) { + if (GunTooltipPart.hideFlagsPresent(stack)) { + return; + } if (isAllTypeCreative(stack)) { components.add(Component.translatable("tooltip.tacz.ammo_box.usage.all_type_creative").withStyle(ChatFormatting.GOLD)); return; diff --git a/src/main/java/com/tacz/guns/item/GunTooltipPart.java b/src/main/java/com/tacz/guns/item/GunTooltipPart.java index b25774705..0236cb622 100644 --- a/src/main/java/com/tacz/guns/item/GunTooltipPart.java +++ b/src/main/java/com/tacz/guns/item/GunTooltipPart.java @@ -18,6 +18,10 @@ public int getMask() { return this.mask; } + public static boolean hideFlagsPresent(ItemStack stack) { + return getHideFlags(stack) != 0; + } + public static int getHideFlags(ItemStack stack) { CompoundTag tag = stack.getTag(); if (tag != null && tag.contains("HideFlags", Tag.TAG_ANY_NUMERIC)) { From b2548fd62b7034783a0d1bbf833ec99a42d03cc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ZX=E5=A4=8F=E5=A4=9C=E4=B9=8B=E9=A3=8E?= Date: Wed, 20 Nov 2024 19:56:16 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=B8=BA=E5=BC=B9=E8=8D=AF=E4=B9=9F?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E6=AD=A4=20PR=20=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/tacz/guns/item/AmmoItem.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/tacz/guns/item/AmmoItem.java b/src/main/java/com/tacz/guns/item/AmmoItem.java index f03e73e6c..64bc66e35 100644 --- a/src/main/java/com/tacz/guns/item/AmmoItem.java +++ b/src/main/java/com/tacz/guns/item/AmmoItem.java @@ -79,6 +79,9 @@ public BlockEntityWithoutLevelRenderer getCustomRenderer() { @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, @Nullable Level level, List components, TooltipFlag isAdvanced) { + if (GunTooltipPart.hideFlagsPresent(stack)) { + return; + } ResourceLocation ammoId = this.getAmmoId(stack); TimelessAPI.getClientAmmoIndex(ammoId).ifPresent(index -> { String tooltipKey = index.getTooltipKey(); From 083a5659758c00d69ff85c1876d65d310a99a6d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ZX=E5=A4=8F=E5=A4=9C=E4=B9=8B=E9=A3=8E?= Date: Fri, 27 Dec 2024 19:55:51 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8F=90=E5=8F=96=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=EF=BC=8C=E4=BE=BF=E4=BA=8E=E4=BB=A5=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E6=9D=A1=E4=BB=B6=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guns/client/tooltip/ClientAmmoBoxTooltip.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java b/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java index 6669971a2..d904d5d13 100644 --- a/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java +++ b/src/main/java/com/tacz/guns/client/tooltip/ClientAmmoBoxTooltip.java @@ -29,7 +29,7 @@ public ClientAmmoBoxTooltip(AmmoBoxTooltip tooltip) { @Override public int getHeight() { - if (GunTooltipPart.hideFlagsPresent(ammo)) { + if (shouldNotRender()) { return 0; } return 28; @@ -37,7 +37,7 @@ public int getHeight() { @Override public int getWidth(Font font) { - if (GunTooltipPart.hideFlagsPresent(ammo)) { + if (shouldNotRender()) { return 0; } return Math.max(font.width(ammoName), font.width(count)) + 22; @@ -45,7 +45,7 @@ public int getWidth(Font font) { @Override public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBufferSource.BufferSource bufferSource) { - if (GunTooltipPart.hideFlagsPresent(ammo)) { + if (shouldNotRender()) { return; } font.drawInBatch(ammoName, pX + 20, pY + 4, 0xffaa00, false, matrix4f, bufferSource, Font.DisplayMode.NORMAL, 0, 0xF000F0); @@ -54,9 +54,13 @@ public void renderText(Font font, int pX, int pY, Matrix4f matrix4f, MultiBuffer @Override public void renderImage(Font pFont, int pX, int pY, GuiGraphics pGuiGraphics) { - if (GunTooltipPart.hideFlagsPresent(ammo)) { + if (shouldNotRender()) { return; } pGuiGraphics.renderItem(ammo, pX, pY + 5); } + + private boolean shouldNotRender() { + return GunTooltipPart.hideFlagsPresent(ammo); + } }