diff --git a/client/src/main/java/client/network/ClientPlayer.java b/client/src/main/java/client/network/ClientPlayer.java index ecbca6fc..5557da84 100755 --- a/client/src/main/java/client/network/ClientPlayer.java +++ b/client/src/main/java/client/network/ClientPlayer.java @@ -85,7 +85,6 @@ import common.packet.SPacketPlayerAbilities; import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; -import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; import common.packet.SPacketCelestials; @@ -1315,15 +1314,6 @@ public class ClientPlayer implements IClientPlayer this.gm.show(null); } - /** - * Updates all registered IWorldAccess instances with destroyBlockInWorldPartially - */ - public void handleBlockBreakAnim(SPacketBlockBreakAnim packetIn) - { - NetHandler.checkThread(packetIn, this, this.gm, this.world); - this.gm.renderer.setBreakProgress(packetIn.getBreakerId(), packetIn.getPosition(), packetIn.getProgress()); - } - public void handleMapChunkBulk(SPacketMapChunkBulk packetIn) { NetHandler.checkThread(packetIn, this, this.gm, this.world); diff --git a/client/src/main/java/client/renderer/RenderBuffer.java b/client/src/main/java/client/renderer/RenderBuffer.java index 026d5d75..83e8a331 100755 --- a/client/src/main/java/client/renderer/RenderBuffer.java +++ b/client/src/main/java/client/renderer/RenderBuffer.java @@ -17,7 +17,6 @@ public class RenderBuffer private int vertexCount; private VertexFormatElement vertexFormatElement; private int vertexFormatIndex; - private boolean noColor; private int drawMode; private double xOffset; private double yOffset; @@ -100,7 +99,6 @@ public class RenderBuffer this.drawMode = glMode; this.vertexFormat = format; this.vertexFormatElement = format.getElement(this.vertexFormatIndex); - this.noColor = false; this.byteBuffer.limit(this.byteBuffer.capacity()); } } @@ -233,11 +231,6 @@ public class RenderBuffer } } - public void noColor() - { - this.noColor = true; - } - public RenderBuffer color(float red, float green, float blue, float alpha) { return this.color((int)(red * 255.0F), (int)(green * 255.0F), (int)(blue * 255.0F), (int)(alpha * 255.0F)); @@ -250,60 +243,53 @@ public class RenderBuffer public RenderBuffer color(int red, int green, int blue, int alpha) { - if (this.noColor) + int i = this.vertexCount * this.vertexFormat.getNextOffset() + this.vertexFormat.getOffset(this.vertexFormatIndex); + + switch (this.vertexFormatElement.type()) { - return this; + case FLOAT: + this.byteBuffer.putFloat(i, (float)red / 255.0F); + this.byteBuffer.putFloat(i + 4, (float)green / 255.0F); + this.byteBuffer.putFloat(i + 8, (float)blue / 255.0F); + this.byteBuffer.putFloat(i + 12, (float)alpha / 255.0F); + break; + + case UINT: + case INT: + this.byteBuffer.putFloat(i, (float)red); + this.byteBuffer.putFloat(i + 4, (float)green); + this.byteBuffer.putFloat(i + 8, (float)blue); + this.byteBuffer.putFloat(i + 12, (float)alpha); + break; + + case USHORT: + case SHORT: + this.byteBuffer.putShort(i, (short)red); + this.byteBuffer.putShort(i + 2, (short)green); + this.byteBuffer.putShort(i + 4, (short)blue); + this.byteBuffer.putShort(i + 6, (short)alpha); + break; + + case UBYTE: + case BYTE: + if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) + { + this.byteBuffer.put(i, (byte)red); + this.byteBuffer.put(i + 1, (byte)green); + this.byteBuffer.put(i + 2, (byte)blue); + this.byteBuffer.put(i + 3, (byte)alpha); + } + else + { + this.byteBuffer.put(i, (byte)alpha); + this.byteBuffer.put(i + 1, (byte)blue); + this.byteBuffer.put(i + 2, (byte)green); + this.byteBuffer.put(i + 3, (byte)red); + } } - else - { - int i = this.vertexCount * this.vertexFormat.getNextOffset() + this.vertexFormat.getOffset(this.vertexFormatIndex); - switch (this.vertexFormatElement.type()) - { - case FLOAT: - this.byteBuffer.putFloat(i, (float)red / 255.0F); - this.byteBuffer.putFloat(i + 4, (float)green / 255.0F); - this.byteBuffer.putFloat(i + 8, (float)blue / 255.0F); - this.byteBuffer.putFloat(i + 12, (float)alpha / 255.0F); - break; - - case UINT: - case INT: - this.byteBuffer.putFloat(i, (float)red); - this.byteBuffer.putFloat(i + 4, (float)green); - this.byteBuffer.putFloat(i + 8, (float)blue); - this.byteBuffer.putFloat(i + 12, (float)alpha); - break; - - case USHORT: - case SHORT: - this.byteBuffer.putShort(i, (short)red); - this.byteBuffer.putShort(i + 2, (short)green); - this.byteBuffer.putShort(i + 4, (short)blue); - this.byteBuffer.putShort(i + 6, (short)alpha); - break; - - case UBYTE: - case BYTE: - if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) - { - this.byteBuffer.put(i, (byte)red); - this.byteBuffer.put(i + 1, (byte)green); - this.byteBuffer.put(i + 2, (byte)blue); - this.byteBuffer.put(i + 3, (byte)alpha); - } - else - { - this.byteBuffer.put(i, (byte)alpha); - this.byteBuffer.put(i + 1, (byte)blue); - this.byteBuffer.put(i + 2, (byte)green); - this.byteBuffer.put(i + 3, (byte)red); - } - } - - this.nextVertexFormatIndex(); - return this; - } + this.nextVertexFormatIndex(); + return this; } public void addVertexData(int[] vertexData) diff --git a/client/src/main/java/client/renderer/Renderer.java b/client/src/main/java/client/renderer/Renderer.java index b2d9af4d..52023ff4 100755 --- a/client/src/main/java/client/renderer/Renderer.java +++ b/client/src/main/java/client/renderer/Renderer.java @@ -20,7 +20,6 @@ import org.lwjgl.opengl.GL46; import client.Client; import client.renderer.Shader.ShaderContext; -import client.renderer.blockmodel.BakedModel; import client.renderer.blockmodel.BakedQuad; import client.renderer.blockmodel.IBakedModel; import client.renderer.blockmodel.ModelManager; @@ -91,39 +90,6 @@ public class Renderer { } } - private static class DestroyProgress { - private final int id; - private final BlockPos pos; - - private int damage; - private int time; - - public DestroyProgress(int id, BlockPos pos) { - this.id = id; - this.pos = pos; - } - - public BlockPos getPosition() { - return this.pos; - } - - public void setDamage(int damage) { - this.damage = damage > 10 ? 10 : damage; - } - - public int getDamage() { - return this.damage; - } - - public void setTime(int time) { - this.time = time; - } - - public int getTime() { - return this.time; - } - } - private static final String TEX_MOLTEN = "textures/world/molten.png"; private static final String TEX_RAIN = "textures/world/rain.png"; private static final String TEX_HAIL = "textures/world/hail.png"; @@ -148,10 +114,8 @@ public class Renderer { private final RenderManager renderManager; private final ModelManager manager; private final Set setTileEntities = Sets.newHashSet(); - private final Map damagedBlocks = Maps.newHashMap(); private final Map mapSoundPositions = Maps.newHashMap(); private final Map fluids = Maps.newHashMap(); - private final Sprite[] destroyBlockIcons = new Sprite[10]; private float farPlaneDistance; private int rendererUpdateCount; @@ -309,8 +273,6 @@ public class Renderer { if(this.lastLightning > 0) this.lastLightning -= 1; ++this.cloudTickCounter; - if (this.cloudTickCounter % 20 == 0) - this.cleanupDamagedBlocks(this.damagedBlocks.values().iterator()); } public void getMouseOver(float partialTicks) @@ -1284,9 +1246,8 @@ public class Renderer { this.drawSelectionBox(entityplayer1, this.gm.pointed, partialTicks); GlState.enableAlpha(); } - GlState.enableBlend(); +// GlState.enableBlend(); GlState.tryBlendFuncSeparate(GL46.GL_SRC_ALPHA, GL46.GL_ONE, GL46.GL_ONE, GL46.GL_ZERO); - this.drawBlockDamageTexture(Tessellator.getBuffer(), entity, partialTicks); GlState.disableBlend(); // if (!this.debugView) @@ -1837,9 +1798,6 @@ public class Renderer { this.fluids.put(liquid.second(), sprites); this.fluids.put(liquid.first(), sprites); } - for(int i = 0; i < this.destroyBlockIcons.length; ++i) { - this.destroyBlockIcons[i] = texturemap.getAtlasSprite("blocks/destroy_stage_" + i); - } } private void generateSky2() @@ -2663,20 +2621,6 @@ public class Renderer { return l; } - private void cleanupDamagedBlocks(Iterator iteratorIn) - { - while (iteratorIn.hasNext()) - { - DestroyProgress destroyblockprogress = (DestroyProgress)iteratorIn.next(); - int i = destroyblockprogress.getTime(); - - if (this.cloudTickCounter - i > 400) - { - iteratorIn.remove(); - } - } - } - private void renderSkyBox(String texture) { GlState.disableFog(); @@ -3125,75 +3069,6 @@ public class Renderer { } } - private void preRenderDamagedBlocks() - { - GlState.tryBlendFuncSeparate(GL46.GL_DST_COLOR, GL46.GL_SRC_COLOR, GL46.GL_ONE, GL46.GL_ZERO); - GlState.enableBlend(); - GlState.color(1.0F, 1.0F, 1.0F, 0.5F); - GlState.doPolygonOffset(-3.0F, -3.0F); - GlState.enablePolygonOffset(); - GlState.alphaFunc(GL46.GL_GREATER, 0.1F); - GlState.enableAlpha(); - GL46.glPushMatrix(); - } - - private void postRenderDamagedBlocks() - { - GlState.disableAlpha(); - GlState.doPolygonOffset(0.0F, 0.0F); - GlState.disablePolygonOffset(); - GlState.enableAlpha(); - GlState.depthMask(true); - GL46.glPopMatrix(); - } - - private void drawBlockDamageTexture(RenderBuffer worldRendererIn, Entity entityIn, float partialTicks) - { - double d0 = entityIn.lastTickPosX + (entityIn.posX - entityIn.lastTickPosX) * (double)partialTicks; - double d1 = entityIn.lastTickPosY + (entityIn.posY - entityIn.lastTickPosY) * (double)partialTicks; - double d2 = entityIn.lastTickPosZ + (entityIn.posZ - entityIn.lastTickPosZ) * (double)partialTicks; - - if (!this.damagedBlocks.isEmpty()) - { - this.renderEngine.bindTexture(TextureMap.BLOCKS); - this.preRenderDamagedBlocks(); - worldRendererIn.begin(GL46.GL_QUADS, DefaultVertexFormats.BLOCK); - worldRendererIn.setTranslation(-d0, -d1, -d2); - worldRendererIn.noColor(); - Iterator iterator = this.damagedBlocks.values().iterator(); - - while (iterator.hasNext()) - { - DestroyProgress destroyblockprogress = (DestroyProgress)iterator.next(); - BlockPos blockpos = destroyblockprogress.getPosition(); - double d3 = (double)blockpos.getX() - d0; - double d4 = (double)blockpos.getY() - d1; - double d5 = (double)blockpos.getZ() - d2; - Block block = this.theWorld.getState(blockpos).getBlock(); - - if (d3 * d3 + d4 * d4 + d5 * d5 > 1024.0D) - { - iterator.remove(); - } - else - { - State iblockstate = this.theWorld.getState(blockpos); - - if (iblockstate.getBlock() != Blocks.air) - { - int i = destroyblockprogress.getDamage(); - Sprite textureatlassprite = this.destroyBlockIcons[i]; - this.renderBlockDamage(iblockstate, blockpos, textureatlassprite, this.theWorld); - } - } - } - - Tessellator.draw(); - worldRendererIn.setTranslation(0.0D, 0.0D, 0.0D); - this.postRenderDamagedBlocks(); - } - } - /** * Draws the selection box for the player. Args: entityPlayer, rayTraceHit, i, itemStack, partialTickTime * @@ -3293,27 +3168,6 @@ public class Renderer { this.viewFrustum.markBlocksForUpdate(x1, y1, z1, x2, y2, z2); } - public void setBreakProgress(int breakerId, BlockPos pos, int progress) - { - if (progress >= 0 && progress < 10) - { - DestroyProgress destroyblockprogress = (DestroyProgress)this.damagedBlocks.get(Integer.valueOf(breakerId)); - - if (destroyblockprogress == null || destroyblockprogress.getPosition().getX() != pos.getX() || destroyblockprogress.getPosition().getY() != pos.getY() || destroyblockprogress.getPosition().getZ() != pos.getZ()) - { - destroyblockprogress = new DestroyProgress(breakerId, pos); - this.damagedBlocks.put(Integer.valueOf(breakerId), destroyblockprogress); - } - - destroyblockprogress.setDamage(progress); - destroyblockprogress.setTime(this.cloudTickCounter); - } - else - { - this.damagedBlocks.remove(Integer.valueOf(breakerId)); - } - } - public void setDisplayListEntitiesDirty() { this.displayListEntitiesDirty = true; @@ -3418,18 +3272,6 @@ public class Renderer { } } - private void renderBlockDamage(State state, BlockPos pos, Sprite texture, IWorldAccess world) - { - Block block = state.getBlock(); - if (block != Blocks.air && !block.getMaterial().isLiquid()) - { - state = block.getState(state, world, pos); - IBakedModel model = new BakedModel.Builder(this.manager.getModelForState(state), texture).makeBakedModel(); - block.setBlockBounds(world, pos); - this.renderModel(world, model, state, pos, Tessellator.getBuffer(), true); - } - } - public boolean renderBlock(State state, BlockPos pos, IWorldAccess world, RenderBuffer rb) { Block block = state.getBlock(); if(this.gm.xrayActive && !block.isXrayVisible()) diff --git a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java index 776d4803..e6f7bcf4 100755 --- a/client/src/main/java/client/renderer/blockmodel/ModelBakery.java +++ b/client/src/main/java/client/renderer/blockmodel/ModelBakery.java @@ -29,13 +29,7 @@ import common.world.State; public abstract class ModelBakery { - private static final Set BUILTINS = Sets.newHashSet( - "blocks/destroy_stage_0", "blocks/destroy_stage_1", - "blocks/destroy_stage_2", "blocks/destroy_stage_3", - "blocks/destroy_stage_4", "blocks/destroy_stage_5", - "blocks/destroy_stage_6", "blocks/destroy_stage_7", - "blocks/destroy_stage_8", "blocks/destroy_stage_9" - ); + private static final Set BUILTINS = Sets.newHashSet(); protected static final String MISSING = "builtin/missing"; public static final ModelBlock MODEL_GENERATED = (ModelBlock)new ModelBlock(null).add().d(""); public static final ModelBlock MODEL_ENTITY = (ModelBlock)new ModelBlock(null).add().d(""); diff --git a/client/src/main/java/client/util/PlayerController.java b/client/src/main/java/client/util/PlayerController.java index 188a132e..67078da3 100755 --- a/client/src/main/java/client/util/PlayerController.java +++ b/client/src/main/java/client/util/PlayerController.java @@ -109,7 +109,6 @@ public class PlayerController { this.stack = this.gm.player.getHeldItem(); this.damage = 0.0F; this.stepCounter = 0.0F; - this.gm.renderer.setBreakProgress(this.gm.player.getId(), this.position, (int)(this.damage * 10.0F) - 1); } } @@ -122,7 +121,6 @@ public class PlayerController { this.handler.addToSendQueue(new CPacketBreak(CPacketBreak.Action.ABORT_DESTROY_BLOCK, this.position, Facing.DOWN)); this.hitting = false; this.damage = 0.0F; - this.gm.renderer.setBreakProgress(this.gm.player.getId(), this.position, -1); } } @@ -164,8 +162,6 @@ public class PlayerController { this.stepCounter = 0.0F; this.delay = 5; } - - this.gm.renderer.setBreakProgress(this.gm.player.getId(), this.position, (int)(this.damage * 10.0F) - 1); return true; } } diff --git a/client/src/main/resources/shaders/lightmap.fsh b/client/src/main/resources/shaders/lightmap.fsh deleted file mode 100644 index 37202e3b..00000000 --- a/client/src/main/resources/shaders/lightmap.fsh +++ /dev/null @@ -1,8 +0,0 @@ -out vec4 FragColor; - -uniform float fog; -uniform vec3 color; - -void main() { - FragColor = vec4(color, fog); -} diff --git a/client/src/main/resources/shaders/lightmap.vsh b/client/src/main/resources/shaders/lightmap.vsh deleted file mode 100644 index 0e046107..00000000 --- a/client/src/main/resources/shaders/lightmap.vsh +++ /dev/null @@ -1,7 +0,0 @@ -layout (location = 0) in vec2 coords; - -uniform vec2 size; - -void main() { - gl_Position = vec4(coords * 2.0 / size, 0.0, 1.0); -} diff --git a/client/src/main/resources/shaders/world.vsh b/client/src/main/resources/shaders/world.vsh index dc02fb54..e77ef27a 100644 --- a/client/src/main/resources/shaders/world.vsh +++ b/client/src/main/resources/shaders/world.vsh @@ -12,7 +12,6 @@ out float brightness; uniform mat4 model; uniform mat4 view; uniform mat4 projection; -uniform sampler2D tex; uniform vec3 offset; uniform int chunk_x; uniform int chunk_y; diff --git a/common/src/main/java/common/network/IClientPlayer.java b/common/src/main/java/common/network/IClientPlayer.java index a7c1db28..94c6dff1 100644 --- a/common/src/main/java/common/network/IClientPlayer.java +++ b/common/src/main/java/common/network/IClientPlayer.java @@ -29,7 +29,6 @@ import common.packet.SPacketPlayerAbilities; import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; -import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; import common.packet.SPacketCelestials; @@ -118,7 +117,6 @@ public interface IClientPlayer extends NetHandler { void handleWindowProperty(SPacketWindowProperty packet); void handleEntityEquipment(SPacketEntityEquipment packet); void handleCloseWindow(SPacketCloseWindow packet); - void handleBlockBreakAnim(SPacketBlockBreakAnim packet); void handleMapChunkBulk(SPacketMapChunkBulk packet); void handleChangeGameState(SPacketChangeGameState packet); void handleEffect(SPacketEffect packet); diff --git a/common/src/main/java/common/network/PacketRegistry.java b/common/src/main/java/common/network/PacketRegistry.java index 593463c0..4fb9f152 100755 --- a/common/src/main/java/common/network/PacketRegistry.java +++ b/common/src/main/java/common/network/PacketRegistry.java @@ -66,7 +66,6 @@ import common.packet.SPacketPlayerAbilities; import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; -import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; import common.packet.SPacketCelestials; @@ -152,7 +151,6 @@ public enum PacketRegistry { this.server(SPacketChunkData.class); this.server(SPacketMultiBlockChange.class); this.server(SPacketBlockChange.class); - this.server(SPacketBlockBreakAnim.class); this.server(SPacketMapChunkBulk.class); this.server(SPacketExplosion.class); this.server(SPacketEffect.class); diff --git a/common/src/main/java/common/packet/SPacketBlockBreakAnim.java b/common/src/main/java/common/packet/SPacketBlockBreakAnim.java deleted file mode 100755 index 1b1acec1..00000000 --- a/common/src/main/java/common/packet/SPacketBlockBreakAnim.java +++ /dev/null @@ -1,69 +0,0 @@ -package common.packet; - -import java.io.IOException; - -import common.network.IClientPlayer; -import common.network.Packet; -import common.network.PacketBuffer; -import common.util.BlockPos; - -public class SPacketBlockBreakAnim implements Packet -{ - private int breakerId; - private BlockPos position; - private int progress; - - public SPacketBlockBreakAnim() - { - } - - public SPacketBlockBreakAnim(int breakerId, BlockPos pos, int progress) - { - this.breakerId = breakerId; - this.position = pos; - this.progress = progress; - } - - /** - * Reads the raw packet data from the data stream. - */ - public void readPacketData(PacketBuffer buf) throws IOException - { - this.breakerId = buf.readVarInt(); - this.position = buf.readBlockPos(); - this.progress = buf.readUnsignedByte(); - } - - /** - * Writes the raw packet data to the data stream. - */ - public void writePacketData(PacketBuffer buf) throws IOException - { - buf.writeVarInt(this.breakerId); - buf.writeBlockPos(this.position); - buf.writeByte(this.progress); - } - - /** - * Passes this Packet on to the NetHandler for processing. - */ - public void processPacket(IClientPlayer handler) - { - handler.handleBlockBreakAnim(this); - } - - public int getBreakerId() - { - return this.breakerId; - } - - public BlockPos getPosition() - { - return this.position; - } - - public int getProgress() - { - return this.progress; - } -} diff --git a/server/src/main/java/server/network/Player.java b/server/src/main/java/server/network/Player.java index d8fa5435..dbd5ff00 100755 --- a/server/src/main/java/server/network/Player.java +++ b/server/src/main/java/server/network/Player.java @@ -84,7 +84,6 @@ import common.packet.SPacketSignEditorOpen; import common.packet.SPacketPlayerAbilities; import common.packet.SPacketTabComplete; import common.packet.SPacketAnimation; -import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; import common.packet.SPacketCharacterList; @@ -956,26 +955,6 @@ public class Player extends User implements Executor, IPlayer return new SPacketMapChunkBulk(xPositions, zPositions, chunksData); } - - private void sendBlockBreakProgress(BlockPos pos, int progress) - { - for (Player conn : this.server.getPlayers()) - { - EntityNPC player = conn.getPresentEntity(); - if (player != null && player.worldObj == this.entity.worldObj && player != this.entity) - { - double d0 = (double)pos.getX() - player.posX; - double d1 = (double)pos.getY() - player.posY; - double d2 = (double)pos.getZ() - player.posZ; - - if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) - { - conn.sendPacket(new SPacketBlockBreakAnim(this.entity.getId(), pos, progress)); - } - } - } - } - public void updateEntity() { if (this.entity.hurtResistance > 0) @@ -1093,7 +1072,6 @@ public class Player extends User implements Executor, IPlayer if (j != this.durabilityRemainingOnBlock) { - this.sendBlockBreakProgress(this.removingPos, j); this.durabilityRemainingOnBlock = j; } @@ -1110,7 +1088,6 @@ public class Player extends User implements Executor, IPlayer if (block1 == Blocks.air) { - this.sendBlockBreakProgress(this.startPos, -1); this.durabilityRemainingOnBlock = -1; this.isDestroyingBlock = false; } @@ -1122,7 +1099,6 @@ public class Player extends User implements Executor, IPlayer if (l != this.durabilityRemainingOnBlock) { - this.sendBlockBreakProgress(this.startPos, l); this.durabilityRemainingOnBlock = l; } } @@ -1169,7 +1145,6 @@ public class Player extends User implements Executor, IPlayer this.isDestroyingBlock = true; this.startPos = pos; int i = (int)(f * 10.0F); - this.sendBlockBreakProgress(pos, i); this.durabilityRemainingOnBlock = i; } // } @@ -1189,7 +1164,6 @@ public class Player extends User implements Executor, IPlayer if (f >= 0.7F) { this.isDestroyingBlock = false; - this.sendBlockBreakProgress(pos, -1); this.tryHarvestBlock(pos); } else if (!this.receivedFinishDiggingPacket) @@ -1206,7 +1180,6 @@ public class Player extends User implements Executor, IPlayer public void cancelDestroyingBlock() { this.isDestroyingBlock = false; - this.sendBlockBreakProgress(this.startPos, -1); } private boolean removeBlock(BlockPos pos)