From 0e57b3e1bb2133d9d4b76a03d0257eca1b48c214 Mon Sep 17 00:00:00 2001 From: p2vman Date: Sun, 22 Jun 2025 09:55:01 +0300 Subject: [PATCH] ... --- .../vmodextras/cc/ComputerCraftCompact.java | 5 +- .../trackwork/TrackWorkCompact.java | 7 +-- .../vmodextras/util/HoverBlockItem.java | 47 ++++++++++++++++++ .../vmodextras/blockstates/network_modem.json | 16 ++++++ .../assets/vmodextras/lang/en_us.json | 6 ++- .../models/block/network_modem_off.json | 7 +++ .../models/block/network_modem_on.json | 7 +++ .../vmodextras/models/item/network_modem.json | 1 + .../textures/block/network_modem_face.png | Bin 0 -> 319 bytes .../textures/block/network_modem_face_on.png | Bin 0 -> 272 bytes .../tooltips/track_work_controller.json | 9 ++++ 11 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/main/java/io/p2vman/vmodextras/util/HoverBlockItem.java create mode 100644 src/main/resources/assets/vmodextras/blockstates/network_modem.json create mode 100644 src/main/resources/assets/vmodextras/models/block/network_modem_off.json create mode 100644 src/main/resources/assets/vmodextras/models/block/network_modem_on.json create mode 100644 src/main/resources/assets/vmodextras/models/item/network_modem.json create mode 100644 src/main/resources/assets/vmodextras/textures/block/network_modem_face.png create mode 100644 src/main/resources/assets/vmodextras/textures/block/network_modem_face_on.png create mode 100644 src/main/resources/assets/vmodextras/tooltips/track_work_controller.json diff --git a/src/main/java/io/p2vman/vmodextras/cc/ComputerCraftCompact.java b/src/main/java/io/p2vman/vmodextras/cc/ComputerCraftCompact.java index 771f625..f2e1f30 100755 --- a/src/main/java/io/p2vman/vmodextras/cc/ComputerCraftCompact.java +++ b/src/main/java/io/p2vman/vmodextras/cc/ComputerCraftCompact.java @@ -3,6 +3,7 @@ package io.p2vman.vmodextras.cc; import io.p2vman.vmodextras.cc.block.BlockNetworkModem; import io.p2vman.vmodextras.cc.block.WireNetworkHubBlock; import io.p2vman.vmodextras.cc.block.entity.NetworkModemEntity; +import io.p2vman.vmodextras.util.HoverBlockItem; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; @@ -30,7 +31,7 @@ public class ComputerCraftCompact { NETWORK_MODEM.block(() -> new BlockNetworkModem(BlockBehaviour.Properties.of().mapColor(MapColor.STONE))); NETWORK_MODEM.entity(() -> BlockEntityType.Builder.of(NetworkModemEntity::new, NETWORK_MODEM.getBlock().get()).build(null)); - NETWORK_MODEM.item(() -> new BlockItem(NETWORK_MODEM.getBlock().get(), new Item.Properties().rarity(Rarity.EPIC))); + NETWORK_MODEM.item(() -> new HoverBlockItem(NETWORK_MODEM.getBlock().get(), new Item.Properties().rarity(Rarity.EPIC))); Utils.executeIsModEnable("trackwork", () -> { TRACK_WORK_CONTROLLER_BLOCK = REGISTRY.BLOCKS.register("track_work_controller", () -> new TrackWorkController(BlockBehaviour.Properties.of().mapColor(MapColor.STONE))); @@ -47,7 +48,7 @@ public class ComputerCraftCompact { builder.push((registry) -> { Utils.executeIsModEnable("trackwork", () -> { - TRACK_WORK_CONTROLLER_ITEM = registry.register("track_work_controller", () -> new BlockItem(TRACK_WORK_CONTROLLER_BLOCK.get(), new Item.Properties().rarity(Rarity.EPIC))); + TRACK_WORK_CONTROLLER_ITEM = registry.register("track_work_controller", () -> new HoverBlockItem(TRACK_WORK_CONTROLLER_BLOCK.get(), new Item.Properties().rarity(Rarity.EPIC))); }); //Utils.executeIsModEnable("drivebywire", () -> { diff --git a/src/main/java/io/p2vman/vmodextras/trackwork/TrackWorkCompact.java b/src/main/java/io/p2vman/vmodextras/trackwork/TrackWorkCompact.java index e1d75ce..5e4407e 100755 --- a/src/main/java/io/p2vman/vmodextras/trackwork/TrackWorkCompact.java +++ b/src/main/java/io/p2vman/vmodextras/trackwork/TrackWorkCompact.java @@ -1,5 +1,6 @@ package io.p2vman.vmodextras.trackwork; +import io.p2vman.vmodextras.util.HoverBlockItem; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; @@ -37,9 +38,9 @@ public class TrackWorkCompact COMPACT_BACKUP_BLOCK_ENTITY = REGISTRY.BLOCK_ENTITIES.register("compact_backup", () -> BlockEntityType.Builder.of(CompactBackupBlockEntity::new, COMPACT_BACKUP.get()).build(null)); builder.push((registry) -> { - MY_BLOCK_ITEM = registry.register("track_backup", () -> new BlockItem(TRAK_BUK.get(), new Item.Properties().rarity(Rarity.EPIC))); - SHIP_VOID_ITEM = registry.register("ship_void", () -> new BlockItem(SHIP_VOID_BLOCK.get(), new Item.Properties())); - COMPACT_BACKUP_ITEM = registry.register("compact_backup", () -> new BlockItem(COMPACT_BACKUP.get(), new Item.Properties().rarity(Rarity.EPIC))); + MY_BLOCK_ITEM = registry.register("track_backup", () -> new HoverBlockItem(TRAK_BUK.get(), new Item.Properties().rarity(Rarity.EPIC))); + SHIP_VOID_ITEM = registry.register("ship_void", () -> new HoverBlockItem(SHIP_VOID_BLOCK.get(), new Item.Properties())); + COMPACT_BACKUP_ITEM = registry.register("compact_backup", () -> new HoverBlockItem(COMPACT_BACKUP.get(), new Item.Properties().rarity(Rarity.EPIC))); }); } } diff --git a/src/main/java/io/p2vman/vmodextras/util/HoverBlockItem.java b/src/main/java/io/p2vman/vmodextras/util/HoverBlockItem.java new file mode 100644 index 0000000..22174df --- /dev/null +++ b/src/main/java/io/p2vman/vmodextras/util/HoverBlockItem.java @@ -0,0 +1,47 @@ +package io.p2vman.vmodextras.util; + +import net.minecraft.ChatFormatting; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public class HoverBlockItem extends BlockItem { + @OnlyIn(Dist.CLIENT) + private Hover hover = null; + + public HoverBlockItem(String id, Block block, Properties properties) { + super(block, properties); + } + + public HoverBlockItem(Block block, Properties properties) { + super(block, properties); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack p_41421_, @Nullable Level p_41422_, List tooltip, TooltipFlag p_41424_) { + if (hover != null) { + if (Screen.hasShiftDown()) { + tooltip.addAll(hover.detail); + } else { + tooltip.addAll(hover.tooltip); + tooltip.add(Component.translatable("tooltip.vmodextras.hint").withStyle(ChatFormatting.YELLOW)); + } + } else { + tooltip.add(Component.literal("Missing tooltip data").withStyle(ChatFormatting.RED)); + } + } + + public record Hover(List detail, List tooltip) { + + } +} diff --git a/src/main/resources/assets/vmodextras/blockstates/network_modem.json b/src/main/resources/assets/vmodextras/blockstates/network_modem.json new file mode 100644 index 0000000..3b1476d --- /dev/null +++ b/src/main/resources/assets/vmodextras/blockstates/network_modem.json @@ -0,0 +1,16 @@ +{ + "variants": { + "facing=down,on=false": {"model": "vmodextras:block/network_modem_off", "x": 90, "y": 0}, + "facing=down,on=true": {"model": "vmodextras:block/network_modem_on", "x": 90, "y": 0}, + "facing=east,on=false": {"model": "vmodextras:block/network_modem_off", "x": 0, "y": 90}, + "facing=east,on=true": {"model": "vmodextras:block/network_modem_on", "x": 0, "y": 90}, + "facing=north,on=false": {"model": "vmodextras:block/network_modem_off", "x": 0, "y": 0}, + "facing=north,on=true": {"model": "vmodextras:block/network_modem_on", "x": 0, "y": 0}, + "facing=south,on=false": {"model": "vmodextras:block/network_modem_off", "x": 0, "y": 180}, + "facing=south,on=true": {"model": "vmodextras:block/network_modem_on", "x": 0, "y": 180}, + "facing=up,on=false": {"model": "vmodextras:block/network_modem_off", "x": 270, "y": 0}, + "facing=up,on=true": {"model": "vmodextras:block/network_modem_on", "x": 270, "y": 0}, + "facing=west,on=false": {"model": "vmodextras:block/network_modem_off", "x": 0, "y": 270}, + "facing=west,on=true": {"model": "vmodextras:block/network_modem_on", "x": 0, "y": 270} + } +} diff --git a/src/main/resources/assets/vmodextras/lang/en_us.json b/src/main/resources/assets/vmodextras/lang/en_us.json index 4087cd8..e9a84d1 100755 --- a/src/main/resources/assets/vmodextras/lang/en_us.json +++ b/src/main/resources/assets/vmodextras/lang/en_us.json @@ -1,4 +1,8 @@ { "block.vmodextras.track_backup": "Track Backup", - "block.vmodextras.ship_void": "Ship Void" + "block.vmodextras.ship_void": "Ship Void", + "block.vmodextras.track_work_controller": "Track Work Controler", + "block.vmodextras.network_modem": "Network Modem", + "block.vmodextras.compact_backup": "Compact Backup", + "tooltip.vmodextras.hint": "Hold SHIFT for more information" } \ No newline at end of file diff --git a/src/main/resources/assets/vmodextras/models/block/network_modem_off.json b/src/main/resources/assets/vmodextras/models/block/network_modem_off.json new file mode 100644 index 0000000..98b05b0 --- /dev/null +++ b/src/main/resources/assets/vmodextras/models/block/network_modem_off.json @@ -0,0 +1,7 @@ +{ + "parent": "computercraft:block/modem", + "textures": { + "back": "computercraft:block/modem_back", + "front": "vmodextras:block/network_modem_face" + } +} diff --git a/src/main/resources/assets/vmodextras/models/block/network_modem_on.json b/src/main/resources/assets/vmodextras/models/block/network_modem_on.json new file mode 100644 index 0000000..59992ee --- /dev/null +++ b/src/main/resources/assets/vmodextras/models/block/network_modem_on.json @@ -0,0 +1,7 @@ +{ + "parent": "computercraft:block/modem", + "textures": { + "back": "computercraft:block/modem_back", + "front": "vmodextras:block/network_modem_face_on" + } +} diff --git a/src/main/resources/assets/vmodextras/models/item/network_modem.json b/src/main/resources/assets/vmodextras/models/item/network_modem.json new file mode 100644 index 0000000..23799a9 --- /dev/null +++ b/src/main/resources/assets/vmodextras/models/item/network_modem.json @@ -0,0 +1 @@ +{"parent": "vmodextras:block/network_modem_off"} diff --git a/src/main/resources/assets/vmodextras/textures/block/network_modem_face.png b/src/main/resources/assets/vmodextras/textures/block/network_modem_face.png new file mode 100644 index 0000000000000000000000000000000000000000..6c15f3ba8a96c8223bfd4df56f82c0d6fef74693 GIT binary patch literal 319 zcmV-F0l@x=P)Px#`AI}UR5(v#w6L)F|M%}-1`zo7?;it*{r~@eFdGEEfB()PE-nrh2jL$-elYy{ z^^1X@pP%8+pFa$YAOlW3Uk6r9DliiEVPMqM)ck+_+g?)jg4G)cdNDBS>gxW#{Anjy z2553QV|qc0+lArU*F9JbM3+-xwPRq^*4F-i^~-LEhOcWG7`TJMOk~Bl*kA*UjEw%D zd%Fci6E;`C#gHsfX0c^p)YsSlfAPb1R9m5nz?xoVf?WkO0NHRW=@9G&Als%THXRZs z$c940$XX^8EgG>Xf`ukF7hpsqF#(4h&@_lf5|a}~G?J*F0UV7KXC_LsGXUea+E9%Y R=yd=9002ovPDHLkV1m{2hL8XN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/vmodextras/textures/block/network_modem_face_on.png b/src/main/resources/assets/vmodextras/textures/block/network_modem_face_on.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc8cbeed5aec3937eb20bb749925e3a24ae03ba GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|PI|_UW23di8p%jQJ+m7O zDdGo2l8RYlcuoq