From 702e4fc7871f03745e27d3acc30f2d7e8a068c05 Mon Sep 17 00:00:00 2001 From: Nikita Savyolov Date: Thu, 28 Oct 2021 01:08:31 +0300 Subject: [PATCH 1/2] fix: correct (maybe) modem properties something changed in 1.17 and the modem now slowly breaks with hand or pickaxe, so we set this manually --- .../computercraft/shared/ComputerCraftRegistry.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java b/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java index 969577732..f1cda3e78 100644 --- a/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java +++ b/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java @@ -49,6 +49,7 @@ import dan200.computercraft.shared.turtle.upgrades.*; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; import net.minecraft.block.*; import net.minecraft.block.entity.BlockEntity; import net.minecraft.block.entity.BlockEntityType; @@ -114,8 +115,8 @@ public final class ComputerCraftRegistry public static final BlockWirelessModem WIRELESS_MODEM_ADVANCED = register( "wireless_modem_advanced", new BlockWirelessModem( properties(), ComputerCraftRegistry.ModTiles.WIRELESS_MODEM_ADVANCED, ComputerFamily.ADVANCED ) ); public static final BlockWiredModemFull WIRED_MODEM_FULL = register( "wired_modem_full", - new BlockWiredModemFull( emProperties(), ComputerCraftRegistry.ModTiles.WIRED_MODEM_FULL ) ); - public static final BlockCable CABLE = register( "cable", new BlockCable( emProperties() ) ); + new BlockWiredModemFull( modemProperties(), ComputerCraftRegistry.ModTiles.WIRED_MODEM_FULL ) ); + public static final BlockCable CABLE = register( "cable", new BlockCable( modemProperties() ) ); private static Block.Settings properties() { @@ -133,9 +134,11 @@ public final class ComputerCraftRegistry .strength( 2.5f ); } - private static Block.Settings emProperties() + private static Block.Settings modemProperties() { return FabricBlockSettings.copyOf( Blocks.STONE ) + .breakByHand( true ) + .breakByTool( FabricToolTags.PICKAXES ) .strength( 1.5f ); } From 272572dbf299d0db35d668a283f7ca5d1c53efde Mon Sep 17 00:00:00 2001 From: Nikita Savyolov Date: Thu, 28 Oct 2021 01:10:47 +0300 Subject: [PATCH 2/2] fix: creative picking sided modem/cable --- .../peripheral/modem/wired/BlockCable.java | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/BlockCable.java b/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/BlockCable.java index 8cb28b302..7b90d4ffd 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/BlockCable.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/modem/wired/BlockCable.java @@ -11,6 +11,7 @@ import dan200.computercraft.api.ComputerCraftAPI; import dan200.computercraft.shared.ComputerCraftRegistry; import dan200.computercraft.shared.common.BlockGeneric; import dan200.computercraft.shared.util.WorldUtil; +import net.fabricmc.fabric.api.block.BlockPickInteractionAware; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.block.ShapeContext; @@ -37,7 +38,7 @@ import java.util.EnumMap; import static dan200.computercraft.shared.util.WaterloggableHelpers.*; -public class BlockCable extends BlockGeneric implements Waterloggable +public class BlockCable extends BlockGeneric implements Waterloggable, BlockPickInteractionAware { public static final EnumProperty MODEM = EnumProperty.of( "modem", CableModemVariant.class ); public static final BooleanProperty CABLE = BooleanProperty.of( "cable" ); @@ -168,21 +169,21 @@ public class BlockCable extends BlockGeneric implements Waterloggable return true; } - // TODO Re-implement, likely will need mixin - // @Override - // public ItemStack getPickStack(BlockView world, BlockPos pos, BlockState state) { - // Direction modem = state.get( MODEM ).getFacing(); - // boolean cable = state.get( CABLE ); - // - // // If we've only got one, just use that. - // if( !cable ) return new ItemStack( ComputerCraftRegistry.ModItems.WIRED_MODEM.get() ); - // if( modem == null ) return new ItemStack( ComputerCraftRegistry.ModItems.CABLE.get() ); - // - // // We've a modem and cable, so try to work out which one we're interacting with - // return hit != null && WorldUtil.isVecInside( CableShapes.getModemShape( state ), hit.getPos().subtract( pos.getX(), pos.getY(), pos.getZ() ) ) - // ? new ItemStack( ComputerCraftRegistry.ModItems.WIRED_MODEM.get() ) - // : new ItemStack( ComputerCraftRegistry.ModItems.CABLE.get() ); - // } + @Override + public ItemStack getPickedStack( BlockState state, BlockView world, BlockPos pos, @Nullable PlayerEntity player, HitResult hit ) + { + Direction modem = state.get( MODEM ).getFacing(); + boolean cable = state.get( CABLE ); + + // If we've only got one, just use that. + if( !cable ) return new ItemStack( ComputerCraftRegistry.ModItems.WIRED_MODEM ); + if( modem == null ) return new ItemStack( ComputerCraftRegistry.ModItems.CABLE ); + + // We've a modem and cable, so try to work out which one we're interacting with + return hit != null && WorldUtil.isVecInside( CableShapes.getModemShape( state ), hit.getPos().subtract( pos.getX(), pos.getY(), pos.getZ() ) ) + ? new ItemStack( ComputerCraftRegistry.ModItems.WIRED_MODEM ) + : new ItemStack( ComputerCraftRegistry.ModItems.CABLE ); + } @Override @Deprecated