Docked in!

This commit is contained in:
Andrey Nikitin 2023-04-15 23:56:14 +03:00
parent 926721b349
commit 93c69dec49
11 changed files with 283 additions and 0 deletions

View file

@ -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<BlockEntityType<DigitalInterfaceTileEntity>> 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<TardimDockBlockEntity> 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();
}

View file

@ -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);
}
}

View file

@ -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");
}
}