mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-09-01 18:17:55 +00:00
Now only need to mess with rendering...
This commit is contained in:
16
cc-restiched_client.launch
Normal file
16
cc-restiched_client.launch
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/cc-restiched"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.fabricmc.devlaunchinjector.Main"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value=""/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="cc-restiched"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dfabric.dli.config=/home/cloud/Code/Java/cc-restitched/.gradle/loom-cache/launch.cfg -Dfabric.dli.env=client -Dfabric.dli.main=net.fabricmc.loader.launch.knot.KnotClient"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:cc-restiched}/run"/>
|
||||||
|
</launchConfiguration>
|
16
cc-restiched_server.launch
Normal file
16
cc-restiched_server.launch
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
|
<listEntry value="/cc-restiched"/>
|
||||||
|
</listAttribute>
|
||||||
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
|
<listEntry value="4"/>
|
||||||
|
</listAttribute>
|
||||||
|
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="net.fabricmc.devlaunchinjector.Main"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="nogui"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="cc-restiched"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dfabric.dli.config=/home/cloud/Code/Java/cc-restitched/.gradle/loom-cache/launch.cfg -Dfabric.dli.env=server -Dfabric.dli.main=net.fabricmc.loader.launch.knot.KnotServer"/>
|
||||||
|
<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:cc-restiched}/run"/>
|
||||||
|
</launchConfiguration>
|
@@ -5,13 +5,13 @@ org.gradle.jvmargs=-Xmx1G
|
|||||||
mod_version=1.96.1-rc1
|
mod_version=1.96.1-rc1
|
||||||
|
|
||||||
# Minecraft properties
|
# Minecraft properties
|
||||||
mc_version=1.17
|
mc_version=1.17.1
|
||||||
mappings_version=9
|
mappings_version=61
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
cloth_config_version=5.0.34
|
cloth_config_version=5.0.34
|
||||||
fabric_loader_version=0.11.6
|
fabric_loader_version=0.11.7
|
||||||
fabric_api_version=0.36.0+1.16
|
fabric_api_version=0.40.1+1.17
|
||||||
jankson_version=1.2.0
|
jankson_version=1.2.0
|
||||||
modmenu_version=2.0.2
|
modmenu_version=2.0.2
|
||||||
cloth_api_version=2.0.54
|
cloth_api_version=2.0.54
|
||||||
|
@@ -76,8 +76,8 @@ public interface IUpgradeBase
|
|||||||
|
|
||||||
// A more expanded form of ItemStack.areShareTagsEqual, but allowing an empty tag to be equal to a
|
// A more expanded form of ItemStack.areShareTagsEqual, but allowing an empty tag to be equal to a
|
||||||
// null one.
|
// null one.
|
||||||
NbtCompound shareTag = stack.getTag();
|
NbtCompound shareTag = stack.getNbt();
|
||||||
NbtCompound craftingShareTag = crafting.getTag();
|
NbtCompound craftingShareTag = crafting.getNbt();
|
||||||
if( shareTag == craftingShareTag ) return true;
|
if( shareTag == craftingShareTag ) return true;
|
||||||
if( shareTag == null ) return craftingShareTag.isEmpty();
|
if( shareTag == null ) return craftingShareTag.isEmpty();
|
||||||
if( craftingShareTag == null ) return shareTag.isEmpty();
|
if( craftingShareTag == null ) return shareTag.isEmpty();
|
||||||
|
@@ -23,15 +23,15 @@ import javax.annotation.Nonnull;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public final class FixedWidthFontRenderer
|
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_HEIGHT = 9;
|
||||||
public static final int FONT_WIDTH = 6;
|
public static final int FONT_WIDTH = 6;
|
||||||
public static final float WIDTH = 256.0f;
|
public static final float WIDTH = 256.0f;
|
||||||
public static final float BACKGROUND_START = (WIDTH - 6.0f) / WIDTH;
|
public static final float BACKGROUND_START = (WIDTH - 6.0f) / WIDTH;
|
||||||
public static final float BACKGROUND_END = (WIDTH - 4.0f) / WIDTH;
|
public static final float BACKGROUND_END = (WIDTH - 4.0f) / WIDTH;
|
||||||
private static final Matrix4f IDENTITY = AffineTransformation.identity()
|
private static final Matrix4f IDENTITY = AffineTransformation.identity()
|
||||||
.getMatrix();
|
.getMatrix();
|
||||||
private static final Identifier FONT = new Identifier( "computercraft", "textures/gui/term_font.png" );
|
public static final Identifier FONT = new Identifier( "computercraft", "textures/gui/term_font.png" );
|
||||||
public static final RenderLayer TYPE = Type.MAIN;
|
public static final RenderLayer TYPE = Type.MAIN;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -152,9 +152,9 @@ public class GuiComputer<T extends ContainerComputerBase> extends HandledScreen<
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick()
|
public void handledScreenTick()
|
||||||
{
|
{
|
||||||
super.tick();
|
super.handledScreenTick(); // FIXME most likely unneeded.
|
||||||
terminal.update();
|
terminal.update();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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.ClientBlockEntityEvents;
|
||||||
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents;
|
||||||
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
|
import net.fabricmc.fabric.api.client.model.ModelLoadingRegistry;
|
||||||
import net.fabricmc.fabric.api.client.rendereregistry.v1.BlockEntityRendererRegistry;
|
import net.fabricmc.fabric.api.client.rendering.v1.BlockEntityRendererRegistry;
|
||||||
import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
import net.fabricmc.fabric.api.client.rendering.v1.EntityRendererRegistry;
|
||||||
import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
|
import net.fabricmc.fabric.api.client.screenhandler.v1.ScreenRegistry;
|
||||||
import net.fabricmc.fabric.api.event.client.ClientSpriteRegistryCallback;
|
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.ModelPredicateProvider;
|
||||||
|
import net.minecraft.client.item.UnclampedModelPredicateProvider;
|
||||||
import net.minecraft.client.render.RenderLayer;
|
import net.minecraft.client.render.RenderLayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.screen.PlayerScreenHandler;
|
import net.minecraft.screen.PlayerScreenHandler;
|
||||||
@@ -82,10 +83,10 @@ public final class ComputerCraftProxyClient implements ClientModInitializer
|
|||||||
BlockRenderLayerMap.INSTANCE.putBlock( ComputerCraftRegistry.ModBlocks.MONITOR_ADVANCED, RenderLayer.getCutout() );
|
BlockRenderLayerMap.INSTANCE.putBlock( ComputerCraftRegistry.ModBlocks.MONITOR_ADVANCED, RenderLayer.getCutout() );
|
||||||
|
|
||||||
// Setup TESRs
|
// Setup TESRs
|
||||||
BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.MONITOR_NORMAL, TileEntityMonitorRenderer::new );
|
BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.MONITOR_NORMAL, TileEntityMonitorRenderer::new );
|
||||||
BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.MONITOR_ADVANCED, TileEntityMonitorRenderer::new );
|
BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.MONITOR_ADVANCED, TileEntityMonitorRenderer::new );
|
||||||
BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.TURTLE_NORMAL, TileEntityTurtleRenderer::new );
|
BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.TURTLE_NORMAL, TileEntityTurtleRenderer::new );
|
||||||
BlockEntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModTiles.TURTLE_ADVANCED, TileEntityTurtleRenderer::new );
|
BlockEntityRendererRegistry.register( ComputerCraftRegistry.ModTiles.TURTLE_ADVANCED, TileEntityTurtleRenderer::new );
|
||||||
|
|
||||||
ClientSpriteRegistryCallback.event( PlayerScreenHandler.BLOCK_ATLAS_TEXTURE )
|
ClientSpriteRegistryCallback.event( PlayerScreenHandler.BLOCK_ATLAS_TEXTURE )
|
||||||
.register( ClientRegistry::onTextureStitchEvent );
|
.register( ClientRegistry::onTextureStitchEvent );
|
||||||
@@ -94,15 +95,15 @@ public final class ComputerCraftProxyClient implements ClientModInitializer
|
|||||||
TurtleModelLoader.INSTANCE.loadModel(
|
TurtleModelLoader.INSTANCE.loadModel(
|
||||||
name ) : null );
|
name ) : null );
|
||||||
|
|
||||||
EntityRendererRegistry.INSTANCE.register( ComputerCraftRegistry.ModEntities.TURTLE_PLAYER, TurtlePlayerRenderer::new );
|
EntityRendererRegistry.register( ComputerCraftRegistry.ModEntities.TURTLE_PLAYER, TurtlePlayerRenderer::new );
|
||||||
|
|
||||||
registerItemProperty( "state",
|
registerItemProperty( "state",
|
||||||
( stack, world, player ) -> ItemPocketComputer.getState( stack )
|
( stack, world, player, integer ) -> ItemPocketComputer.getState( stack )
|
||||||
.ordinal(),
|
.ordinal(),
|
||||||
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_NORMAL,
|
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_NORMAL,
|
||||||
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED );
|
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED );
|
||||||
registerItemProperty( "state",
|
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_NORMAL,
|
||||||
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED );
|
() -> ComputerCraftRegistry.ModItems.POCKET_COMPUTER_ADVANCED );
|
||||||
ClientRegistry.onItemColours();
|
ClientRegistry.onItemColours();
|
||||||
@@ -127,12 +128,12 @@ public final class ComputerCraftProxyClient implements ClientModInitializer
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SafeVarargs
|
@SafeVarargs
|
||||||
private static void registerItemProperty( String name, ModelPredicateProvider getter, Supplier<? extends Item>... items )
|
private static void registerItemProperty( String name, UnclampedModelPredicateProvider getter, Supplier<? extends Item>... items )
|
||||||
{
|
{
|
||||||
Identifier id = new Identifier( ComputerCraft.MOD_ID, name );
|
Identifier id = new Identifier( ComputerCraft.MOD_ID, name );
|
||||||
for( Supplier<? extends Item> item : items )
|
for( Supplier<? extends Item> item : items )
|
||||||
{
|
{
|
||||||
ModelPredicateProviderRegistrySpecificAccessor.callRegister( item.get(), id, getter );
|
FabricModelPredicateProviderRegistry.register( item.get(), id, getter );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -89,7 +89,7 @@ public class ComputerBorderRenderer
|
|||||||
|
|
||||||
render( IDENTITY, buffer, x, y, z, width, height );
|
render( IDENTITY, buffer, x, y, z, width, height );
|
||||||
|
|
||||||
RenderSystem.enableDepthTest(); //TODO: enableAlphaTest(). FIXME
|
// RenderSystem.enableDepthTest(); //TODO: enableAlphaTest(). FIXME
|
||||||
tessellator.draw();
|
tessellator.draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -19,7 +19,7 @@ import static dan200.computercraft.client.gui.FixedWidthFontRenderer.FONT_HEIGHT
|
|||||||
import static dan200.computercraft.shared.media.items.ItemPrintout.LINES_PER_PAGE;
|
import static dan200.computercraft.shared.media.items.ItemPrintout.LINES_PER_PAGE;
|
||||||
|
|
||||||
public final class PrintoutRenderer
|
public final class PrintoutRenderer
|
||||||
{ //FIXME Use BufferBuilders
|
{
|
||||||
/**
|
/**
|
||||||
* Width of a page.
|
* Width of a page.
|
||||||
*/
|
*/
|
||||||
@@ -189,20 +189,26 @@ public final class PrintoutRenderer
|
|||||||
|
|
||||||
private static final class Type extends RenderLayer
|
private static final class Type extends RenderLayer
|
||||||
{
|
{
|
||||||
|
|
||||||
static final RenderLayer TYPE = RenderLayer.of( "printout_background",
|
static final RenderLayer TYPE = RenderLayer.of( "printout_background",
|
||||||
VertexFormats.POSITION_TEXTURE,
|
VertexFormats.POSITION_TEXTURE,
|
||||||
VertexFormat.DrawMode.QUADS,
|
GL11.GL_QUADS,
|
||||||
1024,
|
1024,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
// useDelegate, needsSorting
|
// useDelegate, needsSorting
|
||||||
RenderLayer.MultiPhaseParameters.builder()
|
Type.MultiPhaseParameters.builder()
|
||||||
.texture( new RenderPhase.Texture( BG, false, false ) ) // blur, minimap
|
.texture( new RenderPhase.Texture( BG, false, false ) ) // blur, minimap
|
||||||
.transparency( TRANSLUCENT_TRANSPARENCY )
|
.transparency( TRANSLUCENT_TRANSPARENCY)
|
||||||
.lightmap( DISABLE_LIGHTMAP )
|
.lightmap( DISABLE_LIGHTMAP )
|
||||||
.build( false ));
|
.build( false ) );
|
||||||
|
|
||||||
private Type( String name, VertexFormat vertexFormat, VertexFormat.DrawMode drawMode, int expectedBufferSize, boolean hasCrumbling, boolean translucent, RenderLayer.MultiPhaseParameters phases, Runnable setup, Runnable destroy )
|
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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,7 @@ import net.minecraft.client.gl.VertexBuffer;
|
|||||||
import net.minecraft.client.render.*;
|
import net.minecraft.client.render.*;
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
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.client.util.GlAllocationUtils;
|
||||||
import net.minecraft.util.math.AffineTransformation;
|
import net.minecraft.util.math.AffineTransformation;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
@@ -47,11 +48,10 @@ public class TileEntityMonitorRenderer implements BlockEntityRenderer<TileMonito
|
|||||||
.getMatrix();
|
.getMatrix();
|
||||||
private static ByteBuffer tboContents;
|
private static ByteBuffer tboContents;
|
||||||
|
|
||||||
public TileEntityMonitorRenderer( BlockEntityRenderDispatcher rendererDispatcher )
|
public TileEntityMonitorRenderer( BlockEntityRendererFactory.Context context )
|
||||||
{
|
{
|
||||||
super( rendererDispatcher );
|
// super( rendererDispatcher );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render( @Nonnull TileMonitor monitor, float partialTicks, @Nonnull MatrixStack transform, @Nonnull VertexConsumerProvider renderer,
|
public void render( @Nonnull TileMonitor monitor, float partialTicks, @Nonnull MatrixStack transform, @Nonnull VertexConsumerProvider renderer,
|
||||||
int lightmapCoord, int overlayLight )
|
int lightmapCoord, int overlayLight )
|
||||||
@@ -198,22 +198,21 @@ public class TileEntityMonitorRenderer implements BlockEntityRenderer<TileMonito
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
monitorBuffer.flip();
|
monitorBuffer.flip();
|
||||||
|
GlStateManager._glBindBuffer( GL31.GL_TEXTURE_BUFFER, monitor.tboBuffer );
|
||||||
GlStateManager.bindBuffers( GL31.GL_TEXTURE_BUFFER, monitor.tboBuffer );
|
GlStateManager._glBufferData( GL31.GL_TEXTURE_BUFFER, monitorBuffer, GL20.GL_STATIC_DRAW );
|
||||||
GlStateManager.bufferData( GL31.GL_TEXTURE_BUFFER, monitorBuffer, GL20.GL_STATIC_DRAW );
|
GlStateManager._glBindBuffer( GL31.GL_TEXTURE_BUFFER, 0 );
|
||||||
GlStateManager.bindBuffers( GL31.GL_TEXTURE_BUFFER, 0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Nobody knows what they're doing!
|
// Nobody knows what they're doing!
|
||||||
GlStateManager.activeTexture( MonitorTextureBufferShader.TEXTURE_INDEX );
|
GlStateManager._activeTexture( MonitorTextureBufferShader.TEXTURE_INDEX );
|
||||||
GL11.glBindTexture( GL31.GL_TEXTURE_BUFFER, monitor.tboTexture );
|
GL11.glBindTexture( GL31.GL_TEXTURE_BUFFER, monitor.tboTexture );
|
||||||
GlStateManager.activeTexture( GL13.GL_TEXTURE0 );
|
GlStateManager._activeTexture( GL13.GL_TEXTURE0 );
|
||||||
|
|
||||||
MonitorTextureBufferShader.setupUniform( matrix, width, height, terminal.getPalette(), !monitor.isColour() );
|
MonitorTextureBufferShader.setupUniform( matrix, width, height, terminal.getPalette(), !monitor.isColour() );
|
||||||
|
|
||||||
Tessellator tessellator = Tessellator.getInstance();
|
Tessellator tessellator = Tessellator.getInstance();
|
||||||
BufferBuilder buffer = tessellator.getBuffer();
|
BufferBuilder buffer = tessellator.getBuffer();
|
||||||
buffer.begin( GL11.GL_TRIANGLE_STRIP, VertexFormats.POSITION );
|
buffer.begin( VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION );
|
||||||
buffer.vertex( -xMargin, -yMargin, 0 )
|
buffer.vertex( -xMargin, -yMargin, 0 )
|
||||||
.next();
|
.next();
|
||||||
buffer.vertex( -xMargin, pixelHeight + yMargin, 0 )
|
buffer.vertex( -xMargin, pixelHeight + yMargin, 0 )
|
||||||
@@ -224,7 +223,7 @@ public class TileEntityMonitorRenderer implements BlockEntityRenderer<TileMonito
|
|||||||
.next();
|
.next();
|
||||||
tessellator.draw();
|
tessellator.draw();
|
||||||
|
|
||||||
GlStateManager.useProgram( 0 );
|
GlStateManager._glUseProgram( 0 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,8 +251,9 @@ public class TileEntityMonitorRenderer implements BlockEntityRenderer<TileMonito
|
|||||||
|
|
||||||
vbo.bind();
|
vbo.bind();
|
||||||
FixedWidthFontRenderer.TYPE.getVertexFormat()
|
FixedWidthFontRenderer.TYPE.getVertexFormat()
|
||||||
.startDrawing( 0L );
|
.startDrawing();
|
||||||
vbo.draw( matrix, FixedWidthFontRenderer.TYPE.getDrawMode() );
|
// vbo.draw( matrix, FixedWidthFontRenderer.TYPE.getDrawMode() );
|
||||||
|
vbo.drawElements(); //FIXME: Is this ok?
|
||||||
VertexBuffer.unbind();
|
VertexBuffer.unbind();
|
||||||
FixedWidthFontRenderer.TYPE.getVertexFormat()
|
FixedWidthFontRenderer.TYPE.getVertexFormat()
|
||||||
.endDrawing();
|
.endDrawing();
|
||||||
|
@@ -21,6 +21,7 @@ import net.minecraft.client.render.VertexConsumer;
|
|||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
||||||
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
|
||||||
|
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.BakedModelManager;
|
import net.minecraft.client.render.model.BakedModelManager;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
import net.minecraft.client.render.model.BakedQuad;
|
||||||
@@ -47,11 +48,11 @@ public class TileEntityTurtleRenderer implements BlockEntityRenderer<TileTurtle>
|
|||||||
|
|
||||||
private final Random random = new Random( 0 );
|
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 )
|
public static ModelIdentifier getTurtleModel( ComputerFamily family, boolean coloured )
|
||||||
{
|
{
|
||||||
switch( family )
|
switch( family )
|
||||||
@@ -116,11 +117,11 @@ public class TileEntityTurtleRenderer implements BlockEntityRenderer<TileTurtle>
|
|||||||
// Render the label
|
// Render the label
|
||||||
String label = turtle.createProxy()
|
String label = turtle.createProxy()
|
||||||
.getLabel();
|
.getLabel();
|
||||||
HitResult hit = dispatcher.crosshairTarget;
|
MinecraftClient mc = MinecraftClient.getInstance();
|
||||||
|
HitResult hit = mc.crosshairTarget;
|
||||||
if( label != null && hit.getType() == HitResult.Type.BLOCK && turtle.getPos()
|
if( label != null && hit.getType() == HitResult.Type.BLOCK && turtle.getPos()
|
||||||
.equals( ((BlockHitResult) hit).getBlockPos() ) )
|
.equals( ((BlockHitResult) hit).getBlockPos() ) )
|
||||||
{
|
{
|
||||||
MinecraftClient mc = MinecraftClient.getInstance();
|
|
||||||
TextRenderer font = mc.textRenderer;
|
TextRenderer font = mc.textRenderer;
|
||||||
|
|
||||||
transform.push();
|
transform.push();
|
||||||
|
@@ -120,9 +120,9 @@ public class TurtleMultiModel implements BakedModel
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Sprite getSprite()
|
public Sprite getParticleSprite()
|
||||||
{
|
{
|
||||||
return baseModel.getSprite();
|
return baseModel.getParticleSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@@ -10,6 +10,7 @@ import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry;
|
|||||||
import net.minecraft.client.render.VertexConsumerProvider;
|
import net.minecraft.client.render.VertexConsumerProvider;
|
||||||
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
import net.minecraft.client.render.entity.EntityRenderDispatcher;
|
||||||
import net.minecraft.client.render.entity.EntityRenderer;
|
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.render.entity.EntityRendererFactory.Context;
|
||||||
import net.minecraft.client.util.math.MatrixStack;
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
@@ -18,14 +19,9 @@ import javax.annotation.Nonnull;
|
|||||||
|
|
||||||
public class TurtlePlayerRenderer extends EntityRenderer<TurtlePlayer>
|
public class TurtlePlayerRenderer extends EntityRenderer<TurtlePlayer>
|
||||||
{ //FIXME Make sure this isn't an issue. Context was EntityRenderDispatcher.
|
{ //FIXME Make sure this isn't an issue. Context was EntityRenderDispatcher.
|
||||||
public TurtlePlayerRenderer( Context renderManager )
|
public TurtlePlayerRenderer( EntityRendererFactory.Context context )
|
||||||
{
|
{
|
||||||
super( renderManager );
|
super( context );
|
||||||
}
|
|
||||||
|
|
||||||
public TurtlePlayerRenderer( Context entityRenderDispatcher, EntityRendererRegistry.Context context )
|
|
||||||
{
|
|
||||||
super( entityRenderDispatcher );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -145,9 +145,9 @@ public class TurtleSmartItemModel implements BakedModel
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Sprite getSprite()
|
public Sprite getParticleSprite()
|
||||||
{
|
{
|
||||||
return familyModel.getSprite();
|
return familyModel.getParticleSprite();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
@@ -34,7 +34,7 @@ public class MixinServerPlayerInteractionManager
|
|||||||
ActionResult actionResult = state.onUse( world, player, hand, hitResult );
|
ActionResult actionResult = state.onUse( world, player, hand, hitResult );
|
||||||
if( actionResult.isAccepted() )
|
if( actionResult.isAccepted() )
|
||||||
{
|
{
|
||||||
Criteria.ITEM_USED_ON_BLOCK.test( player, pos, stack );
|
Criteria.ITEM_USED_ON_BLOCK.trigger( player, pos, stack );
|
||||||
cir.setReturnValue( actionResult );
|
cir.setReturnValue( actionResult );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -42,7 +42,6 @@ import dan200.computercraft.shared.turtle.core.TurtlePlayer;
|
|||||||
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
|
import dan200.computercraft.shared.turtle.inventory.ContainerTurtle;
|
||||||
import dan200.computercraft.shared.turtle.items.ItemTurtle;
|
import dan200.computercraft.shared.turtle.items.ItemTurtle;
|
||||||
import dan200.computercraft.shared.turtle.upgrades.*;
|
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.entity.FabricBlockEntityTypeBuilder;
|
||||||
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
|
||||||
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
|
import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry;
|
||||||
@@ -150,48 +149,53 @@ public final class ComputerCraftRegistry
|
|||||||
public static class ModTiles
|
public static class ModTiles
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final BlockEntityType<TileMonitor> MONITOR_NORMAL = ofBlock( () -> ModBlocks.MONITOR_NORMAL,
|
public static final BlockEntityType<TileMonitor> MONITOR_NORMAL = FabricBlockEntityTypeBuilder
|
||||||
"monitor_normal",
|
.create( ( blockPos, blockState ) -> new TileMonitor( ModTiles.MONITOR_NORMAL, false, blockPos, blockState ),
|
||||||
f -> new TileMonitor( f, false, null, null ) );
|
ModBlocks.MONITOR_NORMAL )
|
||||||
public static final BlockEntityType<TileMonitor> MONITOR_ADVANCED = ofBlock( () -> ModBlocks.MONITOR_ADVANCED,
|
.build();
|
||||||
"monitor_advanced",
|
public static final BlockEntityType<TileMonitor> MONITOR_ADVANCED = FabricBlockEntityTypeBuilder
|
||||||
f -> new TileMonitor( f, true, null, null ) );
|
.create( ( blockPos, blockState ) -> new TileMonitor( ModTiles.MONITOR_ADVANCED, false, blockPos, blockState ),
|
||||||
public static final BlockEntityType<TileComputer> COMPUTER_NORMAL = ofBlock( () -> ModBlocks.COMPUTER_NORMAL,
|
ModBlocks.MONITOR_ADVANCED )
|
||||||
"computer_normal",
|
.build();
|
||||||
f -> new TileComputer( ComputerFamily.NORMAL, f, null, null ) );
|
public static final BlockEntityType<TileComputer> COMPUTER_NORMAL = FabricBlockEntityTypeBuilder.create(
|
||||||
public static final BlockEntityType<TileComputer> COMPUTER_ADVANCED = ofBlock( () -> ModBlocks.COMPUTER_ADVANCED,
|
( blockPos, blockState ) -> new TileComputer( ComputerFamily.NORMAL, ModTiles.COMPUTER_NORMAL, blockPos, blockState ),
|
||||||
"computer_advanced",
|
ModBlocks.COMPUTER_NORMAL ).build();
|
||||||
f -> new TileComputer( ComputerFamily.ADVANCED, f, null, null ) );
|
public static final BlockEntityType<TileComputer> COMPUTER_ADVANCED = FabricBlockEntityTypeBuilder
|
||||||
public static final BlockEntityType<TileCommandComputer> COMPUTER_COMMAND = ofBlock( () -> ModBlocks.COMPUTER_COMMAND,
|
.create( ( blockPos, blockState ) -> new TileComputer( ComputerFamily.ADVANCED, ModTiles.COMPUTER_ADVANCED, blockPos,
|
||||||
"computer_command",
|
blockState ), ModBlocks.COMPUTER_ADVANCED )
|
||||||
f -> new TileCommandComputer( ComputerFamily.COMMAND, f, null, null ) );
|
.build();
|
||||||
public static final BlockEntityType<TileTurtle> TURTLE_NORMAL = ofBlock( () -> ModBlocks.TURTLE_NORMAL,
|
public static final BlockEntityType<TileCommandComputer> COMPUTER_COMMAND = FabricBlockEntityTypeBuilder
|
||||||
"turtle_normal",
|
.create( ( blockPos, blockState ) -> new TileCommandComputer( ComputerFamily.COMMAND, ModTiles.COMPUTER_COMMAND, blockPos,
|
||||||
f -> new TileTurtle( f, ComputerFamily.NORMAL ) );
|
blockState ), ModBlocks.COMPUTER_COMMAND )
|
||||||
public static final BlockEntityType<TileTurtle> TURTLE_ADVANCED = ofBlock( () -> ModBlocks.TURTLE_ADVANCED,
|
.build();
|
||||||
"turtle_advanced",
|
public static final BlockEntityType<TileTurtle> TURTLE_NORMAL = FabricBlockEntityTypeBuilder.create(
|
||||||
f -> new TileTurtle( f, ComputerFamily.ADVANCED ) );
|
( blockPos, blockState ) -> new TileTurtle( ModTiles.TURTLE_NORMAL, ComputerFamily.NORMAL, blockPos, blockState ),
|
||||||
public static final BlockEntityType<TileSpeaker> SPEAKER = ofBlock( () -> ModBlocks.SPEAKER, "speaker", TileSpeaker::new );
|
ModBlocks.TURTLE_NORMAL ).build();
|
||||||
public static final BlockEntityType<TileDiskDrive> DISK_DRIVE = ofBlock( () -> ModBlocks.DISK_DRIVE, "disk_drive", TileDiskDrive::new );
|
public static final BlockEntityType<TileTurtle> TURTLE_ADVANCED = FabricBlockEntityTypeBuilder.create(
|
||||||
public static final BlockEntityType<TilePrinter> PRINTER = ofBlock( () -> ModBlocks.PRINTER, "printer", TilePrinter::new );
|
( blockPos, blockState ) -> new TileTurtle( ModTiles.TURTLE_ADVANCED, ComputerFamily.ADVANCED, blockPos, blockState ),
|
||||||
public static final BlockEntityType<TileWiredModemFull> WIRED_MODEM_FULL = ofBlock( () -> ModBlocks.WIRED_MODEM_FULL,
|
ModBlocks.TURTLE_ADVANCED ).build();
|
||||||
"wired_modem_full",
|
public static final BlockEntityType<TileSpeaker> SPEAKER = FabricBlockEntityTypeBuilder
|
||||||
TileWiredModemFull::new );
|
.create( ( blockPos, blockState ) -> new TileSpeaker( ModTiles.SPEAKER, blockPos, blockState ), ModBlocks.SPEAKER )
|
||||||
public static final BlockEntityType<TileCable> CABLE = ofBlock( () -> ModBlocks.CABLE, "cable", TileCable::new );
|
.build();
|
||||||
public static final BlockEntityType<TileWirelessModem> WIRELESS_MODEM_NORMAL = ofBlock( () -> ModBlocks.WIRELESS_MODEM_NORMAL,
|
public static final BlockEntityType<TileDiskDrive> DISK_DRIVE = FabricBlockEntityTypeBuilder
|
||||||
"wireless_modem_normal",
|
.create( ( blockPos, blockState ) -> new TileDiskDrive( ModTiles.DISK_DRIVE, blockPos, blockState ),
|
||||||
f -> new TileWirelessModem( f, false, null, null ) );
|
ModBlocks.DISK_DRIVE )
|
||||||
public static final BlockEntityType<TileWirelessModem> WIRELESS_MODEM_ADVANCED = ofBlock( () -> ModBlocks.WIRELESS_MODEM_ADVANCED,
|
.build();
|
||||||
"wireless_modem_advanced",
|
public static final BlockEntityType<TilePrinter> PRINTER = FabricBlockEntityTypeBuilder
|
||||||
f -> new TileWirelessModem( f, true ) );
|
.create( ( blockPos, blockState ) -> new TilePrinter( ModTiles.PRINTER, blockPos, blockState ), ModBlocks.PRINTER )
|
||||||
|
.build();
|
||||||
private static <T extends BlockEntity> BlockEntityType<T> ofBlock( Supplier<Block> block, String id, Function<BlockEntityType<T>, T> factory )
|
public static final BlockEntityType<TileWiredModemFull> WIRED_MODEM_FULL = FabricBlockEntityTypeBuilder
|
||||||
{
|
.create( ( blockPos, blockState ) -> new TileWiredModemFull( ModTiles.WIRED_MODEM_FULL, blockPos, blockState ),
|
||||||
FabricBlockEntityTypeBuilder.create(factory, block);
|
ModBlocks.WIRED_MODEM_FULL )
|
||||||
return Registry.register( BLOCK_ENTITY_TYPE,
|
.build();
|
||||||
new Identifier( MOD_ID, id ),
|
public static final BlockEntityType<TileCable> CABLE = FabricBlockEntityTypeBuilder
|
||||||
FabricBlockEntityTypeBuilder.create);
|
.create( ( blockPos, blockState ) -> new TileCable( ModTiles.CABLE, blockPos, blockState ), ModBlocks.CABLE ).build();
|
||||||
}
|
public static final BlockEntityType<TileWirelessModem> 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<TileWirelessModem> 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
|
public static final class ModItems
|
||||||
|
@@ -59,9 +59,9 @@ public enum UserLevel implements Predicate<ServerCommandSource>
|
|||||||
|
|
||||||
if( this == OWNER || this == OWNER_OP )
|
if( this == OWNER || this == OWNER_OP )
|
||||||
{
|
{
|
||||||
MinecraftServer server = source.getMinecraftServer();
|
MinecraftServer server = source.getServer();
|
||||||
Entity sender = source.getEntity();
|
Entity sender = source.getEntity();
|
||||||
if( server.isSinglePlayer() && sender instanceof PlayerEntity &&
|
if( server.isSingleplayer() && sender instanceof PlayerEntity &&
|
||||||
((PlayerEntity) sender).getGameProfile().getName().equalsIgnoreCase( server.getServerModName() ) )
|
((PlayerEntity) sender).getGameProfile().getName().equalsIgnoreCase( server.getServerModName() ) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
|
@@ -66,7 +66,7 @@ public final class HelpingArgumentBuilder extends LiteralArgumentBuilder<ServerC
|
|||||||
// An ugly hack to extract usage information from the dispatcher. We generate a temporary node, generate
|
// An ugly hack to extract usage information from the dispatcher. We generate a temporary node, generate
|
||||||
// the shorthand usage, and emit that.
|
// the shorthand usage, and emit that.
|
||||||
CommandDispatcher<ServerCommandSource> dispatcher = context.getSource()
|
CommandDispatcher<ServerCommandSource> dispatcher = context.getSource()
|
||||||
.getMinecraftServer()
|
.getServer()
|
||||||
.getCommandManager()
|
.getCommandManager()
|
||||||
.getDispatcher();
|
.getDispatcher();
|
||||||
CommandNode<ServerCommandSource> temp = new LiteralCommandNode<>( "_", null, x -> true, null, null, false );
|
CommandNode<ServerCommandSource> temp = new LiteralCommandNode<>( "_", null, x -> true, null, null, false );
|
||||||
|
@@ -20,7 +20,7 @@ public interface IColouredItem
|
|||||||
|
|
||||||
static int getColourBasic( ItemStack stack )
|
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;
|
return tag != null && tag.contains( NBT_COLOUR ) ? tag.getInt( NBT_COLOUR ) : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +35,7 @@ public interface IColouredItem
|
|||||||
{
|
{
|
||||||
if( colour == -1 )
|
if( colour == -1 )
|
||||||
{
|
{
|
||||||
NbtCompound tag = stack.getTag();
|
NbtCompound tag = stack.getNbt();
|
||||||
if( tag != null )
|
if( tag != null )
|
||||||
{
|
{
|
||||||
tag.remove( NBT_COLOUR );
|
tag.remove( NBT_COLOUR );
|
||||||
@@ -43,7 +43,7 @@ public interface IColouredItem
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_COLOUR, colour );
|
.putInt( NBT_COLOUR, colour );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -103,7 +103,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
|
|
||||||
public static void setUpgrade( @Nonnull ItemStack stack, IPocketUpgrade upgrade )
|
public static void setUpgrade( @Nonnull ItemStack stack, IPocketUpgrade upgrade )
|
||||||
{
|
{
|
||||||
NbtCompound compound = stack.getOrCreateTag();
|
NbtCompound compound = stack.getOrCreateNbt();
|
||||||
|
|
||||||
if( upgrade == null )
|
if( upgrade == null )
|
||||||
{
|
{
|
||||||
@@ -121,7 +121,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
|
|
||||||
public static NbtCompound getUpgradeInfo( @Nonnull ItemStack stack )
|
public static NbtCompound getUpgradeInfo( @Nonnull ItemStack stack )
|
||||||
{
|
{
|
||||||
return stack.getOrCreateSubTag( NBT_UPGRADE_INFO );
|
return stack.getOrCreateSubNbt( NBT_UPGRADE_INFO );
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Nullable
|
// @Nullable
|
||||||
@@ -274,7 +274,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
ItemStack result = new ItemStack( this );
|
ItemStack result = new ItemStack( this );
|
||||||
if( id >= 0 )
|
if( id >= 0 )
|
||||||
{
|
{
|
||||||
result.getOrCreateTag()
|
result.getOrCreateNbt()
|
||||||
.putInt( NBT_ID, id );
|
.putInt( NBT_ID, id );
|
||||||
}
|
}
|
||||||
if( label != null )
|
if( label != null )
|
||||||
@@ -283,14 +283,14 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
}
|
}
|
||||||
if( upgrade != null )
|
if( upgrade != null )
|
||||||
{
|
{
|
||||||
result.getOrCreateTag()
|
result.getOrCreateNbt()
|
||||||
.putString( NBT_UPGRADE,
|
.putString( NBT_UPGRADE,
|
||||||
upgrade.getUpgradeID()
|
upgrade.getUpgradeID()
|
||||||
.toString() );
|
.toString() );
|
||||||
}
|
}
|
||||||
if( colour != -1 )
|
if( colour != -1 )
|
||||||
{
|
{
|
||||||
result.getOrCreateTag()
|
result.getOrCreateNbt()
|
||||||
.putInt( NBT_COLOUR, colour );
|
.putInt( NBT_COLOUR, colour );
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -341,7 +341,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
|
|
||||||
public static IPocketUpgrade getUpgrade( @Nonnull ItemStack stack )
|
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;
|
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 )
|
private static void setComputerID( @Nonnull ItemStack stack, int computerID )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_ID, computerID );
|
.putInt( NBT_ID, computerID );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,25 +402,25 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
|
|||||||
|
|
||||||
private static int getInstanceID( @Nonnull ItemStack stack )
|
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;
|
return nbt != null && nbt.contains( NBT_INSTANCE ) ? nbt.getInt( NBT_INSTANCE ) : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getSessionID( @Nonnull ItemStack stack )
|
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;
|
return nbt != null && nbt.contains( NBT_SESSION ) ? nbt.getInt( NBT_SESSION ) : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setInstanceID( @Nonnull ItemStack stack, int instanceID )
|
private static void setInstanceID( @Nonnull ItemStack stack, int instanceID )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_INSTANCE, instanceID );
|
.putInt( NBT_INSTANCE, instanceID );
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setSessionID( @Nonnull ItemStack stack, int sessionID )
|
private static void setSessionID( @Nonnull ItemStack stack, int sessionID )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_SESSION, sessionID );
|
.putInt( NBT_SESSION, sessionID );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -48,18 +48,22 @@ import javax.annotation.Nonnull;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import java.util.Collections;
|
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_SIZE = 16;
|
||||||
public static final int INVENTORY_WIDTH = 4;
|
public static final int INVENTORY_WIDTH = 4;
|
||||||
public static final int INVENTORY_HEIGHT = 4;
|
public static final int INVENTORY_HEIGHT = 4;
|
||||||
private final DefaultedList<ItemStack> inventory = DefaultedList.ofSize( INVENTORY_SIZE, ItemStack.EMPTY );
|
private final DefaultedList<ItemStack> inventory = DefaultedList
|
||||||
private final DefaultedList<ItemStack> previousInventory = DefaultedList.ofSize( INVENTORY_SIZE, ItemStack.EMPTY );
|
.ofSize( INVENTORY_SIZE, ItemStack.EMPTY );
|
||||||
|
private final DefaultedList<ItemStack> previousInventory = DefaultedList
|
||||||
|
.ofSize( INVENTORY_SIZE, ItemStack.EMPTY );
|
||||||
private boolean inventoryChanged = false;
|
private boolean inventoryChanged = false;
|
||||||
private TurtleBrain brain = new TurtleBrain( this );
|
private TurtleBrain brain = new TurtleBrain( this );
|
||||||
private MoveState moveState = MoveState.NOT_MOVED;
|
private MoveState moveState = MoveState.NOT_MOVED;
|
||||||
|
|
||||||
public TileTurtle( BlockEntityType<? extends TileGeneric> type, ComputerFamily family, BlockPos pos, BlockState state )
|
public TileTurtle( BlockEntityType<? extends TileGeneric> type,
|
||||||
|
ComputerFamily family, BlockPos pos, BlockState state )
|
||||||
{
|
{
|
||||||
super( type, family, pos, state );
|
super( type, family, pos, state );
|
||||||
}
|
}
|
||||||
@@ -133,7 +137,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
@Override
|
@Override
|
||||||
public ItemStack getStack( int slot )
|
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
|
@Nonnull
|
||||||
@@ -174,7 +179,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
@Override
|
@Override
|
||||||
public void setStack( int i, @Nonnull ItemStack stack )
|
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 );
|
inventory.set( i, stack );
|
||||||
onInventoryDefinitelyChanged();
|
onInventoryDefinitelyChanged();
|
||||||
@@ -224,7 +230,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
}
|
}
|
||||||
return ActionResult.SUCCESS;
|
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
|
// Water to remove turtle colour
|
||||||
if( !getWorld().isClient )
|
if( !getWorld().isClient )
|
||||||
@@ -234,7 +241,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
brain.setColour( -1 );
|
brain.setColour( -1 );
|
||||||
if( !player.isCreative() )
|
if( !player.isCreative() )
|
||||||
{
|
{
|
||||||
player.setStackInHand( hand, new ItemStack( Items.BUCKET ) );
|
player.setStackInHand( hand,
|
||||||
|
new ItemStack( Items.BUCKET ) );
|
||||||
player.getInventory().markDirty();
|
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 )
|
if( !tileTurtle.getWorld().isClient && tileTurtle.inventoryChanged )
|
||||||
{
|
{
|
||||||
ServerComputer computer = tileTurtle.getServerComputer();
|
ServerComputer computer = tileTurtle.getServerComputer();
|
||||||
@@ -279,30 +288,27 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
tileTurtle.inventoryChanged = false;
|
tileTurtle.inventoryChanged = false;
|
||||||
for( int n = 0; n < tileTurtle.size(); n++ )
|
for( int n = 0; n < tileTurtle.size(); n++ )
|
||||||
{
|
{
|
||||||
tileTurtle.previousInventory.set( n,
|
tileTurtle.previousInventory.set( n, tileTurtle.getStack( n ).copy() );
|
||||||
tileTurtle.getStack( n ).copy() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateBlockState( ComputerState newState )
|
protected void updateBlockState( ComputerState newState )
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public NbtCompound writeNbt( @Nonnull NbtCompound nbt )
|
public NbtCompound writeNbt( @Nonnull NbtCompound nbt )
|
||||||
{
|
{
|
||||||
super.readNbt( nbt );
|
super.readNbt( nbt );
|
||||||
// Write inventory
|
// Write inventory
|
||||||
NbtList nbttaglist = new NbtList();
|
NbtList nbttaglist = new NbtList();
|
||||||
for( int i = 0; i < INVENTORY_SIZE; i++ )
|
for( int i = 0; i < INVENTORY_SIZE; i++ )
|
||||||
{
|
{
|
||||||
if( !inventory.get( i )
|
if( !inventory.get( i ).isEmpty() )
|
||||||
.isEmpty() )
|
|
||||||
{
|
{
|
||||||
NbtCompound tag = new NbtCompound();
|
NbtCompound tag = new NbtCompound();
|
||||||
tag.putByte( "Slot", (byte) i );
|
tag.putByte( "Slot", (byte) i );
|
||||||
inventory.get( i ).writeNbt( tag );
|
inventory.get( i ).writeNbt( tag );
|
||||||
nbttaglist.add( tag );
|
nbttaglist.add( tag );
|
||||||
@@ -334,8 +340,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
if( slot < size() )
|
if( slot < size() )
|
||||||
{
|
{
|
||||||
inventory.set( slot, ItemStack.fromNbt( tag ) );
|
inventory.set( slot, ItemStack.fromNbt( tag ) );
|
||||||
previousInventory.set( slot, inventory.get( slot )
|
previousInventory.set( slot, inventory.get( slot ).copy() );
|
||||||
.copy() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,11 +365,9 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
@Override
|
@Override
|
||||||
protected ServerComputer createComputer( int instanceID, int id )
|
protected ServerComputer createComputer( int instanceID, int id )
|
||||||
{
|
{
|
||||||
ServerComputer computer = new ServerComputer( getWorld(),
|
ServerComputer computer = new ServerComputer( getWorld(), id, label, instanceID,
|
||||||
id, label,
|
getFamily(), ComputerCraft.turtleTermWidth,
|
||||||
instanceID, getFamily(),
|
ComputerCraft.turtleTermHeight );
|
||||||
ComputerCraft.turtleTermWidth,
|
|
||||||
ComputerCraft.turtleTermHeight );
|
|
||||||
computer.setPosition( getPos() );
|
computer.setPosition( getPos() );
|
||||||
computer.addAPI( new TurtleAPI( computer.getAPIEnvironment(), getAccess() ) );
|
computer.addAPI( new TurtleAPI( computer.getAPIEnvironment(), getAccess() ) );
|
||||||
brain.setupComputer( computer );
|
brain.setupComputer( computer );
|
||||||
@@ -397,13 +400,17 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
{
|
{
|
||||||
dir = Direction.NORTH;
|
dir = Direction.NORTH;
|
||||||
}
|
}
|
||||||
world.setBlockState( pos,
|
world.setBlockState( pos, getCachedState().with( BlockTurtle.FACING, dir ) );
|
||||||
getCachedState().with( BlockTurtle.FACING, dir ) );
|
|
||||||
updateOutput();
|
updateOutput();
|
||||||
updateInput();
|
updateInput();
|
||||||
onTileEntityChange();
|
onTileEntityChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBlockPos( BlockPos pos )
|
||||||
|
{
|
||||||
|
this.pos.;
|
||||||
|
}
|
||||||
|
|
||||||
public void onTileEntityChange()
|
public void onTileEntityChange()
|
||||||
{
|
{
|
||||||
super.markDirty();
|
super.markDirty();
|
||||||
@@ -412,7 +419,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
private boolean hasPeripheralUpgradeOnSide( ComputerSide side )
|
private boolean hasPeripheralUpgradeOnSide( ComputerSide side )
|
||||||
{
|
{
|
||||||
ITurtleUpgrade upgrade;
|
ITurtleUpgrade upgrade;
|
||||||
switch( side )
|
switch ( side )
|
||||||
{
|
{
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
upgrade = getUpgrade( TurtleSide.RIGHT );
|
upgrade = getUpgrade( TurtleSide.RIGHT );
|
||||||
@@ -423,8 +430,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return upgrade != null && upgrade.getType()
|
return upgrade != null && upgrade.getType().isPeripheral();
|
||||||
.isPeripheral();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// IInventory
|
// IInventory
|
||||||
@@ -525,8 +531,7 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
for( int i = 0; i < INVENTORY_SIZE; i++ )
|
for( int i = 0; i < INVENTORY_SIZE; i++ )
|
||||||
{
|
{
|
||||||
if( !inventory.get( i )
|
if( !inventory.get( i ).isEmpty() )
|
||||||
.isEmpty() )
|
|
||||||
{
|
{
|
||||||
inventory.set( i, ItemStack.EMPTY );
|
inventory.set( i, ItemStack.EMPTY );
|
||||||
changed = true;
|
changed = true;
|
||||||
@@ -556,7 +561,8 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@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 );
|
return new ContainerTurtle( id, inventory, brain );
|
||||||
}
|
}
|
||||||
|
@@ -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
|
@Override
|
||||||
public void closeHandledScreen()
|
public void closeHandledScreen()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public void updateCursorStack()
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// protected void onStatusEffectApplied( @Nonnull StatusEffectInstance id )
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// protected void onStatusEffectUpgraded( @Nonnull StatusEffectInstance id, boolean apply )
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStatusEffectRemoved( @Nonnull StatusEffectInstance effect )
|
protected void onStatusEffectRemoved( @Nonnull StatusEffectInstance effect )
|
||||||
{
|
{
|
||||||
|
@@ -60,24 +60,24 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem
|
|||||||
}
|
}
|
||||||
if( id >= 0 )
|
if( id >= 0 )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_ID, id );
|
.putInt( NBT_ID, id );
|
||||||
}
|
}
|
||||||
IColouredItem.setColourBasic( stack, colour );
|
IColouredItem.setColourBasic( stack, colour );
|
||||||
if( fuelLevel > 0 )
|
if( fuelLevel > 0 )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putInt( NBT_FUEL, fuelLevel );
|
.putInt( NBT_FUEL, fuelLevel );
|
||||||
}
|
}
|
||||||
if( overlay != null )
|
if( overlay != null )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putString( NBT_OVERLAY, overlay.toString() );
|
.putString( NBT_OVERLAY, overlay.toString() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( leftUpgrade != null )
|
if( leftUpgrade != null )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putString( NBT_LEFT_UPGRADE,
|
.putString( NBT_LEFT_UPGRADE,
|
||||||
leftUpgrade.getUpgradeID()
|
leftUpgrade.getUpgradeID()
|
||||||
.toString() );
|
.toString() );
|
||||||
@@ -85,7 +85,7 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem
|
|||||||
|
|
||||||
if( rightUpgrade != null )
|
if( rightUpgrade != null )
|
||||||
{
|
{
|
||||||
stack.getOrCreateTag()
|
stack.getOrCreateNbt()
|
||||||
.putString( NBT_RIGHT_UPGRADE,
|
.putString( NBT_RIGHT_UPGRADE,
|
||||||
rightUpgrade.getUpgradeID()
|
rightUpgrade.getUpgradeID()
|
||||||
.toString() );
|
.toString() );
|
||||||
@@ -148,7 +148,7 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem
|
|||||||
@Override
|
@Override
|
||||||
public ITurtleUpgrade getUpgrade( @Nonnull ItemStack stack, @Nonnull TurtleSide side )
|
public ITurtleUpgrade getUpgrade( @Nonnull ItemStack stack, @Nonnull TurtleSide side )
|
||||||
{
|
{
|
||||||
NbtCompound tag = stack.getTag();
|
NbtCompound tag = stack.getNbt();
|
||||||
if( tag == null )
|
if( tag == null )
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
@@ -161,14 +161,14 @@ public class ItemTurtle extends ItemComputerBase implements ITurtleItem
|
|||||||
@Override
|
@Override
|
||||||
public int getFuelLevel( @Nonnull ItemStack stack )
|
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;
|
return tag != null && tag.contains( NBT_FUEL ) ? tag.getInt( NBT_FUEL ) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Identifier getOverlay( @Nonnull ItemStack stack )
|
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;
|
return tag != null && tag.contains( NBT_OVERLAY ) ? new Identifier( tag.getString( NBT_OVERLAY ) ) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -141,7 +141,7 @@ public class TurtleInventoryCrafting extends CraftingInventory
|
|||||||
{
|
{
|
||||||
setStack( slot, remainder );
|
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() );
|
remainder.increment( existing.getCount() );
|
||||||
setStack( slot, remainder );
|
setStack( slot, remainder );
|
||||||
|
@@ -76,7 +76,7 @@ public class TurtleTool extends AbstractTurtleUpgrade
|
|||||||
@Override
|
@Override
|
||||||
public boolean isItemSuitable( @Nonnull ItemStack stack )
|
public boolean isItemSuitable( @Nonnull ItemStack stack )
|
||||||
{
|
{
|
||||||
NbtCompound tag = stack.getTag();
|
NbtCompound tag = stack.getNbt();
|
||||||
if( tag == null || tag.isEmpty() ) return true;
|
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
|
// Check we've not got anything vaguely interesting on the item. We allow other mods to add their
|
||||||
|
@@ -367,10 +367,5 @@ public class FakeNetHandler extends ServerPlayNetworkHandler
|
|||||||
public void disableAutoRead()
|
public void disableAutoRead()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setCompressionThreshold( int threshold )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,61 +1,62 @@
|
|||||||
/*
|
///*
|
||||||
* This file is part of ComputerCraft - http://www.computercraft.info
|
// * This file is part of ComputerCraft - http://www.computercraft.info
|
||||||
* Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
// * Copyright Daniel Ratcliffe, 2011-2021. Do not distribute without permission.
|
||||||
* Send enquiries to dratcliffe@gmail.com
|
// * Send enquiries to dratcliffe@gmail.com
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
package dan200.computercraft.shared.util;
|
//package dan200.computercraft.shared.util;
|
||||||
|
//
|
||||||
import net.minecraft.block.Block;
|
//import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder;
|
||||||
import net.minecraft.block.entity.BlockEntity;
|
//import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.entity.BlockEntityType;
|
//import net.minecraft.block.entity.BlockEntity;
|
||||||
|
//import net.minecraft.block.entity.BlockEntityType;
|
||||||
import javax.annotation.Nonnull;
|
//
|
||||||
import java.util.Collections;
|
//import javax.annotation.Nonnull;
|
||||||
import java.util.function.Function;
|
//import java.util.Collections;
|
||||||
import java.util.function.Supplier;
|
//import java.util.function.Function;
|
||||||
|
//import java.util.function.Supplier;
|
||||||
/**
|
//
|
||||||
* A {@link BlockEntityType} whose supplier uses itself as an argument.
|
///**
|
||||||
*
|
// * A {@link BlockEntityType} whose supplier uses itself as an argument.
|
||||||
* @param <T> The type of the produced tile entity.
|
// *
|
||||||
*/
|
// * @param <T> The type of the produced tile entity.
|
||||||
public final class FixedPointTileEntityType<T extends BlockEntity> extends BlockEntityType<T>
|
// */
|
||||||
{
|
//public final class FixedPointTileEntityType<T extends BlockEntity> extends BlockEntityType<T>
|
||||||
private final Supplier<Block> block;
|
//{
|
||||||
|
// private final Supplier<Block> block;
|
||||||
private FixedPointTileEntityType( Supplier<Block> block, Supplier<T> builder )
|
//
|
||||||
{
|
// private FixedPointTileEntityType( Supplier<Block> block, Supplier<T> builder )
|
||||||
super( builder, Collections.emptySet(), null ); //FIXME: Replace with the new BlockEntity handlers.
|
|
||||||
this.block = block;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static <T extends BlockEntity> FixedPointTileEntityType<T> create( Supplier<Block> block, Function<BlockEntityType<T>, T> builder )
|
|
||||||
{
|
|
||||||
return new FixedPointSupplier<>( block, builder ).factory;
|
|
||||||
}
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public boolean supports( @Nonnull Block block )
|
|
||||||
// {
|
// {
|
||||||
// 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<T extends BlockEntity> implements Supplier<T>
|
// public static <T extends BlockEntity> FixedPointTileEntityType<T> create( Supplier<Block> block, Function<BlockEntityType<T>, T> builder )
|
||||||
{
|
// {
|
||||||
final FixedPointTileEntityType<T> factory;
|
// return new FixedPointSupplier<>( block, builder ).factory;
|
||||||
private final Function<BlockEntityType<T>, T> builder;
|
// }
|
||||||
|
//
|
||||||
private FixedPointSupplier( Supplier<Block> block, Function<BlockEntityType<T>, T> builder )
|
//// @Override
|
||||||
{
|
//// public boolean supports( @Nonnull Block block )
|
||||||
factory = new FixedPointTileEntityType<>( block, this );
|
//// {
|
||||||
this.builder = builder;
|
//// return block == this.block.get();
|
||||||
}
|
//// }
|
||||||
|
//
|
||||||
@Override
|
// private static final class FixedPointSupplier<T extends BlockEntity> implements Supplier<T>
|
||||||
public T get()
|
// {
|
||||||
{
|
// final FixedPointTileEntityType<T> factory;
|
||||||
return builder.apply( factory );
|
// private final Function<BlockEntityType<T>, T> builder;
|
||||||
}
|
//
|
||||||
}
|
// private FixedPointSupplier( Supplier<Block> block, Function<BlockEntityType<T>, T> builder )
|
||||||
}
|
// {
|
||||||
|
// factory = FabricBlockEntityTypeBuilder.create( this, block );
|
||||||
|
// this.builder = builder;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// @Override
|
||||||
|
// public T get()
|
||||||
|
// {
|
||||||
|
// return builder.apply( factory );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
@@ -30,7 +30,7 @@ public final class InventoryUtil
|
|||||||
|
|
||||||
public static boolean areItemsStackable( @Nonnull ItemStack a, @Nonnull ItemStack b )
|
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:
|
// Methods for finding inventories:
|
||||||
|
@@ -34,7 +34,7 @@ public interface ItemStorage
|
|||||||
|
|
||||||
static boolean areStackable( @Nonnull ItemStack a, @Nonnull ItemStack b )
|
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();
|
int size();
|
||||||
|
Reference in New Issue
Block a user