From 93c69dec492d5bc79262519b907b770ebbb5aecc Mon Sep 17 00:00:00 2001 From: Andrey Nikitin Date: Sat, 15 Apr 2023 23:56:14 +0300 Subject: [PATCH] Docked in! --- .../tardim_ic/blockstates/tardim_dock.json | 7 + .../assets/tardim_ic/lang/en_uk.json | 1 + .../assets/tardim_ic/lang/en_us.json | 1 + .../resources/assets/tardim_ic/lang/rpr.json | 1 + .../assets/tardim_ic/lang/ru_ru.json | 1 + .../tardim_ic/models/block/tardim_dock.json | 130 ++++++++++++++++++ .../tardim_ic/models/item/tardim_dock.json | 23 ++++ .../tardim_ic/textures/blocks/tardim_dock.png | Bin 0 -> 1653 bytes .../a71/tardim_ic/tardim_ic/Registration.java | 12 ++ .../tardim_dock/TardimDockBlock.java | 77 +++++++++++ .../tardim_dock/TardimDockBlockEntity.java | 30 ++++ 11 files changed, 283 insertions(+) create mode 100644 Common/src/main/resources/assets/tardim_ic/blockstates/tardim_dock.json create mode 100644 Common/src/main/resources/assets/tardim_ic/models/block/tardim_dock.json create mode 100644 Common/src/main/resources/assets/tardim_ic/models/item/tardim_dock.json create mode 100644 Common/src/main/resources/assets/tardim_ic/textures/blocks/tardim_dock.png create mode 100644 Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java create mode 100644 Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java diff --git a/Common/src/main/resources/assets/tardim_ic/blockstates/tardim_dock.json b/Common/src/main/resources/assets/tardim_ic/blockstates/tardim_dock.json new file mode 100644 index 0000000..8cda046 --- /dev/null +++ b/Common/src/main/resources/assets/tardim_ic/blockstates/tardim_dock.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "tardim_ic:block/tardim_dock" + } + } +} \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/lang/en_uk.json b/Common/src/main/resources/assets/tardim_ic/lang/en_uk.json index db92b1c..10f9f74 100644 --- a/Common/src/main/resources/assets/tardim_ic/lang/en_uk.json +++ b/Common/src/main/resources/assets/tardim_ic/lang/en_uk.json @@ -1,6 +1,7 @@ { "block.tardim_ic.digital_tardim_interface": "Digital TARDIM Interface", "block.tardim_ic.redstone_tardim_input": "Redstone TARDIM Input", + "block.tardim_ic.tardim_dock": "TARDIM Dock", "itemGroup.tardim_ic": "TARDIM: In Control", "itemGroup.minecraft.tardim_ic": "TARDIM: In Control" } \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/lang/en_us.json b/Common/src/main/resources/assets/tardim_ic/lang/en_us.json index db92b1c..10f9f74 100644 --- a/Common/src/main/resources/assets/tardim_ic/lang/en_us.json +++ b/Common/src/main/resources/assets/tardim_ic/lang/en_us.json @@ -1,6 +1,7 @@ { "block.tardim_ic.digital_tardim_interface": "Digital TARDIM Interface", "block.tardim_ic.redstone_tardim_input": "Redstone TARDIM Input", + "block.tardim_ic.tardim_dock": "TARDIM Dock", "itemGroup.tardim_ic": "TARDIM: In Control", "itemGroup.minecraft.tardim_ic": "TARDIM: In Control" } \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/lang/rpr.json b/Common/src/main/resources/assets/tardim_ic/lang/rpr.json index cfa537a..d2d603b 100644 --- a/Common/src/main/resources/assets/tardim_ic/lang/rpr.json +++ b/Common/src/main/resources/assets/tardim_ic/lang/rpr.json @@ -1,6 +1,7 @@ { "block.tardim_ic.digital_tardim_interface": "Циферный Интерфейсъ Хронобудки", "block.tardim_ic.redstone_tardim_input": "Краснокаменный Инпутъ Хронобудки", + "block.tardim_ic.tardim_dock": "Конюшня для TARDIM", "itemGroup.tardim_ic": "ТАРДИМЪ: Подъ Контрольемъ", "itemGroup.minecraft.tardim_ic": "ТАРДИМЪ: Подъ Контрольемъ" diff --git a/Common/src/main/resources/assets/tardim_ic/lang/ru_ru.json b/Common/src/main/resources/assets/tardim_ic/lang/ru_ru.json index 7176736..1cb3857 100644 --- a/Common/src/main/resources/assets/tardim_ic/lang/ru_ru.json +++ b/Common/src/main/resources/assets/tardim_ic/lang/ru_ru.json @@ -1,6 +1,7 @@ { "block.tardim_ic.digital_tardim_interface": "Цифровой интерфейс TARDIM", "block.tardim_ic.redstone_tardim_input": "Редстоуновый ввод TARDIM", + "block.tardim_ic.tardim_dock": "Стыковочная станция для TARDIM", "itemGroup.tardim_ic": "TARDIM: In Control", "itemGroup.minecraft.tardim_ic": "TARDIM: In Control" } \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/models/block/tardim_dock.json b/Common/src/main/resources/assets/tardim_ic/models/block/tardim_dock.json new file mode 100644 index 0000000..8f72de8 --- /dev/null +++ b/Common/src/main/resources/assets/tardim_ic/models/block/tardim_dock.json @@ -0,0 +1,130 @@ +{ + "credit": "Made with Blockbench", + "render": "translucent", + "texture_size": [64, 64], + "textures": { + "0": "tardim_ic:blocks/tardim_dock", + "particle": "tardim_ic:blocks/tardim_dock" + }, + "elements": [ + { + "from": [2, 0, 2], + "to": [14, 12, 14], + "faces": { + "north": {"uv": [4, 0, 7, 3], "texture": "#0"}, + "east": {"uv": [4, 3, 7, 6], "texture": "#0"}, + "south": {"uv": [4, 6, 7, 9], "texture": "#0"}, + "west": {"uv": [7, 0, 10, 3], "texture": "#0"}, + "up": {"uv": [10, 6, 7, 3], "texture": "#0"}, + "down": {"uv": [10, 6, 7, 9], "texture": "#0"} + } + }, + { + "from": [0, 12, 0], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 8, 4, 9], "texture": "#0"}, + "east": {"uv": [0, 9, 4, 10], "texture": "#0"}, + "south": {"uv": [4, 9, 8, 10], "texture": "#0"}, + "west": {"uv": [8, 9, 12, 10], "texture": "#0"}, + "up": {"uv": [4, 4, 0, 0], "texture": "#0"}, + "down": {"uv": [4, 4, 0, 8], "texture": "#0"} + } + }, + { + "from": [12, 0, 0], + "to": [12, 12, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "east": {"uv": [10.5, 0, 10, 3], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [10, 0, 10.5, 3], "texture": "#0"}, + "up": {"uv": [0, 0.5, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 0.5], "texture": "#0"} + } + }, + { + "from": [4, 0, 14], + "to": [4, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "east": {"uv": [10, 0, 10.5, 3], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [10.5, 0, 10, 3], "texture": "#0"}, + "up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [4, 0, 0], + "to": [4, 12, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "east": {"uv": [1.5, 10, 1, 13], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [1, 10, 1.5, 13], "texture": "#0"}, + "up": {"uv": [0, 0.5, 0, 0], "texture": "#0"}, + "down": {"uv": [0, 0, 0, 0.5], "texture": "#0"} + } + }, + { + "from": [12, 0, 14], + "to": [12, 12, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "east": {"uv": [1, 10, 1.5, 13], "texture": "#0"}, + "south": {"uv": [0, 0, 0, 3], "texture": "#0"}, + "west": {"uv": [1.5, 10, 1, 13], "texture": "#0"}, + "up": {"uv": [0, 0.5, 0, 0], "rotation": 180, "texture": "#0"}, + "down": {"uv": [0, 0, 0, 0.5], "rotation": 180, "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 0, 0.5], + "scale": [0.3, 0.3, 0.3] + }, + "thirdperson_lefthand": { + "scale": [0.3, 0.3, 0.3] + }, + "firstperson_righthand": { + "translation": [1.75, -0.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "translation": [3, 0, 0], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, -0.25, 0], + "scale": [0.4, 0.4, 0.4] + }, + "gui": { + "rotation": [18, 45, 0], + "translation": [0, -0.5, 0], + "scale": [0.65, 0.65, 0.65] + }, + "head": { + "rotation": [0, -90, 0], + "scale": [1.2, 1.2, 1.2] + }, + "fixed": { + "rotation": [-90, 0, 0], + "scale": [1.2, 1.2, 1.2] + } + }, + "groups": [ + { + "name": "group", + "origin": [8, 8, 8], + "color": 0, + "nbt": "{}", + "children": [0, 1, 2, 3, 4, 5] + } + ] +} \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/models/item/tardim_dock.json b/Common/src/main/resources/assets/tardim_ic/models/item/tardim_dock.json new file mode 100644 index 0000000..72aaf33 --- /dev/null +++ b/Common/src/main/resources/assets/tardim_ic/models/item/tardim_dock.json @@ -0,0 +1,23 @@ +{ + "parent": "tardim_ic:block/tardim_dock", + "display": { + "thirdperson_righthand": { + "rotation": [ 75, 45, 0 ], + "scale": [ 0.40, 0.40, 0.40 ], + "translation": [ 0, 1, 0 ] + }, + "thirdperson_lefthand": { + "rotation": [ 75, 45, 0 ], + "scale": [ 0.40, 0.40, 0.40 ], + "translation": [ 0, 1, 0 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 45, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + }, + "firstperson_righthand": { + "rotation": [ 0, 45, 0 ], + "scale": [ 0.40, 0.40, 0.40 ] + } + } +} \ No newline at end of file diff --git a/Common/src/main/resources/assets/tardim_ic/textures/blocks/tardim_dock.png b/Common/src/main/resources/assets/tardim_ic/textures/blocks/tardim_dock.png new file mode 100644 index 0000000000000000000000000000000000000000..b82f67e7d8bbda026b451958048983c657fcbce1 GIT binary patch literal 1653 zcmV-*28#KKP)6v|V z_JD}UvPN(q+b)w1IVVu({4qR457*bZeL9!pHjaR_)$=kQbpCT26`K2OuBYjtjtOb} z8yRg7?C&p7U*-wg*?q))w9~yA8XbI+N}K;srMyO&K4*TpRQ3^&hqgxj0y7Z@F{_>; z8pxBq;Rw_k$P?9x>{IE6U{9r^;@%K|ka1hi!?;@in`(SqT<}}Q#6-cHE6|Bc-!7T0 z>Xnzzk(IT4<95xaJM(DmbHB1tIWoB*@QHW!>XoL4f!3jYD|^u!pS$rD?bd6Kkg97w z;sfK)`0i0%{nI-y79arm?B^d+VPc&7E5%i!YwtVfMn`!5(D2alu{D4Nkm=2O+FbhO zcRnuPzvo#2v_JX66t}0(pC!3wcc;eY{MYwC_)H(9MG!cmPl_w>ykdm~{LRWHy}0RE z+0WZ`nyJ|wW9-sC&#x>lMJj+4NS=Pm@&!8a|JPo<$Y!dJ9R`)OXy5%7U7nfZ zKeRE1XAxoEzID52a%%D*1jj?c7620$ABX12^--|~w2Q?RZi@wwWP{-$Ul3FwmLL|O z0@scXo}(``3&>xPEYmRk<$KG~W&uc@T%QM7XnuZSnY9jI&-B3>uF%a}-|`%Cvx5NI z5~8AQmAoDV(LdwH0BBuez}ey|tw9+r0%s%wfVB7OXGj->q(b;Q+Cp6BJe?n;<@=2r z>DpG^!Pe3x1jZ?lsL28@U9(&l80v};d|BZ9#276u+@+gem-!*aa*kjgtZ#X)0kd7T zMm#}CWCtnL)YZ1k@n?Y)3-!_m*S(QpSNP;wfSxs?01E(`mLP~|k3M`}@-)aJ@52(* zye(;v+L)|f2$35DoP6)J)gUafr5iAoS>oS!=6`J(6YSM@`9amvm6Y;UZ<8j7AJM3; zIdlHqYqVv)R$)ekw2&*>{wNP0Hx)tTYN)?I+jO&bwLNh6`p1z)^rOIM0jThFEVg-3 z5|V*y`L@zD_4d2I7ZeDlw3(;xbPKpF?-||6>z#rHVDj}KaI9e8tL+gS zXSCYBrUk{g!LxucklG$Wu&K6p@4t0C&wK1hhb7;L?D44WJ4GlL(1T+fYWq%c|}KuT`tu&khXu?xBw3+Nj?hLNB@>WnTa!g`gf6 za?{hK3MguX3WDl-00rC^5b{D$cMBn}&WRGCEWoQCHR9^Jpn6{4A`^mgg!WbI=!O7N z0p_#>FRABptYPd8khTw?FOy@g>hq#y9PzilwB(T|Lwtw=siUSq6ZDl~(gY$9Ggq}u zia;QUZozW_sqIZUyj5TFyO?&XWpN#<3rJfHh~3b#h!tP~ zZ_@!vz{~Ky?8e<+B>qje^7w$JH7nO}{VK z3e?|6tWtkJlmHx)CiZEafDSo_AICMKl~6H+DD>}#5`bvI=7k%-&yyhzkTETi7dsFi zJJm+h9&_-{b6FW?BuJ1TL4pJc5+q2F;KcDCCoE2eHlZ2{00000NkvXXu0mjf_evd7 literal 0 HcmV?d00001 diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java index 6154b6c..6b1c08a 100644 --- a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/Registration.java @@ -23,12 +23,15 @@ import su.a71.tardim_ic.tardim_ic.redstone_input.RedstoneInputTileEntity; import su.a71.tardim_ic.tardim_ic.Constants; import su.a71.tardim_ic.tardim_ic.registration.CommandInit; +import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlock; +import su.a71.tardim_ic.tardim_ic.tardim_dock.TardimDockBlockEntity; public class Registration { // Blocks public static final Block DIGITAL_TARDIM_INTERFACE = new DigitalInterfaceBlock(); public static final Block REDSTONE_TARDIM_INPUT = new RedstoneInputBlock(); + public static final Block TARDIM_DOCK = new TardimDockBlock(); // Tile Entities //public static final RegistryObject> DIGITAL_TARDIM_INTERFACE_TILEENTITY = Registration.BLOCK_ENTITIES.register("digital_tardim_interface", () -> new BlockEntityType<>(DigitalInterfaceTileEntity::new, Sets.newHashSet(DIGITAL_TARDIM_INTERFACE.get()), null)); @@ -44,6 +47,12 @@ public class Registration { FabricBlockEntityTypeBuilder.create(RedstoneInputTileEntity::new, DIGITAL_TARDIM_INTERFACE).build() ); + public static final BlockEntityType TARDIM_DOCK_BLOCKENTITY = Registry.register( + Registry.BLOCK_ENTITY_TYPE, + new ResourceLocation("tardim_ic", "tardim_dock"), + FabricBlockEntityTypeBuilder.create(TardimDockBlockEntity::new, TARDIM_DOCK).build() + ); + private static final CreativeModeTab TARDIM_IC_TAB = FabricItemGroupBuilder .create(new ResourceLocation("tardim_ic")) .icon(() -> new ItemStack(DIGITAL_TARDIM_INTERFACE)) @@ -58,6 +67,9 @@ public class Registration { Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "digital_tardim_interface"), DIGITAL_TARDIM_INTERFACE); Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "digital_tardim_interface"), new BlockItem(DIGITAL_TARDIM_INTERFACE, new FabricItemSettings().tab(TARDIM_IC_TAB))); + Registry.register(Registry.BLOCK, new ResourceLocation(Constants.MOD_ID, "tardim_dock"), TARDIM_DOCK); + Registry.register(Registry.ITEM, new ResourceLocation(Constants.MOD_ID, "tardim_dock"), new BlockItem(TARDIM_DOCK, new FabricItemSettings().tab(TARDIM_IC_TAB))); + ComputerCraftAPI.registerPeripheralProvider(new DigitalInterfacePeripheralProvider()); CommandInit.init(); } diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java new file mode 100644 index 0000000..5c5373b --- /dev/null +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlock.java @@ -0,0 +1,77 @@ +package su.a71.tardim_ic.tardim_ic.tardim_dock; + +import com.swdteam.tardim.common.init.TRDDimensions; +import com.swdteam.tardim.common.init.TRDSounds; +import com.swdteam.tardim.network.NetworkHandler; +import com.swdteam.tardim.network.PacketOpenEditGui; +import com.swdteam.tardim.tardim.TardimData; +import com.swdteam.tardim.tardim.TardimManager; +import com.swdteam.tardim.tileentity.TileEntityBaseTardimPanel; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.ChatFormatting; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.DebugPackets; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.LevelReader; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EntityBlock; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.IntegerProperty; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.BlockHitResult; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import su.a71.tardim_ic.tardim_ic.Registration; + +public class TardimDockBlock extends Block implements EntityBlock { + public TardimDockBlock() { + super(FabricBlockSettings.of(Material.METAL).strength(2, 4).noOcclusion()); // No occlusion? + } + +// @Nullable +// @Override +// public BlockEntity newBlockEntity(@NotNull BlockPos pos, @NotNull BlockState state) { +// return Registration.REDSTONE_TARDIM_INPUT_TILEENTITY.create(pos, state); +// } + + @Override + public InteractionResult use(BlockState blockState, Level w, BlockPos blockPos, Player player, InteractionHand hand, BlockHitResult p_60508_) { + if (!w.isClientSide) { + BlockEntity be = w.getBlockEntity(blockPos); + if (be instanceof TardimDockBlockEntity) { + + player.displayClientMessage( + Component.literal("Dock ID: " + ((TardimDockBlockEntity) be).dock_id).withStyle(ChatFormatting.BLUE).withStyle(ChatFormatting.BOLD), true + ); + } + } + + return InteractionResult.CONSUME; + } + + public boolean canSurvive(BlockState blockState, LevelReader levelReader, BlockPos blockPos) { + return true; + } + + // Un-register the dock + @Override + public void destroy(LevelAccessor levelAccessor, BlockPos blockPos, BlockState blockState) { + super.destroy(levelAccessor, blockPos, blockState); + } + + @Nullable + @Override + public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { + return Registration.TARDIM_DOCK_BLOCKENTITY.create(blockPos, blockState); + } +} diff --git a/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java new file mode 100644 index 0000000..24fc141 --- /dev/null +++ b/Fabric/src/main/java/su/a71/tardim_ic/tardim_ic/tardim_dock/TardimDockBlockEntity.java @@ -0,0 +1,30 @@ +package su.a71.tardim_ic.tardim_ic.tardim_dock; + +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.block.state.BlockState; + +import su.a71.tardim_ic.tardim_ic.Registration; + +public class TardimDockBlockEntity extends BlockEntity { + public int dock_id; + + public TardimDockBlockEntity(BlockPos blockPos, BlockState blockState) { + super(Registration.TARDIM_DOCK_BLOCKENTITY, blockPos, blockState); + this.dock_id = 123; + } + + @Override + public void saveAdditional(CompoundTag tag) { + tag.putInt("dock_id", dock_id); + super.saveAdditional(tag); + } + + @Override + public void load(CompoundTag tag) { + super.load(tag); + dock_id = tag.getInt("dock_id"); + } +}