diff --git a/J65el02 b/J65el02 index c127f1a..f541617 160000 --- a/J65el02 +++ b/J65el02 @@ -1 +1 @@ -Subproject commit c127f1a2e5873ee3333b4dac05459cdbf002c662 +Subproject commit f5416177b806650d8014201a3e12c24d6e1c8747 diff --git a/src/main/java/net/brokenmoon/redcontrol/RedControl.java b/src/main/java/net/brokenmoon/redcontrol/RedControl.java index ec7aae0..420b04d 100644 --- a/src/main/java/net/brokenmoon/redcontrol/RedControl.java +++ b/src/main/java/net/brokenmoon/redcontrol/RedControl.java @@ -17,6 +17,7 @@ import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; import net.minecraft.block.Block; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; import net.minecraft.registry.Registry; import net.minecraft.registry.Registries; import net.minecraft.resource.Resource; @@ -46,9 +47,11 @@ public class RedControl implements ModInitializer { //Items //Block Entities - public static final BlockEntityType CPU_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier("redcontrol", "cpu_block_entity"), FabricBlockEntityTypeBuilder.create(CpuEntity::new, CPU).build()); - public static final BlockEntityType MONITOR_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier("redcontrol", "monitor_block_entity"), FabricBlockEntityTypeBuilder.create(MonitorEntity::new, MONITOR).build()); - public static final BlockEntityType DRIVE_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier("redcontrol", "drive_block_entity"), FabricBlockEntityTypeBuilder.create(DriveEntity::new, DRIVE).build()); + public static final BlockEntityType CPU_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, modloc("cpu_block_entity"), FabricBlockEntityTypeBuilder.create(CpuEntity::new, CPU).build()); + public static final BlockEntityType MONITOR_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, modloc("monitor_block_entity"), FabricBlockEntityTypeBuilder.create(MonitorEntity::new, MONITOR).build()); + public static final BlockEntityType DRIVE_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, modloc("drive_block_entity"), FabricBlockEntityTypeBuilder.create(DriveEntity::new, DRIVE).build()); + + public static final Item SQUEAKY_HAMMER = new Item(new FabricItemSettings()); @Override public void onInitialize() { @@ -80,12 +83,13 @@ public class RedControl implements ModInitializer { }); LOGGER.info("Initializing RedControl!"); - Registry.register(Registries.BLOCK, new Identifier("redcontrol", "cpu"), CPU); - Registry.register(Registries.BLOCK, new Identifier("redcontrol", "monitor"), MONITOR); - Registry.register(Registries.BLOCK, new Identifier("redcontrol", "disk_drive"), DRIVE); - Registry.register(Registries.ITEM, new Identifier("redcontrol", "cpu"), new BlockItem(CPU, new FabricItemSettings())); - Registry.register(Registries.ITEM, new Identifier("redcontrol", "monitor"), new BlockItem(MONITOR, new FabricItemSettings())); - Registry.register(Registries.ITEM, new Identifier("redcontrol", "disk_drive"), new BlockItem(DRIVE, new FabricItemSettings())); + Registry.register(Registries.BLOCK, modloc("cpu"), CPU); + Registry.register(Registries.BLOCK, modloc("monitor"), MONITOR); + Registry.register(Registries.BLOCK, modloc("disk_drive"), DRIVE); + Registry.register(Registries.ITEM, modloc("cpu"), new BlockItem(CPU, new FabricItemSettings())); + Registry.register(Registries.ITEM, modloc("monitor"), new BlockItem(MONITOR, new FabricItemSettings())); + Registry.register(Registries.ITEM, modloc("disk_drive"), new BlockItem(DRIVE, new FabricItemSettings())); + Registry.register(Registries.ITEM, modloc("squeaky_hammer"), SQUEAKY_HAMMER); //Packets ServerPlayNetworking.registerGlobalReceiver(RedControlNetworking.CPU_START, ((server, player, handler, buf, responseSender) -> { @@ -114,6 +118,7 @@ public class RedControl implements ModInitializer { LOGGER.info("Resetting cpu at {}", blockPos); }); })); - } + + static Identifier modloc(String path) {return new Identifier("redcontrol",path);} } \ No newline at end of file diff --git a/src/main/java/net/brokenmoon/redcontrol/blocks/CpuBlock.java b/src/main/java/net/brokenmoon/redcontrol/blocks/CpuBlock.java index f22e05c..b1362c3 100644 --- a/src/main/java/net/brokenmoon/redcontrol/blocks/CpuBlock.java +++ b/src/main/java/net/brokenmoon/redcontrol/blocks/CpuBlock.java @@ -47,8 +47,16 @@ public class CpuBlock extends NetworkCarrier { @Override public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - super.onUse(state,world,pos,player,hand,hit); if (!world.isClient) { + if (player.getStackInHand(hand).getItem() == RedControl.SQUEAKY_HAMMER) { + super.onUse(state,world,pos,player,hand,hit); + CpuEntity peripheral = (CpuEntity) world.getBlockEntity(pos); + player.sendMessage(Text.literal("Cpu Debug: "), false); + player.sendMessage(Text.literal(" " + Integer.toHexString(peripheral.getBus().hashCode())), false); + player.sendMessage(Text.literal(" " + Integer.toHexString(peripheral.core.cpu.getBus().getRedBus().hashCode())), false); + player.sendMessage(Text.literal(" " + Integer.toHexString(peripheral.i)), false); + player.sendMessage(Text.literal(" " + peripheral.core.isWaitingOnInterrupt()), false); + } PacketByteBuf byteBuf = PacketByteBufs.create(); byteBuf.writeBlockPos(pos); ServerPlayNetworking.send((ServerPlayerEntity) player, RedControlNetworking.CPUGUI_PACKET_ID,byteBuf); diff --git a/src/main/java/net/brokenmoon/redcontrol/blocks/DriveBlock.java b/src/main/java/net/brokenmoon/redcontrol/blocks/DriveBlock.java index 8521c7c..4b1c4a1 100644 --- a/src/main/java/net/brokenmoon/redcontrol/blocks/DriveBlock.java +++ b/src/main/java/net/brokenmoon/redcontrol/blocks/DriveBlock.java @@ -1,12 +1,18 @@ package net.brokenmoon.redcontrol.blocks; import com.mojang.serialization.MapCodec; +import net.brokenmoon.redcontrol.RedControl; import net.brokenmoon.redcontrol.blockentities.DriveEntity; import net.brokenmoon.redcontrol.blockentities.MonitorEntity; import net.minecraft.block.BlockState; import net.minecraft.block.BlockWithEntity; import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; import org.jetbrains.annotations.Nullable; public class DriveBlock extends NetworkCarrier{ @@ -24,4 +30,13 @@ public class DriveBlock extends NetworkCarrier{ public BlockEntity createBlockEntity(BlockPos pos, BlockState state) { return new DriveEntity(pos, state); } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (player.getStackInHand(hand).getItem() == RedControl.SQUEAKY_HAMMER) { + return super.onUse(state,world,pos,player,hand,hit); + } else { + return ActionResult.SUCCESS; + } + } } diff --git a/src/main/java/net/brokenmoon/redcontrol/blocks/MonitorBlock.java b/src/main/java/net/brokenmoon/redcontrol/blocks/MonitorBlock.java index 477daa0..57e3ac6 100644 --- a/src/main/java/net/brokenmoon/redcontrol/blocks/MonitorBlock.java +++ b/src/main/java/net/brokenmoon/redcontrol/blocks/MonitorBlock.java @@ -1,6 +1,7 @@ package net.brokenmoon.redcontrol.blocks; import com.mojang.serialization.MapCodec; +import net.brokenmoon.redcontrol.RedControl; import net.brokenmoon.redcontrol.RedControlNetworking; import net.brokenmoon.redcontrol.blockentities.MonitorEntity; import net.fabricmc.fabric.api.networking.v1.PacketByteBufs; @@ -39,13 +40,15 @@ public class MonitorBlock extends NetworkCarrier { @Override public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - super.onUse(state,world,pos,player,hand,hit); if (!world.isClient) { - MonitorEntity monitor = (MonitorEntity) world.getBlockEntity(pos); - player.sendMessage(Text.literal(String.valueOf(monitor.getBus().hashCode())), false); - String[] text = monitor.getText(); - for (String s : text) { - player.sendMessage(Text.literal(s), false); + if (player.getStackInHand(hand).getItem() == RedControl.SQUEAKY_HAMMER) { + super.onUse(state,world,pos,player,hand,hit); + MonitorEntity monitor = (MonitorEntity) world.getBlockEntity(pos); + player.sendMessage(Text.literal(String.valueOf(monitor.getBus().hashCode())), false); + String[] text = monitor.getText(); + for (String s : text) { + player.sendMessage(Text.literal(s), false); + } } PacketByteBuf byteBuf = PacketByteBufs.create(); byteBuf.writeBlockPos(pos);