diff --git a/cc-restiched_client.launch b/cc-restiched_client.launch new file mode 100644 index 000000000..ed1b902fb --- /dev/null +++ b/cc-restiched_client.launch @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/cc-restiched_server.launch b/cc-restiched_server.launch new file mode 100644 index 000000000..953591000 --- /dev/null +++ b/cc-restiched_server.launch @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/gradle.properties b/gradle.properties index 4032101a1..dd8208c4f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,13 +5,13 @@ org.gradle.jvmargs=-Xmx1G mod_version=1.96.1-rc1 # Minecraft properties -mc_version=1.17 -mappings_version=9 +mc_version=1.17.1 +mappings_version=61 # Dependencies cloth_config_version=5.0.34 -fabric_loader_version=0.11.6 -fabric_api_version=0.36.0+1.16 +fabric_loader_version=0.11.7 +fabric_api_version=0.40.1+1.17 jankson_version=1.2.0 modmenu_version=2.0.2 cloth_api_version=2.0.54 diff --git a/src/main/java/dan200/computercraft/api/IUpgradeBase.java b/src/main/java/dan200/computercraft/api/IUpgradeBase.java index 9f19eece5..ee9b6e500 100644 --- a/src/main/java/dan200/computercraft/api/IUpgradeBase.java +++ b/src/main/java/dan200/computercraft/api/IUpgradeBase.java @@ -76,8 +76,8 @@ public interface IUpgradeBase // A more expanded form of ItemStack.areShareTagsEqual, but allowing an empty tag to be equal to a // null one. - NbtCompound shareTag = stack.getTag(); - NbtCompound craftingShareTag = crafting.getTag(); + NbtCompound shareTag = stack.getNbt(); + NbtCompound craftingShareTag = crafting.getNbt(); if( shareTag == craftingShareTag ) return true; if( shareTag == null ) return craftingShareTag.isEmpty(); if( craftingShareTag == null ) return shareTag.isEmpty(); diff --git a/src/main/java/dan200/computercraft/client/gui/FixedWidthFontRenderer.java b/src/main/java/dan200/computercraft/client/gui/FixedWidthFontRenderer.java index b41964088..b695c5fc3 100644 --- a/src/main/java/dan200/computercraft/client/gui/FixedWidthFontRenderer.java +++ b/src/main/java/dan200/computercraft/client/gui/FixedWidthFontRenderer.java @@ -23,15 +23,15 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; public final class FixedWidthFontRenderer -{ //FIXME Make this work like a gui, via BufferBuilder's +{ public static final int FONT_HEIGHT = 9; public static final int FONT_WIDTH = 6; public static final float WIDTH = 256.0f; public static final float BACKGROUND_START = (WIDTH - 6.0f) / WIDTH; public static final float BACKGROUND_END = (WIDTH - 4.0f) / WIDTH; private static final Matrix4f IDENTITY = AffineTransformation.identity() - .getMatrix(); - private static final Identifier FONT = new Identifier( "computercraft", "textures/gui/term_font.png" ); + .getMatrix(); + public static final Identifier FONT = new Identifier( "computercraft", "textures/gui/term_font.png" ); public static final RenderLayer TYPE = Type.MAIN; diff --git a/src/main/java/dan200/computercraft/client/gui/GuiComputer.java b/src/main/java/dan200/computercraft/client/gui/GuiComputer.java index c78197271..775c74109 100644 --- a/src/main/java/dan200/computercraft/client/gui/GuiComputer.java +++ b/src/main/java/dan200/computercraft/client/gui/GuiComputer.java @@ -152,9 +152,9 @@ public class GuiComputer extends HandledScreen< } @Override - public void tick() + public void handledScreenTick() { - super.tick(); + super.handledScreenTick(); // FIXME most likely unneeded. terminal.update(); } } diff --git a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java index fa7c0a8f1..dc5df9bbe 100644 --- a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java @@ -35,12 +35,13 @@ import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientBlockEntityEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry; -import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry; -import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry; +import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry; import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback; -import net.fabricmc.fabric.mixin.object.builder.ModelPredicateProviderRegistrySpecificAccessor; +import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; import net.minecraft.client.item.ModelPredicateProvider; +import net.minecraft.client.item.UnclampedModelPredicateProvider; import net.minecraft.client.render.RenderLayer; import net.minecraft.item.Item; import net.minecraft.screen.PlayerScreenHandler; @@ -82,10 +83,10 @@ public final class ComputerCraftProxyClient implements ClientModInitializer BlockRenderLayerMap.INSTANCE.putBlock( ComputerCraftRegistry.ModBlocks.MONITOR_ADVANCED, RenderLayer.getCutout() ); // Setup TESRs - BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.MONITOR_NORMAL, TileEntityMonitorRenderer::new ); - BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.MONITOR_ADVANCED, TileEntityMonitorRenderer::new ); - BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.TURTLE_NORMAL, TileEntityTurtleRenderer::new ); - BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.TURTLE_ADVANCED, TileEntityTurtleRenderer::new ); + BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.MONITOR_NORMAL, TileEntityMonitorRenderer::new ); + BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.MONITOR_ADVANCED, TileEntityMonitorRenderer::new ); + BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.TURTLE_NORMAL, TileEntityTurtleRenderer::new ); + BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.TURTLE_ADVANCED, TileEntityTurtleRenderer::new ); ClientSpriteRegistryCallback.event( PlayerScreenHandler.BLOCK_ATLAS_TEXTURE ) .register( ClientRegistry::onTextureStitchEvent ); @@ -94,15 +95,15 @@ public final class ComputerCraftProxyClient implements ClientModInitializer TurtleModelLoader.INSTANCE.loadModel( name ) : null ); - EntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModEntities.TURTLE_PLAYER, TurtlePlayerRenderer::new ); + EntityRendererRegistry.register( ComputerCraftRegistry.ModEntities.TURTLE_PLAYER, TurtlePlayerRenderer::new ); registerItemProperty( "state", - ( stack, world, player ) -> ItemPocketComputer.getState( stack ) + ( stack, world, player, integer ) -> ItemPocketComputer.getState( stack ) .ordinal(), () -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_NORMAL, () -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED ); registerItemProperty( "state", - ( stack, world, player ) -> IColouredItem.getColourBasic( stack ) != -1 ? 1 : 0, + ( stack, world, player, integer ) -> IColouredItem.getColourBasic( stack ) != -1 ? 1 : 0, () -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_NORMAL, () -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED ); ClientRegistry.onItemColours(); @@ -127,12 +128,12 @@ public final class ComputerCraftProxyClient implements ClientModInitializer } @SafeVarargs - private static void registerItemProperty( String name, ModelPredicateProvider getter, Supplier... items ) + private static void registerItemProperty( String name, UnclampedModelPredicateProvider getter, Supplier... items ) { Identifier id = new Identifier( ComputerCraft.MOD_ID, name ); for( Supplier item : items ) { - ModelPredicateProviderRegistrySpecificAccessor.callRegister( item.get(), id, getter ); + FabricModelPredicateProviderRegistry.register( item.get(), id, getter ); } } } diff --git a/src/main/java/dan200/computercraft/client/render/ComputerBorderRenderer.java b/src/main/java/dan200/computercraft/client/render/ComputerBorderRenderer.java index eddb729dd..91466b927 100644 --- a/src/main/java/dan200/computercraft/client/render/ComputerBorderRenderer.java +++ b/src/main/java/dan200/computercraft/client/render/ComputerBorderRenderer.java @@ -89,7 +89,7 @@ public class ComputerBorderRenderer render( IDENTITY, buffer, x, y, z, width, height ); - RenderSystem.enableDepthTest(); //TODO: enableAlphaTest(). FIXME +// RenderSystem.enableDepthTest(); //TODO: enableAlphaTest(). FIXME tessellator.draw(); } diff --git a/src/main/java/dan200/computercraft/client/render/PrintoutRenderer.java b/src/main/java/dan200/computercraft/client/render/PrintoutRenderer.java index 5f48bbe7e..d16fbe876 100644 --- a/src/main/java/dan200/computercraft/client/render/PrintoutRenderer.java +++ b/src/main/java/dan200/computercraft/client/render/PrintoutRenderer.java @@ -19,7 +19,7 @@ import static dan200.computercraft.client.gui.FixedWidthFontRenderer.FONT_HEIGHT import static dan200.computercraft.shared.media.items.ItemPrintout.LINES_PER_PAGE; public final class PrintoutRenderer -{ //FIXME Use BufferBuilders +{ /** * Width of a page. */ @@ -189,20 +189,26 @@ public final class PrintoutRenderer private static final class Type extends RenderLayer { + static final RenderLayer TYPE = RenderLayer.of( "printout_background", VertexFormats.POSITION_TEXTURE, - VertexFormat.DrawMode.QUADS, + GL11.GL_QUADS, 1024, + false, + false, // useDelegate, needsSorting - RenderLayer.MultiPhaseParameters.builder() + Type.MultiPhaseParameters.builder() .texture( new RenderPhase.Texture( BG, false, false ) ) // blur, minimap - .transparency( TRANSLUCENT_TRANSPARENCY ) + .transparency( TRANSLUCENT_TRANSPARENCY) .lightmap( DISABLE_LIGHTMAP ) - .build( false )); - - private Type( String name, VertexFormat vertexFormat, VertexFormat.DrawMode drawMode, int expectedBufferSize, boolean hasCrumbling, boolean translucent, RenderLayer.MultiPhaseParameters phases, Runnable setup, Runnable destroy ) + .build( false ) ); + + public Type( String name, VertexFormat vertexFormat, DrawMode drawMode, + int expectedBufferSize, boolean hasCrumbling, boolean translucent, + Runnable startAction, Runnable endAction ) { - super( name, vertexFormat, drawMode, expectedBufferSize, hasCrumbling, hasCrumbling, setup, destroy ); + super( name, vertexFormat, drawMode, expectedBufferSize, hasCrumbling, translucent, + startAction, endAction ); } } } diff --git a/src/main/java/dan200/computercraft/client/render/TileEntityMonitorRenderer.java b/src/main/java/dan200/computercraft/client/render/TileEntityMonitorRenderer.java index 4ff0cefb7..ff6a7824d 100644 --- a/src/main/java/dan200/computercraft/client/render/TileEntityMonitorRenderer.java +++ b/src/main/java/dan200/computercraft/client/render/TileEntityMonitorRenderer.java @@ -20,6 +20,7 @@ import net.minecraft.client.gl.VertexBuffer; import net.minecraft.client.render.*; import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; import net.minecraft.client.render.block.entity.BlockEntityRenderer; +import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; import net.minecraft.client.util.GlAllocationUtils; import net.minecraft.util.math.AffineTransformation; import net.minecraft.client.util.math.MatrixStack; @@ -47,11 +48,10 @@ public class TileEntityMonitorRenderer implements BlockEntityRenderer private final Random random = new Random( 0 ); - public TileEntityTurtleRenderer( BlockEntityRenderDispatcher renderDispatcher ) + public TileEntityTurtleRenderer( BlockEntityRendererFactory.Context context ) { - super( renderDispatcher ); +// super( rendererDispatcher ); } - + public static ModelIdentifier getTurtleModel( ComputerFamily family, boolean coloured ) { switch( family ) @@ -116,11 +117,11 @@ public class TileEntityTurtleRenderer implements BlockEntityRenderer // Render the label String label = turtle.createProxy() .getLabel(); - HitResult hit = dispatcher.crosshairTarget; + MinecraftClient mc = MinecraftClient.getInstance(); + HitResult hit = mc.crosshairTarget; if( label != null && hit.getType() == HitResult.Type.BLOCK && turtle.getPos() .equals( ((BlockHitResult) hit).getBlockPos() ) ) { - MinecraftClient mc = MinecraftClient.getInstance(); TextRenderer font = mc.textRenderer; transform.push(); diff --git a/src/main/java/dan200/computercraft/client/render/TurtleMultiModel.java b/src/main/java/dan200/computercraft/client/render/TurtleMultiModel.java index f6803af3e..1f975f963 100644 --- a/src/main/java/dan200/computercraft/client/render/TurtleMultiModel.java +++ b/src/main/java/dan200/computercraft/client/render/TurtleMultiModel.java @@ -120,9 +120,9 @@ public class TurtleMultiModel implements BakedModel @Nonnull @Override @Deprecated - public Sprite getSprite() + public Sprite getParticleSprite() { - return baseModel.getSprite(); + return baseModel.getParticleSprite(); } @Nonnull diff --git a/src/main/java/dan200/computercraft/client/render/TurtlePlayerRenderer.java b/src/main/java/dan200/computercraft/client/render/TurtlePlayerRenderer.java index 00bc29572..275b6c641 100644 --- a/src/main/java/dan200/computercraft/client/render/TurtlePlayerRenderer.java +++ b/src/main/java/dan200/computercraft/client/render/TurtlePlayerRenderer.java @@ -10,6 +10,7 @@ import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; import net.minecraft.client.render.VertexConsumerProvider; import net.minecraft.client.render.entity.EntityRenderDispatcher; import net.minecraft.client.render.entity.EntityRenderer; +import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.EntityRendererFactory.Context; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.util.Identifier; @@ -18,14 +19,9 @@ import javax.annotation.Nonnull; public class TurtlePlayerRenderer extends EntityRenderer { //FIXME Make sure this isn't an issue. Context was EntityRenderDispatcher. - public TurtlePlayerRenderer( Context renderManager ) + public TurtlePlayerRenderer( EntityRendererFactory.Context context ) { - super( renderManager ); - } - - public TurtlePlayerRenderer( Context entityRenderDispatcher, EntityRendererRegistry.Context context ) - { - super( entityRenderDispatcher ); + super( context ); } @Override diff --git a/src/main/java/dan200/computercraft/client/render/TurtleSmartItemModel.java b/src/main/java/dan200/computercraft/client/render/TurtleSmartItemModel.java index 9da28fa33..914354c0c 100644 --- a/src/main/java/dan200/computercraft/client/render/TurtleSmartItemModel.java +++ b/src/main/java/dan200/computercraft/client/render/TurtleSmartItemModel.java @@ -145,9 +145,9 @@ public class TurtleSmartItemModel implements BakedModel @Nonnull @Override @Deprecated - public Sprite getSprite() + public Sprite getParticleSprite() { - return familyModel.getSprite(); + return familyModel.getParticleSprite(); } @Nonnull diff --git a/src/main/java/dan200/computercraft/fabric/mixin/BlockEntityMixin.java b/src/main/java/dan200/computercraft/fabric/mixin/BlockEntityMixin.java new file mode 100644 index 000000000..764cf87e2 --- /dev/null +++ b/src/main/java/dan200/computercraft/fabric/mixin/BlockEntityMixin.java @@ -0,0 +1,23 @@ +package dan200.computercraft.fabric.mixin; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.util.math.BlockPos; + +@Mixin( BlockEntity.class ) +public class BlockEntityMixin +{ + @Final + @Mutable + @Shadow + protected BlockPos pos; + + public void setBlockPos( BlockPos pos ) + { + this.pos = pos; + } +} diff --git a/src/main/java/dan200/computercraft/fabric/mixin/MixinServerPlayerInteractionManager.java b/src/main/java/dan200/computercraft/fabric/mixin/MixinServerPlayerInteractionManager.java index 3ca7e4620..c714c2346 100644 --- a/src/main/java/dan200/computercraft/fabric/mixin/MixinServerPlayerInteractionManager.java +++ b/src/main/java/dan200/computercraft/fabric/mixin/MixinServerPlayerInteractionManager.java @@ -34,7 +34,7 @@ public class MixinServerPlayerInteractionManager ActionResult actionResult = state.onUse( world, player, hand, hitResult ); if( actionResult.isAccepted() ) { - Criteria.ITEM_USED_ON_BLOCK.test( player, pos, stack ); + Criteria.ITEM_USED_ON_BLOCK.trigger( player, pos, stack ); cir.setReturnValue( actionResult ); } } diff --git a/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java b/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java index faee5795c..2d716e57e 100644 --- a/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java +++ b/src/main/java/dan200/computercraft/shared/ComputerCraftRegistry.java @@ -42,7 +42,6 @@ import dan200.computercraft.shared.turtle.core.TurtlePlayer; import dan200.computercraft.shared.turtle.inventory.ContainerTurtle; import dan200.computercraft.shared.turtle.items.ItemTurtle; import dan200.computercraft.shared.turtle.upgrades.*; -import dan200.computercraft.shared.util.FixedPointTileEntityType; import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; @@ -150,48 +149,53 @@ public final class ComputerCraftRegistry public static class ModTiles { - public static final BlockEntityType MONITOR_NORMAL = ofBlock( () -> ModBlocks.MONITOR_NORMAL, - "monitor_normal", - f -> new TileMonitor( f, false, null, null ) ); - public static final BlockEntityType MONITOR_ADVANCED = ofBlock( () -> ModBlocks.MONITOR_ADVANCED, - "monitor_advanced", - f -> new TileMonitor( f, true, null, null ) ); - public static final BlockEntityType COMPUTER_NORMAL = ofBlock( () -> ModBlocks.COMPUTER_NORMAL, - "computer_normal", - f -> new TileComputer( ComputerFamily.NORMAL, f, null, null ) ); - public static final BlockEntityType COMPUTER_ADVANCED = ofBlock( () -> ModBlocks.COMPUTER_ADVANCED, - "computer_advanced", - f -> new TileComputer( ComputerFamily.ADVANCED, f, null, null ) ); - public static final BlockEntityType COMPUTER_COMMAND = ofBlock( () -> ModBlocks.COMPUTER_COMMAND, - "computer_command", - f -> new TileCommandComputer( ComputerFamily.COMMAND, f, null, null ) ); - public static final BlockEntityType TURTLE_NORMAL = ofBlock( () -> ModBlocks.TURTLE_NORMAL, - "turtle_normal", - f -> new TileTurtle( f, ComputerFamily.NORMAL ) ); - public static final BlockEntityType TURTLE_ADVANCED = ofBlock( () -> ModBlocks.TURTLE_ADVANCED, - "turtle_advanced", - f -> new TileTurtle( f, ComputerFamily.ADVANCED ) ); - public static final BlockEntityType SPEAKER = ofBlock( () -> ModBlocks.SPEAKER, "speaker", TileSpeaker::new ); - public static final BlockEntityType DISK_DRIVE = ofBlock( () -> ModBlocks.DISK_DRIVE, "disk_drive", TileDiskDrive::new ); - public static final BlockEntityType PRINTER = ofBlock( () -> ModBlocks.PRINTER, "printer", TilePrinter::new ); - public static final BlockEntityType WIRED_MODEM_FULL = ofBlock( () -> ModBlocks.WIRED_MODEM_FULL, - "wired_modem_full", - TileWiredModemFull::new ); - public static final BlockEntityType CABLE = ofBlock( () -> ModBlocks.CABLE, "cable", TileCable::new ); - public static final BlockEntityType WIRELESS_MODEM_NORMAL = ofBlock( () -> ModBlocks.WIRELESS_MODEM_NORMAL, - "wireless_modem_normal", - f -> new TileWirelessModem( f, false, null, null ) ); - public static final BlockEntityType WIRELESS_MODEM_ADVANCED = ofBlock( () -> ModBlocks.WIRELESS_MODEM_ADVANCED, - "wireless_modem_advanced", - f -> new TileWirelessModem( f, true ) ); - - private static BlockEntityType ofBlock( Supplier block, String id, Function, T> factory ) - { - FabricBlockEntityTypeBuilder.create(factory, block); - return Registry.register( BLOCK_ENTITY_TYPE, - new Identifier( MOD_ID, id ), - FabricBlockEntityTypeBuilder.create); - } + public static final BlockEntityType MONITOR_NORMAL = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileMonitor( ModTiles.MONITOR_NORMAL, false, blockPos, blockState ), + ModBlocks.MONITOR_NORMAL ) + .build(); + public static final BlockEntityType MONITOR_ADVANCED = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileMonitor( ModTiles.MONITOR_ADVANCED, false, blockPos, blockState ), + ModBlocks.MONITOR_ADVANCED ) + .build(); + public static final BlockEntityType COMPUTER_NORMAL = FabricBlockEntityTypeBuilder.create( + ( blockPos, blockState ) -> new TileComputer( ComputerFamily.NORMAL, ModTiles.COMPUTER_NORMAL, blockPos, blockState ), + ModBlocks.COMPUTER_NORMAL ).build(); + public static final BlockEntityType COMPUTER_ADVANCED = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileComputer( ComputerFamily.ADVANCED, ModTiles.COMPUTER_ADVANCED, blockPos, + blockState ), ModBlocks.COMPUTER_ADVANCED ) + .build(); + public static final BlockEntityType COMPUTER_COMMAND = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileCommandComputer( ComputerFamily.COMMAND, ModTiles.COMPUTER_COMMAND, blockPos, + blockState ), ModBlocks.COMPUTER_COMMAND ) + .build(); + public static final BlockEntityType TURTLE_NORMAL = FabricBlockEntityTypeBuilder.create( + ( blockPos, blockState ) -> new TileTurtle( ModTiles.TURTLE_NORMAL, ComputerFamily.NORMAL, blockPos, blockState ), + ModBlocks.TURTLE_NORMAL ).build(); + public static final BlockEntityType TURTLE_ADVANCED = FabricBlockEntityTypeBuilder.create( + ( blockPos, blockState ) -> new TileTurtle( ModTiles.TURTLE_ADVANCED, ComputerFamily.ADVANCED, blockPos, blockState ), + ModBlocks.TURTLE_ADVANCED ).build(); + public static final BlockEntityType SPEAKER = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileSpeaker( ModTiles.SPEAKER, blockPos, blockState ), ModBlocks.SPEAKER ) + .build(); + public static final BlockEntityType DISK_DRIVE = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileDiskDrive( ModTiles.DISK_DRIVE, blockPos, blockState ), + ModBlocks.DISK_DRIVE ) + .build(); + public static final BlockEntityType PRINTER = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TilePrinter( ModTiles.PRINTER, blockPos, blockState ), ModBlocks.PRINTER ) + .build(); + public static final BlockEntityType WIRED_MODEM_FULL = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileWiredModemFull( ModTiles.WIRED_MODEM_FULL, blockPos, blockState ), + ModBlocks.WIRED_MODEM_FULL ) + .build(); + public static final BlockEntityType CABLE = FabricBlockEntityTypeBuilder + .create( ( blockPos, blockState ) -> new TileCable( ModTiles.CABLE, blockPos, blockState ), ModBlocks.CABLE ).build(); + public static final BlockEntityType WIRELESS_MODEM_NORMAL = FabricBlockEntityTypeBuilder.create( + ( blockPos, blockState ) -> new TileWirelessModem( ModTiles.WIRELESS_MODEM_NORMAL, false, blockPos, blockState ), + ModBlocks.WIRELESS_MODEM_NORMAL ).build(); + public static final BlockEntityType WIRELESS_MODEM_ADVANCED = FabricBlockEntityTypeBuilder.create( + ( blockPos, blockState ) -> new TileWirelessModem( ModTiles.WIRELESS_MODEM_ADVANCED, true, blockPos, blockState ), + ModBlocks.WIRELESS_MODEM_ADVANCED ).build(); } public static final class ModItems diff --git a/src/main/java/dan200/computercraft/shared/command/UserLevel.java b/src/main/java/dan200/computercraft/shared/command/UserLevel.java index d0a142cf0..428a62615 100644 --- a/src/main/java/dan200/computercraft/shared/command/UserLevel.java +++ b/src/main/java/dan200/computercraft/shared/command/UserLevel.java @@ -59,9 +59,9 @@ public enum UserLevel implements Predicate if( this == OWNER || this == OWNER_OP ) { - MinecraftServer server = source.getMinecraftServer(); + MinecraftServer server = source.getServer(); Entity sender = source.getEntity(); - if( server.isSinglePlayer() && sender instanceof PlayerEntity && + if( server.isSingleplayer() && sender instanceof PlayerEntity && ((PlayerEntity) sender).getGameProfile().getName().equalsIgnoreCase( server.getServerModName() ) ) { return true; diff --git a/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java b/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java index 98461eb45..c7bd1248e 100644 --- a/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java +++ b/src/main/java/dan200/computercraft/shared/command/builder/HelpingArgumentBuilder.java @@ -66,7 +66,7 @@ public final class HelpingArgumentBuilder extends LiteralArgumentBuilder dispatcher = context.getSource() - .getMinecraftServer() + .getServer() .getCommandManager() .getDispatcher(); CommandNode temp = new LiteralCommandNode<>( "_", null, x -> true, null, null, false ); diff --git a/src/main/java/dan200/computercraft/shared/common/IColouredItem.java b/src/main/java/dan200/computercraft/shared/common/IColouredItem.java index 04b82d567..6d6b44f4d 100644 --- a/src/main/java/dan200/computercraft/shared/common/IColouredItem.java +++ b/src/main/java/dan200/computercraft/shared/common/IColouredItem.java @@ -20,7 +20,7 @@ public interface IColouredItem static int getColourBasic( ItemStack stack ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); return tag != null && tag.contains( NBT_COLOUR ) ? tag.getInt( NBT_COLOUR ) : -1; } @@ -35,7 +35,7 @@ public interface IColouredItem { if( colour == -1 ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); if( tag != null ) { tag.remove( NBT_COLOUR ); @@ -43,7 +43,7 @@ public interface IColouredItem } else { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_COLOUR, colour ); } } diff --git a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java index 660b38c7c..5f6a4ec78 100644 --- a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java +++ b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java @@ -103,7 +103,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I public static void setUpgrade( @Nonnull ItemStack stack, IPocketUpgrade upgrade ) { - NbtCompound compound = stack.getOrCreateTag(); + NbtCompound compound = stack.getOrCreateNbt(); if( upgrade == null ) { @@ -121,7 +121,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I public static NbtCompound getUpgradeInfo( @Nonnull ItemStack stack ) { - return stack.getOrCreateSubTag( NBT_UPGRADE_INFO ); + return stack.getOrCreateSubNbt( NBT_UPGRADE_INFO ); } // @Nullable @@ -274,7 +274,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I ItemStack result = new ItemStack( this ); if( id >= 0 ) { - result.getOrCreateTag() + result.getOrCreateNbt() .putInt( NBT_ID, id ); } if( label != null ) @@ -283,14 +283,14 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I } if( upgrade != null ) { - result.getOrCreateTag() + result.getOrCreateNbt() .putString( NBT_UPGRADE, upgrade.getUpgradeID() .toString() ); } if( colour != -1 ) { - result.getOrCreateTag() + result.getOrCreateNbt() .putInt( NBT_COLOUR, colour ); } return result; @@ -341,7 +341,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I public static IPocketUpgrade getUpgrade( @Nonnull ItemStack stack ) { - NbtCompound compound = stack.getTag(); + NbtCompound compound = stack.getNbt(); return compound != null && compound.contains( NBT_UPGRADE ) ? PocketUpgrades.get( compound.getString( NBT_UPGRADE ) ) : null; } @@ -350,7 +350,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I private static void setComputerID( @Nonnull ItemStack stack, int computerID ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_ID, computerID ); } @@ -402,25 +402,25 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I private static int getInstanceID( @Nonnull ItemStack stack ) { - NbtCompound nbt = stack.getTag(); + NbtCompound nbt = stack.getNbt(); return nbt != null && nbt.contains( NBT_INSTANCE ) ? nbt.getInt( NBT_INSTANCE ) : -1; } private static int getSessionID( @Nonnull ItemStack stack ) { - NbtCompound nbt = stack.getTag(); + NbtCompound nbt = stack.getNbt(); return nbt != null && nbt.contains( NBT_SESSION ) ? nbt.getInt( NBT_SESSION ) : -1; } private static void setInstanceID( @Nonnull ItemStack stack, int instanceID ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_INSTANCE, instanceID ); } private static void setSessionID( @Nonnull ItemStack stack, int sessionID ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_SESSION, sessionID ); } diff --git a/src/main/java/dan200/computercraft/shared/turtle/blocks/TileTurtle.java b/src/main/java/dan200/computercraft/shared/turtle/blocks/TileTurtle.java index 5c3abab4a..acb6cbac7 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/blocks/TileTurtle.java +++ b/src/main/java/dan200/computercraft/shared/turtle/blocks/TileTurtle.java @@ -48,18 +48,22 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.Collections; -public class TileTurtle extends TileComputerBase implements ITurtleTile, DefaultInventory +public class TileTurtle extends TileComputerBase + implements ITurtleTile, DefaultInventory { public static final int INVENTORY_SIZE = 16; public static final int INVENTORY_WIDTH = 4; public static final int INVENTORY_HEIGHT = 4; - private final DefaultedList inventory = DefaultedList.ofSize( INVENTORY_SIZE, ItemStack.EMPTY ); - private final DefaultedList previousInventory = DefaultedList.ofSize( INVENTORY_SIZE, ItemStack.EMPTY ); + private final DefaultedList inventory = DefaultedList + .ofSize( INVENTORY_SIZE, ItemStack.EMPTY ); + private final DefaultedList previousInventory = DefaultedList + .ofSize( INVENTORY_SIZE, ItemStack.EMPTY ); private boolean inventoryChanged = false; private TurtleBrain brain = new TurtleBrain( this ); private MoveState moveState = MoveState.NOT_MOVED; - public TileTurtle( BlockEntityType type, ComputerFamily family, BlockPos pos, BlockState state ) + public TileTurtle( BlockEntityType type, + ComputerFamily family, BlockPos pos, BlockState state ) { super( type, family, pos, state ); } @@ -133,7 +137,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default @Override public ItemStack getStack( int slot ) { - return slot >= 0 && slot < INVENTORY_SIZE ? inventory.get( slot ) : ItemStack.EMPTY; + return slot >= 0 && slot < INVENTORY_SIZE ? inventory.get( slot ) + : ItemStack.EMPTY; } @Nonnull @@ -174,7 +179,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default @Override public void setStack( int i, @Nonnull ItemStack stack ) { - if( i >= 0 && i < INVENTORY_SIZE && !InventoryUtil.areItemsEqual( stack, inventory.get( i ) ) ) + if( i >= 0 && i < INVENTORY_SIZE + && !InventoryUtil.areItemsEqual( stack, inventory.get( i ) ) ) { inventory.set( i, stack ); onInventoryDefinitelyChanged(); @@ -224,7 +230,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default } return ActionResult.SUCCESS; } - else if( currentItem.getItem() == Items.WATER_BUCKET && brain.getColour() != -1 ) + else if( currentItem.getItem() == Items.WATER_BUCKET + && brain.getColour() != -1 ) { // Water to remove turtle colour if( !getWorld().isClient ) @@ -234,7 +241,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default brain.setColour( -1 ); if( !player.isCreative() ) { - player.setStackInHand( hand, new ItemStack( Items.BUCKET ) ); + player.setStackInHand( hand, + new ItemStack( Items.BUCKET ) ); player.getInventory().markDirty(); } } @@ -265,9 +273,10 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default } } - public static void tick( World world, BlockPos pos, BlockState state, TileTurtle tileTurtle) + public static void tick( World world, BlockPos pos, BlockState state, + TileTurtle tileTurtle ) { - tileTurtle.brain.update(); + tileTurtle.brain.update(); if( !tileTurtle.getWorld().isClient && tileTurtle.inventoryChanged ) { ServerComputer computer = tileTurtle.getServerComputer(); @@ -279,30 +288,27 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default tileTurtle.inventoryChanged = false; for( int n = 0; n < tileTurtle.size(); n++ ) { - tileTurtle.previousInventory.set( n, - tileTurtle.getStack( n ).copy() ); + tileTurtle.previousInventory.set( n, tileTurtle.getStack( n ).copy() ); } } } @Override protected void updateBlockState( ComputerState newState ) - { - } + {} @Nonnull @Override public NbtCompound writeNbt( @Nonnull NbtCompound nbt ) { - super.readNbt( nbt ); + super.readNbt( nbt ); // Write inventory NbtList nbttaglist = new NbtList(); for( int i = 0; i < INVENTORY_SIZE; i++ ) { - if( !inventory.get( i ) - .isEmpty() ) + if( !inventory.get( i ).isEmpty() ) { - NbtCompound tag = new NbtCompound(); + NbtCompound tag = new NbtCompound(); tag.putByte( "Slot", (byte) i ); inventory.get( i ).writeNbt( tag ); nbttaglist.add( tag ); @@ -334,8 +340,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default if( slot < size() ) { inventory.set( slot, ItemStack.fromNbt( tag ) ); - previousInventory.set( slot, inventory.get( slot ) - .copy() ); + previousInventory.set( slot, inventory.get( slot ).copy() ); } } @@ -360,11 +365,9 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default @Override protected ServerComputer createComputer( int instanceID, int id ) { - ServerComputer computer = new ServerComputer( getWorld(), - id, label, - instanceID, getFamily(), - ComputerCraft.turtleTermWidth, - ComputerCraft.turtleTermHeight ); + ServerComputer computer = new ServerComputer( getWorld(), id, label, instanceID, + getFamily(), ComputerCraft.turtleTermWidth, + ComputerCraft.turtleTermHeight ); computer.setPosition( getPos() ); computer.addAPI( new TurtleAPI( computer.getAPIEnvironment(), getAccess() ) ); brain.setupComputer( computer ); @@ -397,13 +400,17 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default { dir = Direction.NORTH; } - world.setBlockState( pos, - getCachedState().with( BlockTurtle.FACING, dir ) ); + world.setBlockState( pos, getCachedState().with( BlockTurtle.FACING, dir ) ); updateOutput(); updateInput(); onTileEntityChange(); } + public void setBlockPos( BlockPos pos ) + { + this.pos.; + } + public void onTileEntityChange() { super.markDirty(); @@ -412,7 +419,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default private boolean hasPeripheralUpgradeOnSide( ComputerSide side ) { ITurtleUpgrade upgrade; - switch( side ) + switch ( side ) { case RIGHT: upgrade = getUpgrade( TurtleSide.RIGHT ); @@ -423,8 +430,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default default: return false; } - return upgrade != null && upgrade.getType() - .isPeripheral(); + return upgrade != null && upgrade.getType().isPeripheral(); } // IInventory @@ -525,8 +531,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default boolean changed = false; for( int i = 0; i < INVENTORY_SIZE; i++ ) { - if( !inventory.get( i ) - .isEmpty() ) + if( !inventory.get( i ).isEmpty() ) { inventory.set( i, ItemStack.EMPTY ); changed = true; @@ -556,7 +561,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default @Nullable @Override - public ScreenHandler createMenu( int id, @Nonnull PlayerInventory inventory, @Nonnull PlayerEntity player ) + public ScreenHandler createMenu( int id, @Nonnull PlayerInventory inventory, + @Nonnull PlayerEntity player ) { return new ContainerTurtle( id, inventory, brain ); } diff --git a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java index 5c69905f4..76170b7f8 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java +++ b/src/main/java/dan200/computercraft/shared/turtle/core/TurtlePlayer.java @@ -207,31 +207,11 @@ public final class TurtlePlayer extends FakePlayer { } -// @Override //FIXME: These need to be fixed. -// public void openEditBookScreen( @Nonnull ItemStack stack, @Nonnull Hand hand ) -// { -// } - @Override public void closeHandledScreen() { } - -// @Override -// public void updateCursorStack() -// { -// } - -// @Override -// protected void onStatusEffectApplied( @Nonnull StatusEffectInstance id ) -// { -// } - -// @Override -// protected void onStatusEffectUpgraded( @Nonnull StatusEffectInstance id, boolean apply ) -// { -// } - + @Override protected void onStatusEffectRemoved( @Nonnull StatusEffectInstance effect ) { diff --git a/src/main/java/dan200/computercraft/shared/turtle/items/ItemTurtle.java b/src/main/java/dan200/computercraft/shared/turtle/items/ItemTurtle.java index 4bbfbedc1..4193f3e32 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/items/ItemTurtle.java +++ b/src/main/java/dan200/computercraft/shared/turtle/items/ItemTurtle.java @@ -60,24 +60,24 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem } if( id >= 0 ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_ID, id ); } IColouredItem.setColourBasic( stack, colour ); if( fuelLevel > 0 ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putInt( NBT_FUEL, fuelLevel ); } if( overlay != null ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putString( NBT_OVERLAY, overlay.toString() ); } if( leftUpgrade != null ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putString( NBT_LEFT_UPGRADE, leftUpgrade.getUpgradeID() .toString() ); @@ -85,7 +85,7 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem if( rightUpgrade != null ) { - stack.getOrCreateTag() + stack.getOrCreateNbt() .putString( NBT_RIGHT_UPGRADE, rightUpgrade.getUpgradeID() .toString() ); @@ -148,7 +148,7 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem @Override public ITurtleUpgrade getUpgrade( @Nonnull ItemStack stack, @Nonnull TurtleSide side ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); if( tag == null ) { return null; @@ -161,14 +161,14 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem @Override public int getFuelLevel( @Nonnull ItemStack stack ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); return tag != null && tag.contains( NBT_FUEL ) ? tag.getInt( NBT_FUEL ) : 0; } @Override public Identifier getOverlay( @Nonnull ItemStack stack ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); return tag != null && tag.contains( NBT_OVERLAY ) ? new Identifier( tag.getString( NBT_OVERLAY ) ) : null; } diff --git a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java index 4ef094ed1..2b36437fd 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java +++ b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleInventoryCrafting.java @@ -141,7 +141,7 @@ public class TurtleInventoryCrafting extends CraftingInventory { setStack( slot, remainder ); } - else if( ItemStack.areItemsEqualIgnoreDamage( existing, remainder ) && ItemStack.areTagsEqual( existing, remainder ) ) + else if( ItemStack.areItemsEqualIgnoreDamage( existing, remainder ) && ItemStack.areNbtEqual( existing, remainder ) ) { remainder.increment( existing.getCount() ); setStack( slot, remainder ); diff --git a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java index d9c2e5d0c..113ea0f3b 100644 --- a/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java +++ b/src/main/java/dan200/computercraft/shared/turtle/upgrades/TurtleTool.java @@ -76,7 +76,7 @@ public class TurtleTool extends AbstractTurtleUpgrade @Override public boolean isItemSuitable( @Nonnull ItemStack stack ) { - NbtCompound tag = stack.getTag(); + NbtCompound tag = stack.getNbt(); if( tag == null || tag.isEmpty() ) return true; // Check we've not got anything vaguely interesting on the item. We allow other mods to add their diff --git a/src/main/java/dan200/computercraft/shared/util/FakeNetHandler.java b/src/main/java/dan200/computercraft/shared/util/FakeNetHandler.java index 1c75b1d95..0b7637542 100644 --- a/src/main/java/dan200/computercraft/shared/util/FakeNetHandler.java +++ b/src/main/java/dan200/computercraft/shared/util/FakeNetHandler.java @@ -367,10 +367,5 @@ public class FakeNetHandler extends ServerPlayNetworkHandler public void disableAutoRead() { } - - @Override - public void setCompressionThreshold( int threshold ) - { - } } } diff --git a/src/main/java/dan200/computercraft/shared/util/FixedPointTileEntityType.java b/src/main/java/dan200/computercraft/shared/util/FixedPointTileEntityType.java index d6d7f7768..85fa969c2 100644 --- a/src/main/java/dan200/computercraft/shared/util/FixedPointTileEntityType.java +++ b/src/main/java/dan200/computercraft/shared/util/FixedPointTileEntityType.java @@ -1,61 +1,62 @@ -/* - * This file is part of ComputerCraft - http://www.computercraft.info - * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission. - * Send enquiries to dratcliffe@gmail.com - */ - -package dan200.computercraft.shared.util; - -import net.minecraft.block.Block; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.block.entity.BlockEntityType; - -import javax.annotation.Nonnull; -import java.util.Collections; -import java.util.function.Function; -import java.util.function.Supplier; - -/** - * A {@link BlockEntityType} whose supplier uses itself as an argument. - * - * @param The type of the produced tile entity. - */ -public final class FixedPointTileEntityType extends BlockEntityType -{ - private final Supplier block; - - private FixedPointTileEntityType( Supplier block, Supplier builder ) - { - super( builder, Collections.emptySet(), null ); //FIXME: Replace with the new BlockEntity handlers. - this.block = block; - } - - public static FixedPointTileEntityType create( Supplier block, Function, T> builder ) - { - return new FixedPointSupplier<>( block, builder ).factory; - } - -// @Override -// public boolean supports( @Nonnull Block block ) +///* +// * This file is part of ComputerCraft - http://www.computercraft.info +// * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission. +// * Send enquiries to dratcliffe@gmail.com +// */ +// +//package dan200.computercraft.shared.util; +// +//import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; +//import net.minecraft.block.Block; +//import net.minecraft.block.entity.BlockEntity; +//import net.minecraft.block.entity.BlockEntityType; +// +//import javax.annotation.Nonnull; +//import java.util.Collections; +//import java.util.function.Function; +//import java.util.function.Supplier; +// +///** +// * A {@link BlockEntityType} whose supplier uses itself as an argument. +// * +// * @param The type of the produced tile entity. +// */ +//public final class FixedPointTileEntityType extends BlockEntityType +//{ +// private final Supplier block; +// +// private FixedPointTileEntityType( Supplier block, Supplier builder ) // { -// return block == this.block.get(); +// super( builder, Collections.emptySet(), null ); //FIXME: Replace with the new BlockEntity handlers. +// this.block = block; // } - - private static final class FixedPointSupplier implements Supplier - { - final FixedPointTileEntityType factory; - private final Function, T> builder; - - private FixedPointSupplier( Supplier block, Function, T> builder ) - { - factory = new FixedPointTileEntityType<>( block, this ); - this.builder = builder; - } - - @Override - public T get() - { - return builder.apply( factory ); - } - } -} +// +// public static FixedPointTileEntityType create( Supplier block, Function, T> builder ) +// { +// return new FixedPointSupplier<>( block, builder ).factory; +// } +// +//// @Override +//// public boolean supports( @Nonnull Block block ) +//// { +//// return block == this.block.get(); +//// } +// +// private static final class FixedPointSupplier implements Supplier +// { +// final FixedPointTileEntityType factory; +// private final Function, T> builder; +// +// private FixedPointSupplier( Supplier block, Function, T> builder ) +// { +// factory = FabricBlockEntityTypeBuilder.create( this, block ); +// this.builder = builder; +// } +// +// @Override +// public T get() +// { +// return builder.apply( factory ); +// } +// } +//} diff --git a/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java b/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java index ef753f60e..9d836718b 100644 --- a/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java +++ b/src/main/java/dan200/computercraft/shared/util/InventoryUtil.java @@ -30,7 +30,7 @@ public final class InventoryUtil public static boolean areItemsStackable( @Nonnull ItemStack a, @Nonnull ItemStack b ) { - return a == b || (a.getItem() == b.getItem() && ItemStack.areTagsEqual( a, b )); + return a == b || (a.getItem() == b.getItem() && ItemStack.areNbtEqual( a, b )); } // Methods for finding inventories: diff --git a/src/main/java/dan200/computercraft/shared/util/ItemStorage.java b/src/main/java/dan200/computercraft/shared/util/ItemStorage.java index 0bbd878ca..2868ad395 100644 --- a/src/main/java/dan200/computercraft/shared/util/ItemStorage.java +++ b/src/main/java/dan200/computercraft/shared/util/ItemStorage.java @@ -34,7 +34,7 @@ public interface ItemStorage static boolean areStackable( @Nonnull ItemStack a, @Nonnull ItemStack b ) { - return a == b || (a.getItem() == b.getItem() && ItemStack.areTagsEqual( a, b )); + return a == b || (a.getItem() == b.getItem() && ItemStack.areNbtEqual( a, b )); } int size();