diff --git a/client/src/main/java/client/Client.java b/client/src/main/java/client/Client.java index c30174c9..ccd9401e 100755 --- a/client/src/main/java/client/Client.java +++ b/client/src/main/java/client/Client.java @@ -1082,7 +1082,7 @@ public class Client implements IThreadListener { if(this.pointed != null && this.pointed.block != null) { State state = this.world.getState(this.pointed.block); if(state.getBlock() != Blocks.air) { - Item item = state.getBlock().getItem(this.world, this.pointed.block); + Item item = state.getBlock().getItem(); if(item != null) { GL11.glPopMatrix(); GL11.glPushMatrix(); @@ -1450,14 +1450,12 @@ public class Client implements IThreadListener { return; } - item = block.getItem(this.world, blockpos); + item = block.getItem(); if (item == null) { return; } - - Block block1 = item instanceof ItemBlock && !block.isPickStrict() ? item.getBlock() : block; } else { diff --git a/client/src/main/java/client/network/ClientPlayer.java b/client/src/main/java/client/network/ClientPlayer.java index 74480113..d2fcc397 100755 --- a/client/src/main/java/client/network/ClientPlayer.java +++ b/client/src/main/java/client/network/ClientPlayer.java @@ -88,7 +88,6 @@ import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; import common.packet.SPacketBiome; -import common.packet.SPacketBlockAction; import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; @@ -1376,18 +1375,6 @@ public class ClientPlayer implements IClientPlayer this.gm.show(null); } - /** - * Triggers Block.onBlockEventReceived, which is implemented in BlockPistonBase for extension/retraction, BlockNote - * for setting the instrument (including audiovisual feedback) and in BlockContainer to set the number of players - * accessing a (Ender)Chest - */ - public void handleBlockAction(SPacketBlockAction packetIn) - { - NetHandler.checkThread(packetIn, this, this.gm, this.world); - if(packetIn.getBlockType() != null) - this.gm.world.addBlockEvent(packetIn.getBlockPosition(), packetIn.getBlockType(), packetIn.getData1(), packetIn.getData2()); - } - /** * Updates all registered IWorldAccess instances with destroyBlockInWorldPartially */ diff --git a/client/src/main/java/client/renderer/chunk/RenderChunk.java b/client/src/main/java/client/renderer/chunk/RenderChunk.java index 06de2e2d..cd311095 100755 --- a/client/src/main/java/client/renderer/chunk/RenderChunk.java +++ b/client/src/main/java/client/renderer/chunk/RenderChunk.java @@ -21,6 +21,7 @@ import client.renderer.tileentity.TileEntityRendererDispatcher; import client.renderer.tileentity.TileEntitySpecialRenderer; import client.world.WorldClient; import common.block.Block; +import common.block.ITileEntityProvider; import common.collect.Maps; import common.collect.Sets; import common.model.BlockLayer; @@ -153,7 +154,7 @@ public class RenderChunk lvt_10_1_.func_178606_a(blockpos$mutableblockpos); } - if (block.hasTileEntity()) + if (block instanceof ITileEntityProvider) { TileEntity tileentity = iblockaccess.getTileEntity(new BlockPos(blockpos$mutableblockpos)); TileEntitySpecialRenderer tileentityspecialrenderer = TileEntityRendererDispatcher.instance.getSpecialRenderer(tileentity); diff --git a/client/src/main/java/client/renderer/tileentity/TileEntityItemStackRenderer.java b/client/src/main/java/client/renderer/tileentity/TileEntityItemStackRenderer.java index 80e06130..03b63dc5 100755 --- a/client/src/main/java/client/renderer/tileentity/TileEntityItemStackRenderer.java +++ b/client/src/main/java/client/renderer/tileentity/TileEntityItemStackRenderer.java @@ -2,7 +2,6 @@ package client.renderer.tileentity; import common.block.tech.BlockChest; import common.item.ItemStack; -import common.item.block.ItemChest; import common.tileentity.TileEntityChest; import common.util.Facing; import common.world.State; @@ -23,8 +22,8 @@ public class TileEntityItemStackRenderer { }; public void renderByItem(ItemStack stack) { - if(stack.getItem() instanceof ItemChest chest) { - this.state = chest.getBlock().getState().withProperty(BlockChest.FACING, Facing.SOUTH); + if(stack.getItem() != null && stack.getItem().getBlock() instanceof BlockChest chest) { + this.state = chest.getState().withProperty(BlockChest.FACING, Facing.SOUTH); TileEntityRendererDispatcher.instance.renderTileEntityAt(this.chest, 0.0D, 0.0D, 0.0D, 0.0F); } } diff --git a/client/src/main/java/client/renderer/tileentity/TileEntityPistonRenderer.java b/client/src/main/java/client/renderer/tileentity/TileEntityPistonRenderer.java deleted file mode 100755 index 237689da..00000000 --- a/client/src/main/java/client/renderer/tileentity/TileEntityPistonRenderer.java +++ /dev/null @@ -1,80 +0,0 @@ -package client.renderer.tileentity; - -import org.lwjgl.opengl.GL11; - -import client.Client; -import client.renderer.BlockRenderer; -import client.renderer.DefaultVertexFormats; -import client.renderer.GlState; -import client.renderer.ItemRenderer; -import client.renderer.RenderBuffer; -import client.renderer.Tessellator; -import client.renderer.texture.TextureMap; -import common.block.Block; -import common.block.tech.BlockPistonBase; -import common.block.tech.BlockPistonHead; -import common.init.Blocks; -import common.tileentity.TileEntityPiston; -import common.util.BlockPos; -import common.world.State; -import common.world.World; - -public class TileEntityPistonRenderer extends TileEntitySpecialRenderer -{ - private final BlockRenderer blockRenderer = Client.CLIENT.getBlockRendererDispatcher(); - - public void renderTileEntityAt(TileEntityPiston te, double x, double y, double z, float partialTicks, int destroyStage) - { - BlockPos blockpos = te.getPos(); - State iblockstate = te.getPistonState(); - Block block = iblockstate.getBlock(); - - if (block != Blocks.air && te.getProgress(partialTicks) < 1.0F) - { -// Tessellator tessellator = Tessellator.getInstance(); - RenderBuffer worldrenderer = Tessellator.getBuffer(); - this.bindTexture(TextureMap.BLOCKS); - ItemRenderer.disableStandardItemLighting(); - GlState.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GlState.enableBlend(); - GlState.disableCull(); - -// if (Game.getGame().isAmbientOcclusionEnabled()) -// { -// GlState.shadeModel(GL11.GL_SMOOTH); -// } -// else -// { - GlState.shadeModel(GL11.GL_FLAT); -// } - - worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); - worldrenderer.setTranslation((double)((float)x - (float)blockpos.getX() + te.getOffsetX(partialTicks)), (double)((float)y - (float)blockpos.getY() + te.getOffsetY(partialTicks)), (double)((float)z - (float)blockpos.getZ() + te.getOffsetZ(partialTicks))); - World world = this.getWorld(); - - if (block == Blocks.piston_head && te.getProgress(partialTicks) < 0.5F) - { - iblockstate = iblockstate.withProperty(BlockPistonHead.SHORT, Boolean.valueOf(true)); - this.blockRenderer.renderModel(world, this.blockRenderer.getModelFromBlockState(iblockstate, world, blockpos), iblockstate, blockpos, worldrenderer, true); - } - else if (te.shouldPistonHeadBeRendered() && !te.isExtending()) - { - BlockPistonHead.EnumPistonType blockpistonextension$enumpistontype = block == Blocks.sticky_piston ? BlockPistonHead.EnumPistonType.STICKY : BlockPistonHead.EnumPistonType.DEFAULT; - State iblockstate1 = Blocks.piston_head.getState().withProperty(BlockPistonHead.TYPE, blockpistonextension$enumpistontype).withProperty(BlockPistonHead.FACING, iblockstate.getValue(BlockPistonBase.FACING)); - iblockstate1 = iblockstate1.withProperty(BlockPistonHead.SHORT, Boolean.valueOf(te.getProgress(partialTicks) >= 0.5F)); - this.blockRenderer.renderModel(world, this.blockRenderer.getModelFromBlockState(iblockstate1, world, blockpos), iblockstate1, blockpos, worldrenderer, true); - worldrenderer.setTranslation((double)((float)x - (float)blockpos.getX()), (double)((float)y - (float)blockpos.getY()), (double)((float)z - (float)blockpos.getZ())); - iblockstate.withProperty(BlockPistonBase.EXTENDED, Boolean.valueOf(true)); - this.blockRenderer.renderModel(world, this.blockRenderer.getModelFromBlockState(iblockstate, world, blockpos), iblockstate, blockpos, worldrenderer, true); - } - else - { - this.blockRenderer.renderModel(world, this.blockRenderer.getModelFromBlockState(iblockstate, world, blockpos), iblockstate, blockpos, worldrenderer, false); - } - - worldrenderer.setTranslation(0.0D, 0.0D, 0.0D); - Tessellator.draw(); - ItemRenderer.enableStandardItemLighting(); - } - } -} diff --git a/client/src/main/java/client/renderer/tileentity/TileEntityRendererDispatcher.java b/client/src/main/java/client/renderer/tileentity/TileEntityRendererDispatcher.java index b90ad35c..29d90350 100755 --- a/client/src/main/java/client/renderer/tileentity/TileEntityRendererDispatcher.java +++ b/client/src/main/java/client/renderer/tileentity/TileEntityRendererDispatcher.java @@ -11,7 +11,6 @@ import common.entity.Entity; import common.tileentity.TileEntity; import common.tileentity.TileEntityChest; import common.tileentity.TileEntityDisplay; -import common.tileentity.TileEntityPiston; import common.tileentity.TileEntitySign; import common.util.BlockPos; import common.world.World; @@ -47,7 +46,6 @@ public class TileEntityRendererDispatcher { this.mapSpecialRenderers.put(TileEntitySign.class, new TileEntitySignRenderer()); this.mapSpecialRenderers.put(TileEntityDisplay.class, new TileEntityDisplayRenderer()); - this.mapSpecialRenderers.put(TileEntityPiston.class, new TileEntityPistonRenderer()); this.mapSpecialRenderers.put(TileEntityChest.class, new TileEntityChestRenderer()); for (TileEntitySpecialRenderer tileentityspecialrenderer : this.mapSpecialRenderers.values()) diff --git a/client/src/main/java/client/world/WorldClient.java b/client/src/main/java/client/world/WorldClient.java index 48837ab9..34a43954 100755 --- a/client/src/main/java/client/world/WorldClient.java +++ b/client/src/main/java/client/world/WorldClient.java @@ -22,6 +22,7 @@ import common.rng.Random; import common.sound.MovingSoundMinecart; import common.sound.PositionedSound; import common.tileentity.TileEntity; +import common.tileentity.TileEntityChest; import common.util.BlockPos; import common.util.ChunkPos; import common.util.ExtMath; @@ -658,6 +659,12 @@ public class WorldClient extends AWorldClient case 2005: ItemDye.spawnBonemealParticles(this, blockPosIn, data); + break; + + case 2016: + TileEntity te = this.getTileEntity(blockPosIn); + if(te instanceof TileEntityChest chest) + chest.setUsing(data); } } diff --git a/client/src/main/resources/textures/blocks/dead_bush.png b/client/src/main/resources/textures/blocks/dead_bush.png new file mode 100755 index 00000000..c64e0797 Binary files /dev/null and b/client/src/main/resources/textures/blocks/dead_bush.png differ diff --git a/client/src/main/resources/textures/items/dye_white.png b/client/src/main/resources/textures/items/bonemeal.png similarity index 100% rename from client/src/main/resources/textures/items/dye_white.png rename to client/src/main/resources/textures/items/bonemeal.png diff --git a/client/src/main/resources/textures/items/dye_green.png b/client/src/main/resources/textures/items/cactus_green.png similarity index 100% rename from client/src/main/resources/textures/items/dye_green.png rename to client/src/main/resources/textures/items/cactus_green.png diff --git a/client/src/main/resources/textures/items/dye_brown.png b/client/src/main/resources/textures/items/cocoa.png similarity index 100% rename from client/src/main/resources/textures/items/dye_brown.png rename to client/src/main/resources/textures/items/cocoa.png diff --git a/client/src/main/resources/textures/items/dye_cyan.png b/client/src/main/resources/textures/items/cyan_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_cyan.png rename to client/src/main/resources/textures/items/cyan_dye.png diff --git a/client/src/main/resources/textures/items/dye_gray.png b/client/src/main/resources/textures/items/gray_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_gray.png rename to client/src/main/resources/textures/items/gray_dye.png diff --git a/client/src/main/resources/textures/items/dye_black.png b/client/src/main/resources/textures/items/ink_sack.png similarity index 100% rename from client/src/main/resources/textures/items/dye_black.png rename to client/src/main/resources/textures/items/ink_sack.png diff --git a/client/src/main/resources/textures/items/dye_blue.png b/client/src/main/resources/textures/items/lapis_lazuli.png similarity index 100% rename from client/src/main/resources/textures/items/dye_blue.png rename to client/src/main/resources/textures/items/lapis_lazuli.png diff --git a/client/src/main/resources/textures/items/dye_light_blue.png b/client/src/main/resources/textures/items/light_blue_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_light_blue.png rename to client/src/main/resources/textures/items/light_blue_dye.png diff --git a/client/src/main/resources/textures/items/dye_lime.png b/client/src/main/resources/textures/items/lime_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_lime.png rename to client/src/main/resources/textures/items/lime_dye.png diff --git a/client/src/main/resources/textures/items/dye_magenta.png b/client/src/main/resources/textures/items/magenta_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_magenta.png rename to client/src/main/resources/textures/items/magenta_dye.png diff --git a/client/src/main/resources/textures/items/dye_orange.png b/client/src/main/resources/textures/items/orange_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_orange.png rename to client/src/main/resources/textures/items/orange_dye.png diff --git a/client/src/main/resources/textures/items/dye_pink.png b/client/src/main/resources/textures/items/pink_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_pink.png rename to client/src/main/resources/textures/items/pink_dye.png diff --git a/client/src/main/resources/textures/items/dye_purple.png b/client/src/main/resources/textures/items/purple_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_purple.png rename to client/src/main/resources/textures/items/purple_dye.png diff --git a/client/src/main/resources/textures/items/dye_red.png b/client/src/main/resources/textures/items/red_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_red.png rename to client/src/main/resources/textures/items/red_dye.png diff --git a/client/src/main/resources/textures/items/dye_silver.png b/client/src/main/resources/textures/items/silver_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_silver.png rename to client/src/main/resources/textures/items/silver_dye.png diff --git a/client/src/main/resources/textures/items/dye_yellow.png b/client/src/main/resources/textures/items/yellow_dye.png similarity index 100% rename from client/src/main/resources/textures/items/dye_yellow.png rename to client/src/main/resources/textures/items/yellow_dye.png diff --git a/common/src/main/java/common/block/Block.java b/common/src/main/java/common/block/Block.java index cada79b7..63086fb2 100755 --- a/common/src/main/java/common/block/Block.java +++ b/common/src/main/java/common/block/Block.java @@ -173,8 +173,9 @@ public class Block { protected boolean axeHarvest; protected boolean shovelHarvest; protected boolean ticked; - protected boolean hasTile; - protected boolean flatItemTexture; + private boolean flatBlockTexture; + private boolean flatItemTexture; + private boolean itemColored; protected int lightOpacity; protected int lightValue; protected int miningLevel; @@ -367,11 +368,21 @@ public class Block { return this; } + protected Block setFlatBlockTexture() { + this.flatBlockTexture = true; + return this; + } + protected Block setFlatItemTexture() { this.flatItemTexture = true; return this; } + protected Block setItemColored() { + this.itemColored = true; + return this; + } + public Block setDisplay(String name) { this.display = name; return this; @@ -507,10 +518,6 @@ public class Block { return this.ticked; } - public boolean hasTileEntity() { - return this.hasTile; - } - protected final void setBlockBounds(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { this.minX = (double)minX; this.minY = (double)minY; @@ -614,14 +621,6 @@ public class Block { public void onBlockRemoved(AWorldServer world, BlockPos pos, State state) { } - public int quantityDropped(Random random) { - return 1; - } - - public Item getItemDropped(State state, Random rand, int fortune) { - return this.getItem() instanceof ItemBlock item ? item : null; - } - public float getPlayerRelativeBlockHardness(EntityNPC playerIn, World worldIn, BlockPos pos) { float f = this.getBlockHardness(worldIn, pos); return f < 0.0F ? 0.0F @@ -629,48 +628,6 @@ public class Block { : playerIn.getToolDigEfficiency(this) / f / 30.0F); } - public final void dropBlockAsItem(World worldIn, BlockPos pos, State state, int forture) { - this.dropBlockAsItemWithChance(worldIn, pos, state, 1.0F, forture); - } - - public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, State state, float chance, int fortune) { - if(!worldIn.client) { - int i = this.quantityDroppedWithBonus(fortune, worldIn.rand); - - for(int j = 0; j < i; ++j) { - if(worldIn.rand.floatv() <= chance) { - Item item = this.getItemDropped(state, worldIn.rand, fortune); - - if(item != null) { - spawnAsEntity(worldIn, pos, new ItemStack(item)); - } - } - } - } - } - - public static void spawnAsEntity(World worldIn, BlockPos pos, ItemStack stack) { - if(!worldIn.client && Vars.blockDrop) { - float f = 0.5F; - double d0 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; - double d1 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; - double d2 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; - EntityItem entityitem = new EntityItem(worldIn, (double)pos.getX() + d0, (double)pos.getY() + d1, (double)pos.getZ() + d2, stack); - entityitem.setDefaultPickupDelay(); - worldIn.spawnEntityInWorld(entityitem); - } - } - - protected void dropXpOnBlockBreak(World worldIn, BlockPos pos, int amount) { - if(!worldIn.client && Vars.blockXP) { - while(amount > 0) { - int i = EntityXp.getXPSplit(amount); - amount -= i; - worldIn.spawnEntityInWorld(new EntityXp(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, i)); - } - } - } - public float getExplosionResistance(Entity exploder) { return this.blockResistance / 5.0F; } @@ -792,10 +749,6 @@ public class Block { return BlockLayer.SOLID; } - public boolean canReplace(World worldIn, BlockPos pos, Facing side, ItemStack stack) { - return this.canPlaceBlockOnSide(worldIn, pos, side); - } - public boolean canPlaceBlockOnSide(World worldIn, BlockPos pos, Facing side) { return this.canPlaceBlockAt(worldIn, pos); } @@ -867,35 +820,11 @@ public class Block { public void setBlockBoundsForItemRender() { } - public void harvestBlock(World worldIn, EntityNPC player, BlockPos pos, State state, TileEntity te) { - if(this.canSilkHarvest() && EnchantmentHelper.getSilkTouchModifier(player)) { - ItemStack itemstack = this.createStackedBlock(state); - - if(itemstack != null) { - spawnAsEntity(worldIn, pos, itemstack); - } - } - else { - int i = EnchantmentHelper.getFortuneModifier(player); - this.dropBlockAsItem(worldIn, pos, state, i); - } - } - public boolean canSilkHarvest() { - return this.isFullCube() && !this.hasTile; + return this.isFullCube() && !(this instanceof ITileEntityProvider); } - public ItemStack createStackedBlock(State state) { - Item item = this.getItem(); - // TODO: data - return item instanceof ItemBlock ? new ItemStack(item) : null; - } - - public int quantityDroppedWithBonus(int fortune, Random random) { - return this.quantityDropped(random); - } - - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) { + public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer) { } public boolean canSpawnInBlock() { @@ -906,10 +835,6 @@ public class Block { return this.display; } - public boolean onBlockEventReceived(World worldIn, BlockPos pos, State state, int eventID, int eventParam) { - return false; - } - public int getMobilityFlag() { return this.material.getMobility(); } @@ -922,10 +847,6 @@ public class Block { entityIn.motionY = 0.0D; } - public Item getItem(World worldIn, BlockPos pos) { - return this.getItem() instanceof ItemBlock item ? item : null; - } - public CheatTab getTab() { return this.tab; } @@ -936,10 +857,6 @@ public class Block { public void fillWithRain(World worldIn, BlockPos pos) { } - public boolean isPickStrict() { - return false; - } - public boolean requiresUpdates() { return true; } @@ -1039,7 +956,7 @@ public class Block { } protected Item getItemToRegister() { - return new ItemBlock(this, this.flatItemTexture ? "" : null); + return new ItemBlock(this); } public final Item registerItem() { @@ -1051,12 +968,78 @@ public class Block { this.item = item; return item; } - - public final Item getItem() { + + public Item getItem() { return this.item; } - public boolean canConnectToWire() { + public Item getItemDropped(State state, Random rand, int fortune) { + return this.getItem(); + } + + protected int quantityDropped(Random random) { + return 1; + } + + protected int quantityDroppedWithBonus(int fortune, Random random) { + return this.quantityDropped(random); + } + + public void harvestBlock(World world, EntityNPC player, BlockPos pos, State state, TileEntity te) { + if(this.canSilkHarvest() && EnchantmentHelper.getSilkTouchModifier(player)) { + Item item = this.getItem(); + if(item != null) + spawnAsEntity(world, pos, new ItemStack(item)); + } + else { + int fortune = EnchantmentHelper.getFortuneModifier(player); + this.dropBlockAsItem(world, pos, state, fortune); + } + } + + public final void dropBlockAsItem(World worldIn, BlockPos pos, State state, int fortune) { + this.dropBlockAsItemWithChance(worldIn, pos, state, 1.0F, fortune); + } + + public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, State state, float chance, int fortune) { + if(!worldIn.client) { + int i = this.quantityDroppedWithBonus(fortune, worldIn.rand); + + for(int j = 0; j < i; ++j) { + if(worldIn.rand.floatv() <= chance) { + Item item = this.getItemDropped(state, worldIn.rand, fortune); + + if(item != null) { + spawnAsEntity(worldIn, pos, new ItemStack(item)); + } + } + } + } + } + + public static void spawnAsEntity(World worldIn, BlockPos pos, ItemStack stack) { + if(!worldIn.client && Vars.blockDrop) { + float f = 0.5F; + double d0 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; + double d1 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; + double d2 = (double)(worldIn.rand.floatv() * f) + (double)(1.0F - f) * 0.5D; + EntityItem entityitem = new EntityItem(worldIn, (double)pos.getX() + d0, (double)pos.getY() + d1, (double)pos.getZ() + d2, stack); + entityitem.setDefaultPickupDelay(); + worldIn.spawnEntityInWorld(entityitem); + } + } + + protected void dropXpOnBlockBreak(World worldIn, BlockPos pos, int amount) { + if(!worldIn.client && Vars.blockXP) { + while(amount > 0) { + int i = EntityXp.getXPSplit(amount); + amount -= i; + worldIn.spawnEntityInWorld(new EntityXp(worldIn, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, i)); + } + } + } + + public boolean canConnectToWire(State state) { return false; } @@ -1067,4 +1050,20 @@ public class Block { public double powerTick(World worldIn, BlockPos pos, State state, Random rand, double voltage, double currentLimit) { return 0.0; } + + public final boolean hasBlockFlatTexture() { + return this.flatBlockTexture; + } + + public final boolean hasItemFlatTexture() { + return this.flatItemTexture; + } + + public final boolean isItemColored() { + return this.itemColored; + } + + public String getItemTexture(String name) { + return name; + } } diff --git a/common/src/main/java/common/block/BlockContainer.java b/common/src/main/java/common/block/BlockContainer.java deleted file mode 100755 index 85278c69..00000000 --- a/common/src/main/java/common/block/BlockContainer.java +++ /dev/null @@ -1,39 +0,0 @@ -package common.block; - -import common.tileentity.TileEntity; -import common.util.BlockPos; -import common.util.Facing; -import common.world.State; -import common.world.World; -import common.world.AWorldServer; - -public abstract class BlockContainer extends Block implements ITileEntityProvider { - public BlockContainer(Material material) { - super(material); - this.hasTile = true; - } - - private boolean isInvalidNeighbor(World world, BlockPos pos, Facing face) { - return world.getState(pos.offset(face)).getBlock().getMaterial() == Material.BLOCKING; - } - - protected boolean hasInvalidNeighbor(World world, BlockPos pos) { - return this.isInvalidNeighbor(world, pos, Facing.NORTH) || this.isInvalidNeighbor(world, pos, Facing.SOUTH) - || this.isInvalidNeighbor(world, pos, Facing.WEST) || this.isInvalidNeighbor(world, pos, Facing.EAST); - } - - public int getRenderType() { - return -1; - } - - public void onBlockRemoved(AWorldServer world, BlockPos pos, State state) { - super.onBlockRemoved(world, pos, state); - world.removeTileEntity(pos); - } - - public boolean onBlockEventReceived(World world, BlockPos pos, State state, int id, int param) { - super.onBlockEventReceived(world, pos, state, id, param); - TileEntity tile = world.getTileEntity(pos); - return tile == null ? false : tile.receiveClientEvent(id, param); - } -} diff --git a/common/src/main/java/common/block/artificial/BlockBed.java b/common/src/main/java/common/block/artificial/BlockBed.java index a30c958e..a2eedf4d 100755 --- a/common/src/main/java/common/block/artificial/BlockBed.java +++ b/common/src/main/java/common/block/artificial/BlockBed.java @@ -6,7 +6,6 @@ import common.block.Material; import common.color.DyeColor; import common.color.TextColor; import common.entity.npc.EntityNPC; -import common.init.ItemRegistry; import common.item.Item; import common.item.block.ItemBed; import common.model.BlockLayer; @@ -113,7 +112,7 @@ public class BlockBed extends Block implements Rotatable { } public Item getItemDropped(State state, Random rand, int fortune) { - return state.getValue(PART) == BlockBed.EnumPartType.HEAD ? null : ItemRegistry.byName(this.color.getName() + "_bed"); + return state.getValue(PART) == BlockBed.EnumPartType.HEAD ? null : super.getItemDropped(state, rand, fortune); } private void setBedBounds() { @@ -168,10 +167,6 @@ public class BlockBed extends Block implements Rotatable { return BlockLayer.CUTOUT; } - public Item getItem(World worldIn, BlockPos pos) { - return ItemRegistry.byName(this.color.getName() + "_bed"); - } - // public void onBlockHarvested(World worldIn, BlockPos pos, State state, EntityNPC player) { // if(player.creative && state.getValue(PART) == BlockBed.EnumPartType.HEAD) { // BlockPos blockpos = pos.offset(((Facing)state.getValue(FACING)).getOpposite()); diff --git a/common/src/main/java/common/block/artificial/BlockBookshelf.java b/common/src/main/java/common/block/artificial/BlockBookshelf.java index 0475364b..a1517d7d 100755 --- a/common/src/main/java/common/block/artificial/BlockBookshelf.java +++ b/common/src/main/java/common/block/artificial/BlockBookshelf.java @@ -22,7 +22,7 @@ public class BlockBookshelf extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 3; } diff --git a/common/src/main/java/common/block/artificial/BlockCake.java b/common/src/main/java/common/block/artificial/BlockCake.java index 37866033..5cce8929 100755 --- a/common/src/main/java/common/block/artificial/BlockCake.java +++ b/common/src/main/java/common/block/artificial/BlockCake.java @@ -3,10 +3,7 @@ package common.block.artificial; import common.block.Block; import common.block.Material; import common.entity.npc.EntityNPC; -import common.init.Items; -import common.item.CheatTab; import common.item.Item; -import common.item.block.ItemSmallBlock; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -95,6 +92,7 @@ public class BlockCake extends Block super(Material.SOFT); this.setDefaultState(this.getBaseState().withProperty(BITES, Integer.valueOf(0))); // this.setTickRandomly(true); + this.setFlatItemTexture(); } public void setBlockBoundsBasedOnState(IWorldAccess worldIn, BlockPos pos) @@ -191,7 +189,7 @@ public class BlockCake extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } @@ -204,11 +202,6 @@ public class BlockCake extends Block return null; } - public Item getItem(World worldIn, BlockPos pos) - { - return Items.cake; - } - public BlockLayer getBlockLayer() { return BlockLayer.CUTOUT; @@ -222,8 +215,4 @@ public class BlockCake extends Block public Model getModel(ModelProvider provider, String name, State state) { return cake_slices[state.getValue(BITES)]; } - - protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Kuchen").setTab(CheatTab.DECORATION); - } } diff --git a/common/src/main/java/common/block/artificial/BlockDoor.java b/common/src/main/java/common/block/artificial/BlockDoor.java index 19dd9732..758b6ca4 100755 --- a/common/src/main/java/common/block/artificial/BlockDoor.java +++ b/common/src/main/java/common/block/artificial/BlockDoor.java @@ -227,7 +227,7 @@ public class BlockDoor extends Block implements Rotatable { } public Item getItemDropped(State state, Random rand, int fortune) { - return state.getValue(HALF) == EnumDoorHalf.UPPER ? null : this.getItem(); + return state.getValue(HALF) == EnumDoorHalf.UPPER ? null : super.getItemDropped(state, rand, fortune); } public HitPosition collisionRayTrace(World world, BlockPos pos, Vec3 start, Vec3 end) { @@ -243,10 +243,6 @@ public class BlockDoor extends Block implements Rotatable { return 1; } - public Item getItem(World world, BlockPos pos) { - return this.getItem(); - } - public BlockLayer getBlockLayer() { return BlockLayer.CUTOUT; } diff --git a/common/src/main/java/common/block/artificial/BlockFloorPortal.java b/common/src/main/java/common/block/artificial/BlockFloorPortal.java index 2664e872..19814225 100755 --- a/common/src/main/java/common/block/artificial/BlockFloorPortal.java +++ b/common/src/main/java/common/block/artificial/BlockFloorPortal.java @@ -73,7 +73,7 @@ public class BlockFloorPortal extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } @@ -99,11 +99,6 @@ public class BlockFloorPortal extends Block worldIn.spawnParticle(ParticleType.SMOKE, d0, d1, d2); } - public Item getItem(World worldIn, BlockPos pos) - { - return null; - } - // /** // * Get the MapColor for this Block and the given BlockState // */ diff --git a/common/src/main/java/common/block/artificial/BlockFlowerPot.java b/common/src/main/java/common/block/artificial/BlockFlowerPot.java index d894062c..30d7c9eb 100755 --- a/common/src/main/java/common/block/artificial/BlockFlowerPot.java +++ b/common/src/main/java/common/block/artificial/BlockFlowerPot.java @@ -14,7 +14,6 @@ import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; import common.item.block.ItemBlock; -import common.item.block.ItemSmallBlock; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -111,6 +110,7 @@ public class BlockFlowerPot extends Block super(Material.SMALL); this.content = content; this.setBlockBoundsForItemRender(); + this.setFlatItemTexture(); POTS.add(this); } @@ -178,16 +178,6 @@ public class BlockFlowerPot extends Block } } - public Item getItem(World worldIn, BlockPos pos) - { - return worldIn.getState(pos).getBlock() == this && this.content != null ? this.content.getItem() : Items.flowerpot; - } - - public boolean isPickStrict() - { - return true; - } - public boolean canPlaceBlockAt(World worldIn, BlockPos pos) { return super.canPlaceBlockAt(worldIn, pos) && worldIn.isBlockSolid(pos.down()); @@ -270,6 +260,6 @@ public class BlockFlowerPot extends Block } protected Item getItemToRegister() { - return this.content == null ? new ItemSmallBlock(this).setDisplay("Blumentopf").setTab(CheatTab.DECORATION) : null; + return this.content == null ? super.getItemToRegister() : null; } } diff --git a/common/src/main/java/common/block/artificial/BlockGlass.java b/common/src/main/java/common/block/artificial/BlockGlass.java index e3315709..1851e936 100755 --- a/common/src/main/java/common/block/artificial/BlockGlass.java +++ b/common/src/main/java/common/block/artificial/BlockGlass.java @@ -18,7 +18,7 @@ public class BlockGlass extends Block { this.setTab(CheatTab.BLOCKS); } - public int quantityDropped(Random rand) { + protected int quantityDropped(Random rand) { return 0; } diff --git a/common/src/main/java/common/block/artificial/BlockHay.java b/common/src/main/java/common/block/artificial/BlockHay.java index 1f6ddacf..883b0dab 100755 --- a/common/src/main/java/common/block/artificial/BlockHay.java +++ b/common/src/main/java/common/block/artificial/BlockHay.java @@ -26,15 +26,6 @@ public class BlockHay extends BlockRotatedPillar return new Property[] {AXIS}; } - public ItemStack createStackedBlock(State state) - { - return new ItemStack(this.getItem()); - } - - /** - * Called by ItemBlocks just before a block is actually set in the world, to allow for adjustments to the - * IBlockstate - */ public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) { return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, placer).withProperty(AXIS, facing.getAxis()); diff --git a/common/src/main/java/common/block/artificial/BlockLadder.java b/common/src/main/java/common/block/artificial/BlockLadder.java index dc25b822..15db29ae 100755 --- a/common/src/main/java/common/block/artificial/BlockLadder.java +++ b/common/src/main/java/common/block/artificial/BlockLadder.java @@ -24,7 +24,7 @@ public class BlockLadder extends Block implements Rotatable super(Material.SMALL); this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH)); this.setTab(CheatTab.WOOD); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); } public BoundingBox getCollisionBoundingBox(World worldIn, BlockPos pos, State state) diff --git a/common/src/main/java/common/block/artificial/BlockPane.java b/common/src/main/java/common/block/artificial/BlockPane.java index 53355517..ddb60922 100755 --- a/common/src/main/java/common/block/artificial/BlockPane.java +++ b/common/src/main/java/common/block/artificial/BlockPane.java @@ -29,15 +29,13 @@ public class BlockPane extends Block public static final PropertyBool EAST = PropertyBool.create("east"); public static final PropertyBool SOUTH = PropertyBool.create("south"); public static final PropertyBool WEST = PropertyBool.create("west"); - private final boolean canDrop; - public BlockPane(Material materialIn, boolean canDrop) + public BlockPane(Material materialIn) { super(materialIn); this.setDefaultState(this.getBaseState().withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))); - this.canDrop = canDrop; this.setTab(CheatTab.BLOCKS); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); } /** @@ -54,7 +52,7 @@ public class BlockPane extends Block */ public Item getItemDropped(State state, Random rand, int fortune) { - return !this.canDrop ? null : super.getItemDropped(state, rand, fortune); + return this.material != Material.SOLID ? null : super.getItemDropped(state, rand, fortune); } /** @@ -210,12 +208,12 @@ public class BlockPane extends Block return this.material == Material.SOLID; } - protected String getPaneBase(State state) { - return "glass"; + protected String getPaneBase() { + return this.material == Material.SOLID ? "iron_bars" : "glass"; } - protected String getPaneEdge(State state) { - return "glass_pane"; + protected String getPaneEdge() { + return this.material == Material.SOLID ? "iron_bars" : "glass_pane"; } public Model getModel(ModelProvider provider, String name, State state) { @@ -224,9 +222,11 @@ public class BlockPane extends Block boolean w = state.getValue(WEST); boolean e = state.getValue(EAST); int sides = (n ? 1 : 0) + (s ? 1 : 0) + (w ? 1 : 0) + (e ? 1 : 0); - if(this.canDrop) { + String pane = this.getPaneBase(); + String edge = this.getPaneEdge(); + if(this.material == Material.SOLID) { if(sides == 0 || sides == 4) - return provider.getModel(name) + return provider.getModel(pane) .add(8, 0, 0, 8, 16, 16) .w().uv(0, 0, 16, 16).noCull() .e().uv(0, 0, 16, 16).noCull() @@ -249,7 +249,7 @@ public class BlockPane extends Block .d().uv(9, 0, 7, 7).rot(90).noCull() .u().uv(7, 0, 9, 7).rot(90).noCull(); else if(sides == 1) - return provider.getModel(name) + return provider.getModel(pane) .add(8, 0, 0, 8, 16, 8) .w().uv(8, 0, 16, 16).noCull() .e().uv(8, 0, 16, 16).noCull() @@ -261,7 +261,7 @@ public class BlockPane extends Block .u().uv(7, 0, 9, 9).noCull() .rotate(n ? ModelRotation.X0_Y0 : (s ? ModelRotation.X0_Y180 : (w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); else if(sides == 2 && ((e != w) || (n != s))) - return provider.getModel(name) + return provider.getModel(pane) .add(8, 0, 0, 8, 16, 8) .w().uv(0, 0, 8, 16).noCull() .e().uv(8, 0, 16, 16).noCull() @@ -281,7 +281,7 @@ public class BlockPane extends Block .rotate(n && e ? ModelRotation.X0_Y0 : (s && w ? ModelRotation.X0_Y180 : (n && w ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); else if(sides == 2) - return provider.getModel(name) + return provider.getModel(pane) .add(8, 0, 0, 8, 16, 16) .w().uv(0, 0, 16, 16).noCull() .e().uv(0, 0, 16, 16).noCull() @@ -293,7 +293,7 @@ public class BlockPane extends Block .u().uv(9, 0, 7, 16).noCull() .rotate(n ? ModelRotation.X0_Y0 : ModelRotation.X0_Y90); else - return provider.getModel(name) + return provider.getModel(pane) .add(8, 0, 0, 8, 16, 16) .w().uv(0, 0, 16, 16).noCull() .e().uv(0, 0, 16, 16).noCull() @@ -314,8 +314,6 @@ public class BlockPane extends Block .rotate(!w ? ModelRotation.X0_Y0 : (!e ? ModelRotation.X0_Y180 : (!s ? ModelRotation.X0_Y270 : ModelRotation.X0_Y90))); } else { - String pane = this.getPaneBase(state); - String edge = this.getPaneEdge(state); if(sides == 0 || sides == 4) return provider.getModel(pane) .add(7, 0, 0, 9, 16, 16).noShade() @@ -492,12 +490,12 @@ public class BlockPane extends Block .e(edge).uv(7, 0, 9, 16); } } - - protected Item getItemToRegister() { - return this.canDrop ? super.getItemToRegister() : new ItemBlock(this, "glass", false); - } public Property[] getUnsavedProperties() { return new Property[] {NORTH, SOUTH, WEST, EAST}; } + + public String getItemTexture(String name) { + return this.getPaneBase(); + } } diff --git a/common/src/main/java/common/block/artificial/BlockPortal.java b/common/src/main/java/common/block/artificial/BlockPortal.java index 4f681b68..404beee6 100755 --- a/common/src/main/java/common/block/artificial/BlockPortal.java +++ b/common/src/main/java/common/block/artificial/BlockPortal.java @@ -196,7 +196,7 @@ public class BlockPortal extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } @@ -239,11 +239,6 @@ public class BlockPortal extends Block } } - public Item getItem(World worldIn, BlockPos pos) - { - return null; - } - public int getRenderColor(State state) { return COLORS[state.getValue(DIM)]; diff --git a/common/src/main/java/common/block/artificial/BlockPortalFrame.java b/common/src/main/java/common/block/artificial/BlockPortalFrame.java index 4112308c..99dd34eb 100755 --- a/common/src/main/java/common/block/artificial/BlockPortalFrame.java +++ b/common/src/main/java/common/block/artificial/BlockPortalFrame.java @@ -76,7 +76,7 @@ public class BlockPortalFrame extends Block implements Rotatable return Items.obsidian; } - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 4; } diff --git a/common/src/main/java/common/block/artificial/BlockSkull.java b/common/src/main/java/common/block/artificial/BlockSkull.java index df7a2152..706b123d 100755 --- a/common/src/main/java/common/block/artificial/BlockSkull.java +++ b/common/src/main/java/common/block/artificial/BlockSkull.java @@ -8,7 +8,6 @@ import common.entity.types.EntityLiving; import common.init.Items; import common.item.CheatTab; import common.item.Item; -import common.item.block.ItemSmallBlock; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; @@ -24,6 +23,7 @@ public class BlockSkull extends Block implements Rotatable { super(Material.SMALL); this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH)); this.setBlockBounds(0.25F, 0.0F, 0.25F, 0.75F, 0.5F, 0.75F); + this.setFlatItemTexture(); } public boolean canPlaceBlockAt(World world, BlockPos pos) { @@ -51,14 +51,6 @@ public class BlockSkull extends Block implements Rotatable { return false; } - public Item getItemDropped(State state, Random rand, int fortune) { - return Items.skull; - } - - public Item getItem(World worldIn, BlockPos pos) { - return Items.skull; - } - public boolean isXrayVisible() { return true; } @@ -67,8 +59,4 @@ public class BlockSkull extends Block implements Rotatable { world.destroyBlock(pos, true); return true; } - - protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Schädel").setTab(CheatTab.DECORATION); - } } diff --git a/common/src/main/java/common/block/artificial/BlockSlab.java b/common/src/main/java/common/block/artificial/BlockSlab.java index 366ccb38..b4b1585e 100755 --- a/common/src/main/java/common/block/artificial/BlockSlab.java +++ b/common/src/main/java/common/block/artificial/BlockSlab.java @@ -57,10 +57,6 @@ public class BlockSlab extends Block implements Directional { return new Property[] {FACING}; } - public boolean canSilkHarvest() { - return false; - } - public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) { State iblockstate = this.getState().withProperty(FACING, Facing.DOWN); return facing != Facing.DOWN && (facing == Facing.UP || (double)hitY <= 0.5D) ? iblockstate : iblockstate.withProperty(FACING, Facing.UP); diff --git a/common/src/main/java/common/block/artificial/BlockStainedGlassPane.java b/common/src/main/java/common/block/artificial/BlockStainedGlassPane.java index 88dbd28d..4ee6f71b 100755 --- a/common/src/main/java/common/block/artificial/BlockStainedGlassPane.java +++ b/common/src/main/java/common/block/artificial/BlockStainedGlassPane.java @@ -7,7 +7,6 @@ import common.item.Item; import common.item.block.ItemBlock; import common.model.BlockLayer; import common.properties.Property; -import common.world.State; public class BlockStainedGlassPane extends BlockPane { @@ -21,7 +20,7 @@ public class BlockStainedGlassPane extends BlockPane public BlockStainedGlassPane(DyeColor color) { - super(Material.TRANSLUCENT, false); + super(Material.TRANSLUCENT); this.color = color; this.setDefaultState(this.getBaseState().withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))); this.setTab(CheatTab.BLOCKS); @@ -42,15 +41,11 @@ public class BlockStainedGlassPane extends BlockPane return new Property[] {NORTH, EAST, WEST, SOUTH}; } - protected String getPaneBase(State state) { + protected String getPaneBase() { return this.color.getName() + "_glass"; } - protected String getPaneEdge(State state) { + protected String getPaneEdge() { return this.color.getName() + "_glass_pane"; } - - protected Item getItemToRegister() { - return new ItemBlock(this, ""); - } } diff --git a/common/src/main/java/common/block/foliage/BlockBush.java b/common/src/main/java/common/block/foliage/BlockBush.java index d2bd545c..1f027981 100755 --- a/common/src/main/java/common/block/foliage/BlockBush.java +++ b/common/src/main/java/common/block/foliage/BlockBush.java @@ -26,7 +26,7 @@ public class BlockBush extends Block float f = 0.2F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f * 3.0F, 0.5F + f); this.setTab(CheatTab.PLANTS); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); } public boolean canPlaceBlockAt(World worldIn, BlockPos pos) diff --git a/common/src/main/java/common/block/foliage/BlockCarrot.java b/common/src/main/java/common/block/foliage/BlockCarrot.java index 93a681cf..fbb24822 100755 --- a/common/src/main/java/common/block/foliage/BlockCarrot.java +++ b/common/src/main/java/common/block/foliage/BlockCarrot.java @@ -11,11 +11,6 @@ import common.world.State; public class BlockCarrot extends BlockCrops { - protected Item getSeed() - { - return Items.carrot; - } - protected Item getCrop() { return Items.carrot; diff --git a/common/src/main/java/common/block/foliage/BlockCocoa.java b/common/src/main/java/common/block/foliage/BlockCocoa.java index 8d531f36..2ef079f8 100755 --- a/common/src/main/java/common/block/foliage/BlockCocoa.java +++ b/common/src/main/java/common/block/foliage/BlockCocoa.java @@ -2,12 +2,13 @@ package common.block.foliage; import common.block.Block; import common.block.Rotatable; +import common.color.DyeColor; import common.block.Material; import common.entity.types.EntityLiving; import common.init.Blocks; -import common.init.Items; import common.item.Item; import common.item.ItemStack; +import common.item.material.ItemDye; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -116,7 +117,7 @@ public class BlockCocoa extends Block implements Rotatable, IGrowable /** * Called by ItemBlocks after a block is set in the world, to allow post-place logic */ - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) + public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer) { Facing enumfacing = Facing.fromAngle((double)placer.rotYaw); worldIn.setState(pos, state.withProperty(FACING, enumfacing), 2); @@ -168,15 +169,10 @@ public class BlockCocoa extends Block implements Rotatable, IGrowable for (int k = 0; k < j; ++k) { - spawnAsEntity(worldIn, pos, new ItemStack(Items.cocoa)); + spawnAsEntity(worldIn, pos, new ItemStack(this.getItem())); } } - public Item getItem(World worldIn, BlockPos pos) - { - return Items.cocoa; - } - /** * Whether this IGrowable can grow */ @@ -253,6 +249,6 @@ public class BlockCocoa extends Block implements Rotatable, IGrowable } protected Item getItemToRegister() { - return null; + return new ItemDye(DyeColor.BROWN, this); } } diff --git a/common/src/main/java/common/block/foliage/BlockCrops.java b/common/src/main/java/common/block/foliage/BlockCrops.java index c8421c7f..eb0f57c9 100755 --- a/common/src/main/java/common/block/foliage/BlockCrops.java +++ b/common/src/main/java/common/block/foliage/BlockCrops.java @@ -136,11 +136,6 @@ public class BlockCrops extends BlockBush implements IGrowable return (worldIn.getLight(pos) >= 8 || worldIn.canSeeSky(pos)) && this.canPlaceBlockOn(worldIn.getState(pos.down()).getBlock()); } - protected Item getSeed() - { - return Items.wheat; - } - protected Item getCrop() { return Items.wheats; @@ -165,7 +160,7 @@ public class BlockCrops extends BlockBush implements IGrowable { if (worldIn.rand.zrange(15) <= i) { - spawnAsEntity(worldIn, pos, new ItemStack(this.getSeed())); + spawnAsEntity(worldIn, pos, new ItemStack(this.getItem())); } } } @@ -177,12 +172,7 @@ public class BlockCrops extends BlockBush implements IGrowable */ public Item getItemDropped(State state, Random rand, int fortune) { - return ((Integer)state.getValue(AGE)).intValue() == 7 ? this.getCrop() : this.getSeed(); - } - - public Item getItem(World worldIn, BlockPos pos) - { - return this.getSeed(); + return ((Integer)state.getValue(AGE)).intValue() == 7 ? this.getCrop() : super.getItemDropped(state, rand, fortune); } /** diff --git a/common/src/main/java/common/block/foliage/BlockDoublePlant.java b/common/src/main/java/common/block/foliage/BlockDoublePlant.java index 2af530f2..157ae311 100755 --- a/common/src/main/java/common/block/foliage/BlockDoublePlant.java +++ b/common/src/main/java/common/block/foliage/BlockDoublePlant.java @@ -46,6 +46,7 @@ public class BlockDoublePlant extends BlockBush implements IGrowable this.setHardness(0.0F); this.setStepSound(SoundType.GRASS); this.setFlammable(60, 100); + this.setFlatBlockTexture(); PLANTS[type.ordinal()] = this; } @@ -149,7 +150,7 @@ public class BlockDoublePlant extends BlockBush implements IGrowable } else { - return this.type == BlockDoublePlant.EnumPlantType.FERN ? null : (this.type == BlockDoublePlant.EnumPlantType.GRASS ? (rand.chance(8) ? Items.wheat : null) : this.getItem()); + return this.type == BlockDoublePlant.EnumPlantType.FERN ? null : (this.type == BlockDoublePlant.EnumPlantType.GRASS ? (rand.chance(8) ? Items.wheat : null) : super.getItemDropped(state, rand, fortune)); } } @@ -167,7 +168,7 @@ public class BlockDoublePlant extends BlockBush implements IGrowable /** * Called by ItemBlocks after a block is set in the world, to allow post-place logic */ - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) + public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer) { worldIn.setState(pos.up(), this.getState().withProperty(HALF, BlockDoublePlant.EnumBlockHalf.UPPER), 2); } diff --git a/common/src/main/java/common/block/foliage/BlockDryLeaves.java b/common/src/main/java/common/block/foliage/BlockDryLeaves.java index 813212a5..3cf006c0 100755 --- a/common/src/main/java/common/block/foliage/BlockDryLeaves.java +++ b/common/src/main/java/common/block/foliage/BlockDryLeaves.java @@ -25,7 +25,7 @@ public class BlockDryLeaves extends BlockLeavesBase /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return random.chance(0, 1, 5); } diff --git a/common/src/main/java/common/block/foliage/BlockFarmland.java b/common/src/main/java/common/block/foliage/BlockFarmland.java index 4552ccc2..a2adb518 100755 --- a/common/src/main/java/common/block/foliage/BlockFarmland.java +++ b/common/src/main/java/common/block/foliage/BlockFarmland.java @@ -151,11 +151,6 @@ public class BlockFarmland extends Block return Blocks.dirt.getItemDropped(Blocks.dirt.getState(), rand, fortune); } - public Item getItem(World worldIn, BlockPos pos) - { - return Items.dirt; - } - protected Property[] getProperties() { return new Property[] {MOISTURE}; diff --git a/common/src/main/java/common/block/foliage/BlockGrass.java b/common/src/main/java/common/block/foliage/BlockGrass.java index 52be0176..a633dda8 100755 --- a/common/src/main/java/common/block/foliage/BlockGrass.java +++ b/common/src/main/java/common/block/foliage/BlockGrass.java @@ -7,7 +7,6 @@ import common.color.Colorizer; import common.init.Blocks; import common.item.CheatTab; import common.item.Item; -import common.item.block.ItemColored; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -31,6 +30,7 @@ public class BlockGrass extends Block implements IGrowable this.setDefaultState(this.getBaseState().withProperty(SNOWY, Boolean.valueOf(false))); this.setTickRandomly(); this.setTab(CheatTab.NATURE); + this.setItemColored(); } /** @@ -136,10 +136,6 @@ public class BlockGrass extends Block implements IGrowable return provider.getModel("dirt").add().d().u("grass_top").tint().nswe("grass_side") .add().nswe("grass_side_overlay").tint(); } - - protected Item getItemToRegister() { - return new ItemColored(this); - } public Property[] getUnsavedProperties() { return new Property[] {SNOWY}; diff --git a/common/src/main/java/common/block/foliage/BlockHugeMushroom.java b/common/src/main/java/common/block/foliage/BlockHugeMushroom.java index 55025a1c..f4e9346c 100755 --- a/common/src/main/java/common/block/foliage/BlockHugeMushroom.java +++ b/common/src/main/java/common/block/foliage/BlockHugeMushroom.java @@ -2,160 +2,107 @@ package common.block.foliage; import common.block.Block; import common.block.Material; -import common.entity.types.EntityLiving; import common.item.Item; import common.model.Model; import common.model.ModelProvider; import common.properties.Property; import common.properties.PropertyEnum; import common.rng.Random; -import common.util.BlockPos; -import common.util.Facing; import common.util.Identifyable; import common.world.State; -import common.world.World; -public class BlockHugeMushroom extends Block -{ - public static final PropertyEnum VARIANT = PropertyEnum.create("variant", BlockHugeMushroom.EnumType.class); - - private final Block smallBlock; +public class BlockHugeMushroom extends Block { + public static enum EnumType implements Identifyable { + NORTH_WEST("north_west"), + NORTH("north"), + NORTH_EAST("north_east"), + WEST("west"), + CENTER("center"), + EAST("east"), + SOUTH_WEST("south_west"), + SOUTH("south"), + SOUTH_EAST("south_east"), + STEM("stem"), + ALL_INSIDE("all_inside"), + ALL_OUTSIDE("all_outside"), + ALL_STEM("all_stem"); - public BlockHugeMushroom(Material p_i46392_1_, Block p_i46392_3_) - { - super(p_i46392_1_); - this.setDefaultState(this.getBaseState().withProperty(VARIANT, BlockHugeMushroom.EnumType.ALL_OUTSIDE)); - this.smallBlock = p_i46392_3_; - } + private final String name; - /** - * Returns the quantity of items to drop on block destruction. - */ - public int quantityDropped(Random random) - { - return Math.max(0, random.range(-7, 2)); - } + private EnumType(String name) { + this.name = name; + } -// /** -// * Get the MapColor for this Block and the given BlockState -// */ -// public MapColor getMapColor(IBlockState state) -// { -// switch ((BlockHugeMushroom.EnumType)state.getValue(VARIANT)) -// { -// case ALL_STEM: -// return MapColor.clothColor; -// -// case ALL_INSIDE: -// return MapColor.sandColor; -// -// case STEM: -// return MapColor.sandColor; -// -// default: -// return super.getMapColor(state); -// } -// } + public String toString() { + return this.name; + } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return this.smallBlock.getItem(); - } + public String getName() { + return this.name; + } + } - public Item getItem(World worldIn, BlockPos pos) - { - return this.smallBlock.getItem(); - } + public static final PropertyEnum VARIANT = PropertyEnum.create("variant", + BlockHugeMushroom.EnumType.class); - /** - * Called by ItemBlocks just before a block is actually set in the world, to allow for adjustments to the - * IBlockstate - */ - public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) - { - return this.getState(); - } + private final Block smallBlock; - protected Property[] getProperties() - { - return new Property[] {VARIANT}; - } - - public Model getModel(ModelProvider provider, String name, State state) { - switch(state.getValue(VARIANT)) { - case ALL_INSIDE: - return provider.getModel(name + "_inside").add().all(); - case ALL_OUTSIDE: - default: - return provider.getModel(name + "_cap").add().all(); - case ALL_STEM: - return provider.getModel(name + "_stem").add().all(); - case STEM: - return provider.getModel(name + "_stem").add().nswe().du(name + "_inside"); - case CENTER: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") - .w(name + "_inside").e(name + "_inside"); - case EAST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") - .w(name + "_inside").e(name + "_cap"); - case NORTH_EAST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") - .w(name + "_inside").e(name + "_cap"); - case NORTH: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") - .w(name + "_inside").e(name + "_inside"); - case NORTH_WEST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") - .w(name + "_cap").e(name + "_inside"); - case SOUTH_EAST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") - .w(name + "_inside").e(name + "_cap"); - case SOUTH: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") - .w(name + "_inside").e(name + "_inside"); - case SOUTH_WEST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") - .w(name + "_cap").e(name + "_inside"); - case WEST: - return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") - .w(name + "_cap").e(name + "_inside"); - } - } + public BlockHugeMushroom(Block smallBlock) { + super(Material.WOOD); + this.setDefaultState(this.getBaseState().withProperty(VARIANT, BlockHugeMushroom.EnumType.ALL_OUTSIDE)); + this.smallBlock = smallBlock; + } - public static enum EnumType implements Identifyable - { - NORTH_WEST("north_west"), - NORTH("north"), - NORTH_EAST("north_east"), - WEST("west"), - CENTER("center"), - EAST("east"), - SOUTH_WEST("south_west"), - SOUTH("south"), - SOUTH_EAST("south_east"), - STEM("stem"), - ALL_INSIDE("all_inside"), - ALL_OUTSIDE("all_outside"), - ALL_STEM("all_stem"); + protected int quantityDropped(Random random) { + return Math.max(0, random.range(-7, 2)); + } - private final String name; + public Item getItemDropped(State state, Random rand, int fortune) { + return this.smallBlock.getItemDropped(state, rand, fortune); + } - private EnumType(String name) - { - this.name = name; - } + protected Property[] getProperties() { + return new Property[] {VARIANT}; + } - public String toString() - { - return this.name; - } - - public String getName() - { - return this.name; - } - } + public Model getModel(ModelProvider provider, String name, State state) { + switch(state.getValue(VARIANT)) { + case ALL_INSIDE: + return provider.getModel(name + "_inside").add().all(); + case ALL_OUTSIDE: + default: + return provider.getModel(name + "_cap").add().all(); + case ALL_STEM: + return provider.getModel(name + "_stem").add().all(); + case STEM: + return provider.getModel(name + "_stem").add().nswe().du(name + "_inside"); + case CENTER: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") + .w(name + "_inside").e(name + "_inside"); + case EAST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") + .w(name + "_inside").e(name + "_cap"); + case NORTH_EAST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") + .w(name + "_inside").e(name + "_cap"); + case NORTH: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") + .w(name + "_inside").e(name + "_inside"); + case NORTH_WEST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_cap").s(name + "_inside") + .w(name + "_cap").e(name + "_inside"); + case SOUTH_EAST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") + .w(name + "_inside").e(name + "_cap"); + case SOUTH: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") + .w(name + "_inside").e(name + "_inside"); + case SOUTH_WEST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_cap") + .w(name + "_cap").e(name + "_inside"); + case WEST: + return provider.getModel(name + "_inside").add().d(name + "_inside").u(name + "_cap").n(name + "_inside").s(name + "_inside") + .w(name + "_cap").e(name + "_inside"); + } + } } diff --git a/common/src/main/java/common/block/foliage/BlockLeaves.java b/common/src/main/java/common/block/foliage/BlockLeaves.java index 6ca274a4..79e0f0a4 100755 --- a/common/src/main/java/common/block/foliage/BlockLeaves.java +++ b/common/src/main/java/common/block/foliage/BlockLeaves.java @@ -15,7 +15,6 @@ import common.init.WoodType; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; -import common.item.block.ItemColored; import common.item.tool.ItemShears; import common.model.Model; import common.model.ModelProvider; @@ -59,6 +58,7 @@ public class BlockLeaves extends BlockLeavesBase this.setLightOpacity(1); this.setStepSound(SoundType.GRASS); this.setFlammable(30, 60); + this.setItemColored(); LEAVES.add(this); MAPPING[type.ordinal() * LeavesType.values().length + subType.ordinal()] = this; } @@ -224,7 +224,7 @@ public class BlockLeaves extends BlockLeavesBase /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return random.chance(0, 1, this.type.getSaplingChance()); } @@ -317,8 +317,4 @@ public class BlockLeaves extends BlockLeavesBase public Property[] getIgnoredProperties() { return new Property[] {DECAY, BUSH}; } - - protected Item getItemToRegister() { - return new ItemColored(this); - } } diff --git a/common/src/main/java/common/block/foliage/BlockLilyPad.java b/common/src/main/java/common/block/foliage/BlockLilyPad.java index a665d5a6..3b338524 100755 --- a/common/src/main/java/common/block/foliage/BlockLilyPad.java +++ b/common/src/main/java/common/block/foliage/BlockLilyPad.java @@ -33,6 +33,8 @@ public class BlockLilyPad extends BlockBush implements Rotatable this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, f1, 0.5F + f); this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH)); this.setTab(CheatTab.PLANTS); + this.setFlatBlockTexture(); + this.setItemColored(); } public void addCollisionBoxesToList(World worldIn, BlockPos pos, State state, BoundingBox mask, List list, Entity collidingEntity) diff --git a/common/src/main/java/common/block/foliage/BlockMelon.java b/common/src/main/java/common/block/foliage/BlockMelon.java index ea81ba1f..5c6ec9d6 100755 --- a/common/src/main/java/common/block/foliage/BlockMelon.java +++ b/common/src/main/java/common/block/foliage/BlockMelon.java @@ -29,7 +29,7 @@ public class BlockMelon extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return random.range(3, 7); } @@ -37,7 +37,7 @@ public class BlockMelon extends Block /** * Get the quantity dropped based on the given fortune level */ - public int quantityDroppedWithBonus(int fortune, Random random) + protected int quantityDroppedWithBonus(int fortune, Random random) { return Math.min(9, this.quantityDropped(random) + random.zrange(1 + fortune)); } diff --git a/common/src/main/java/common/block/foliage/BlockPotato.java b/common/src/main/java/common/block/foliage/BlockPotato.java index c2a03535..c4b5c8d7 100755 --- a/common/src/main/java/common/block/foliage/BlockPotato.java +++ b/common/src/main/java/common/block/foliage/BlockPotato.java @@ -14,11 +14,6 @@ import common.world.World; public class BlockPotato extends BlockCrops { - protected Item getSeed() - { - return Items.potato; - } - protected Item getCrop() { return Items.potato; diff --git a/common/src/main/java/common/block/foliage/BlockReed.java b/common/src/main/java/common/block/foliage/BlockReed.java index 73f68611..91fb856f 100755 --- a/common/src/main/java/common/block/foliage/BlockReed.java +++ b/common/src/main/java/common/block/foliage/BlockReed.java @@ -7,7 +7,6 @@ import common.init.Items; import common.item.CheatTab; import common.item.Item; import common.item.StackSize; -import common.item.block.ItemSmallBlock; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -34,6 +33,7 @@ public class BlockReed extends Block float f = 0.375F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 1.0F, 0.5F + f); this.setTickRandomly(); + this.setFlatItemTexture(); } public void updateTick(AWorldServer worldIn, BlockPos pos, State state, Random rand) @@ -130,14 +130,6 @@ public class BlockReed extends Block return null; } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.reeds; - } - /** * Used to determine ambient occlusion and culling when rebuilding chunks for render */ @@ -151,11 +143,6 @@ public class BlockReed extends Block return false; } - public Item getItem(World worldIn, BlockPos pos) - { - return Items.reeds; - } - public int colorMultiplier(IWorldAccess worldIn, BlockPos pos, int renderPass) { return worldIn.getBiomeGenForCoords(pos).getGrassColorAtPos(pos); @@ -180,6 +167,6 @@ public class BlockReed extends Block } protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Zuckerrohr").setTab(CheatTab.PLANTS).setMaxAmount(StackSize.L); + return super.getItemToRegister().setMaxAmount(StackSize.L); } } diff --git a/common/src/main/java/common/block/foliage/BlockStem.java b/common/src/main/java/common/block/foliage/BlockStem.java index 213a6782..d69279c2 100755 --- a/common/src/main/java/common/block/foliage/BlockStem.java +++ b/common/src/main/java/common/block/foliage/BlockStem.java @@ -160,28 +160,18 @@ public class BlockStem extends BlockBush implements DirectionalUp, IGrowable if (!worldIn.client) { - Item item = this.getSeedItem(); + int i = ((Integer)state.getValue(AGE)).intValue(); - if (item != null) + for (int j = 0; j < 3; ++j) { - int i = ((Integer)state.getValue(AGE)).intValue(); - - for (int j = 0; j < 3; ++j) + if (worldIn.rand.zrange(15) <= i) { - if (worldIn.rand.zrange(15) <= i) - { - spawnAsEntity(worldIn, pos, new ItemStack(item)); - } + spawnAsEntity(worldIn, pos, new ItemStack(this.getItem())); } } } } - protected Item getSeedItem() - { - return this.crop == Blocks.pumpkin ? Items.pumpkin_stem : (this.crop == Blocks.melon_block ? Items.melon_stem : null); - } - /** * Get the Item that this Block should drop when harvested. */ @@ -190,12 +180,6 @@ public class BlockStem extends BlockBush implements DirectionalUp, IGrowable return null; } - public Item getItem(World worldIn, BlockPos pos) - { - Item item = this.getSeedItem(); - return item != null ? item : null; - } - /** * Whether this IGrowable can grow */ diff --git a/common/src/main/java/common/block/foliage/BlockTallGrass.java b/common/src/main/java/common/block/foliage/BlockTallGrass.java index 2ab24ffb..076ef8ba 100755 --- a/common/src/main/java/common/block/foliage/BlockTallGrass.java +++ b/common/src/main/java/common/block/foliage/BlockTallGrass.java @@ -7,7 +7,6 @@ import common.init.Blocks; import common.init.Items; import common.item.Item; import common.item.ItemStack; -import common.item.block.ItemColored; import common.item.tool.ItemShears; import common.model.Model; import common.model.ModelProvider; @@ -38,6 +37,8 @@ public class BlockTallGrass extends BlockBush implements IGrowable float f = 0.4F; this.setBlockBounds(0.5F - f, 0.0F, 0.5F - f, 0.5F + f, 0.8F, 0.5F + f); this.setFlammable(60, 100); + this.setFlatBlockTexture(); + this.setItemColored(); BUSHES[type.ordinal()] = this; } @@ -97,7 +98,7 @@ public class BlockTallGrass extends BlockBush implements IGrowable /** * Get the quantity dropped based on the given fortune level */ - public int quantityDroppedWithBonus(int fortune, Random random) + protected int quantityDroppedWithBonus(int fortune, Random random) { return random.roll(fortune * 2 + 1); } @@ -146,12 +147,8 @@ public class BlockTallGrass extends BlockBush implements IGrowable if(this.type != EnumType.DEAD_BUSH) return provider.getModel(this.type.getName()).crossTint(); else - return provider.getModel("deadbush").cross(); + return provider.getModel(this.type.getName()).cross(); } - - protected Item getItemToRegister() { - return new ItemColored(this, ""); - } public static enum EnumType implements Identifyable { diff --git a/common/src/main/java/common/block/foliage/BlockVine.java b/common/src/main/java/common/block/foliage/BlockVine.java index 15f00556..832764c1 100755 --- a/common/src/main/java/common/block/foliage/BlockVine.java +++ b/common/src/main/java/common/block/foliage/BlockVine.java @@ -10,7 +10,6 @@ import common.init.Items; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; -import common.item.block.ItemColored; import common.item.tool.ItemShears; import common.model.BlockLayer; import common.model.Model; @@ -45,6 +44,8 @@ public class BlockVine extends Block this.setTickRandomly(); this.setTab(CheatTab.PLANTS); this.setFlammable(15, 100); + this.setFlatBlockTexture(); + this.setItemColored(); } /** @@ -418,7 +419,7 @@ public class BlockVine extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } @@ -555,10 +556,6 @@ public class BlockVine extends Block return model; } } - - protected Item getItemToRegister() { - return new ItemColored(this, ""); - } public Property[] getUnsavedProperties() { return new Property[] {UP}; diff --git a/common/src/main/java/common/block/foliage/BlockWart.java b/common/src/main/java/common/block/foliage/BlockWart.java index 253dd0db..aeb62260 100755 --- a/common/src/main/java/common/block/foliage/BlockWart.java +++ b/common/src/main/java/common/block/foliage/BlockWart.java @@ -83,7 +83,7 @@ public class BlockWart extends BlockBush for (int j = 0; j < i; ++j) { - spawnAsEntity(worldIn, pos, new ItemStack(Items.soul_wart)); + spawnAsEntity(worldIn, pos, new ItemStack(this.getItem())); } } } @@ -99,16 +99,11 @@ public class BlockWart extends BlockBush /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } - public Item getItem(World worldIn, BlockPos pos) - { - return Items.soul_wart; - } - protected Property[] getProperties() { return new Property[] {AGE}; diff --git a/common/src/main/java/common/block/liquid/BlockLiquid.java b/common/src/main/java/common/block/liquid/BlockLiquid.java index 8b60ced4..15ef996e 100755 --- a/common/src/main/java/common/block/liquid/BlockLiquid.java +++ b/common/src/main/java/common/block/liquid/BlockLiquid.java @@ -163,7 +163,7 @@ public abstract class BlockLiquid extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } diff --git a/common/src/main/java/common/block/natural/BlockClay.java b/common/src/main/java/common/block/natural/BlockClay.java index 9f156004..8eb2d534 100755 --- a/common/src/main/java/common/block/natural/BlockClay.java +++ b/common/src/main/java/common/block/natural/BlockClay.java @@ -27,7 +27,7 @@ public class BlockClay extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 4; } diff --git a/common/src/main/java/common/block/natural/BlockFire.java b/common/src/main/java/common/block/natural/BlockFire.java index 4a9390f4..365a584d 100755 --- a/common/src/main/java/common/block/natural/BlockFire.java +++ b/common/src/main/java/common/block/natural/BlockFire.java @@ -96,7 +96,7 @@ public class BlockFire extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } diff --git a/common/src/main/java/common/block/natural/BlockGlowstone.java b/common/src/main/java/common/block/natural/BlockGlowstone.java index 77a18c2f..3336e7ba 100755 --- a/common/src/main/java/common/block/natural/BlockGlowstone.java +++ b/common/src/main/java/common/block/natural/BlockGlowstone.java @@ -23,7 +23,7 @@ public class BlockGlowstone extends Block /** * Get the quantity dropped based on the given fortune level */ - public int quantityDroppedWithBonus(int fortune, Random random) + protected int quantityDroppedWithBonus(int fortune, Random random) { return ExtMath.clampi(this.quantityDropped(random) + random.zrange(fortune + 1), 1, 4); } @@ -31,7 +31,7 @@ public class BlockGlowstone extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return random.range(2, 4); } diff --git a/common/src/main/java/common/block/natural/BlockGravel.java b/common/src/main/java/common/block/natural/BlockGravel.java index e182c4bb..1a26a185 100755 --- a/common/src/main/java/common/block/natural/BlockGravel.java +++ b/common/src/main/java/common/block/natural/BlockGravel.java @@ -20,11 +20,11 @@ public class BlockGravel extends BlockFalling { int chance = Vars.flintChance; if(chance <= 0) - return this.getItem(); + return super.getItemDropped(state, rand, fortune); fortune *= 3; if(fortune >= chance) fortune = chance - 1; - return rand.chance(chance - fortune) ? Items.flint : this.getItem(); + return rand.chance(chance - fortune) ? Items.flint : super.getItemDropped(state, rand, fortune); } // public MapColor getMapColor(IBlockState state) diff --git a/common/src/main/java/common/block/natural/BlockIce.java b/common/src/main/java/common/block/natural/BlockIce.java index 725f6fe2..6022a08c 100755 --- a/common/src/main/java/common/block/natural/BlockIce.java +++ b/common/src/main/java/common/block/natural/BlockIce.java @@ -6,7 +6,6 @@ import common.enchantment.EnchantmentHelper; import common.entity.npc.EntityNPC; import common.init.Blocks; import common.item.CheatTab; -import common.item.ItemStack; import common.rng.Random; import common.tileentity.TileEntity; import common.util.BlockPos; @@ -26,24 +25,21 @@ public class BlockIce extends BlockTranslucent { public void harvestBlock(World world, EntityNPC player, BlockPos pos, State state, TileEntity tile) { if(this.canSilkHarvest() && EnchantmentHelper.getSilkTouchModifier(player)) { - ItemStack stack = this.createStackedBlock(state); - if(stack != null) - spawnAsEntity(world, pos, stack); + super.harvestBlock(world, player, pos, state, tile); } else { if(world.doesWaterVaporize(pos)) { world.setBlockToAir(pos); return; } - int fortune = EnchantmentHelper.getFortuneModifier(player); - this.dropBlockAsItem(world, pos, state, fortune); + super.harvestBlock(world, player, pos, state, tile); Material material = world.getState(pos.down()).getBlock().getMaterial(); if(material.blocksMovement() || material.isLiquid()) world.setState(pos, Blocks.flowing_water.getState()); } } - public int quantityDropped(Random rand) { + protected int quantityDropped(Random rand) { return 0; } diff --git a/common/src/main/java/common/block/natural/BlockOre.java b/common/src/main/java/common/block/natural/BlockOre.java index 5552ca01..0260eab8 100755 --- a/common/src/main/java/common/block/natural/BlockOre.java +++ b/common/src/main/java/common/block/natural/BlockOre.java @@ -48,7 +48,7 @@ public class BlockOre extends Block public Item getItemDropped(State state, Random rand, int fortune) { - return this.dropItem == null ? this.getItem() : this.dropItem.getItem(); + return this.dropItem == null ? super.getItemDropped(state, rand, fortune) : this.dropItem.getItem(); // this == Blocks.coal_ore ? Items.coal : // (this == Blocks.diamond_ore ? Items.diamond : // (this == Blocks.lapis_ore ? Items.dye : @@ -57,13 +57,13 @@ public class BlockOre extends Block // this.getItem())))); } - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return this.dropItem == null ? 1 : (this.dropItem.getSize() + (this.dropChance > 0 ? random.zrange(this.dropChance + 1) : 0)); // this == Blocks.lapis_ore ? 4 + random.nextInt(5) : 1; } - public int quantityDroppedWithBonus(int fortune, Random random) + protected int quantityDroppedWithBonus(int fortune, Random random) { if (fortune > 0 && this.getItem() != this.getItemDropped(this.getState(), random, fortune)) diff --git a/common/src/main/java/common/block/natural/BlockPackedIce.java b/common/src/main/java/common/block/natural/BlockPackedIce.java index 59ddc47f..322fa2b7 100755 --- a/common/src/main/java/common/block/natural/BlockPackedIce.java +++ b/common/src/main/java/common/block/natural/BlockPackedIce.java @@ -17,7 +17,7 @@ public class BlockPackedIce extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } diff --git a/common/src/main/java/common/block/natural/BlockSnow.java b/common/src/main/java/common/block/natural/BlockSnow.java index e072ad76..4fbe8f40 100755 --- a/common/src/main/java/common/block/natural/BlockSnow.java +++ b/common/src/main/java/common/block/natural/BlockSnow.java @@ -134,7 +134,7 @@ public class BlockSnow extends Block /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } diff --git a/common/src/main/java/common/block/natural/BlockSnowBlock.java b/common/src/main/java/common/block/natural/BlockSnowBlock.java index 0e9dd523..a0cbc480 100755 --- a/common/src/main/java/common/block/natural/BlockSnowBlock.java +++ b/common/src/main/java/common/block/natural/BlockSnowBlock.java @@ -23,7 +23,7 @@ public class BlockSnowBlock extends Block { return Items.snowball; } - public int quantityDropped(Random rand) { + protected int quantityDropped(Random rand) { return rand.range(2, 4); } diff --git a/common/src/main/java/common/block/natural/BlockWeb.java b/common/src/main/java/common/block/natural/BlockWeb.java index 245183fb..ca541b93 100755 --- a/common/src/main/java/common/block/natural/BlockWeb.java +++ b/common/src/main/java/common/block/natural/BlockWeb.java @@ -21,7 +21,7 @@ public class BlockWeb extends Block { super(Material.FLUFF); this.setTab(CheatTab.DECORATION); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); } /** diff --git a/common/src/main/java/common/block/tech/BlockActiveDisplay.java b/common/src/main/java/common/block/tech/BlockActiveDisplay.java index 7abf8e32..19e6f4fd 100644 --- a/common/src/main/java/common/block/tech/BlockActiveDisplay.java +++ b/common/src/main/java/common/block/tech/BlockActiveDisplay.java @@ -19,7 +19,6 @@ public class BlockActiveDisplay extends BlockDisplay implements ITileEntityProvi public BlockActiveDisplay(BlockInactiveDisplay inactive) { super(inactive.getDensity()); - this.hasTile = true; this.setLightLevel(1.0f); this.inactive = inactive; inactive.setActive(this); @@ -27,9 +26,9 @@ public class BlockActiveDisplay extends BlockDisplay implements ITileEntityProvi public void onBlockRemoved(AWorldServer world, BlockPos pos, State state) { super.onBlockRemoved(world, pos, state); - world.removeTileEntity(pos); Pair span = removing ? null : this.getSpan(world, pos, state.getValue(FACING)); if(span != null) { + world.removeTileEntity(pos); removing = true; for(BlockPos loc : BlockPos.getAllInBox(span.first(), span.second())) { if(!loc.equals(pos)) @@ -39,12 +38,6 @@ public class BlockActiveDisplay extends BlockDisplay implements ITileEntityProvi } } - public boolean onBlockEventReceived(World world, BlockPos pos, State state, int id, int param) { - super.onBlockEventReceived(world, pos, state, id, param); - TileEntity tile = world.getTileEntity(pos); - return tile == null ? false : tile.receiveClientEvent(id, param); - } - public TileEntity createNewTileEntity() { return new TileEntityDisplay(this.density); } diff --git a/common/src/main/java/common/block/tech/BlockBasePressurePlate.java b/common/src/main/java/common/block/tech/BlockBasePressurePlate.java index f77272a4..6df48695 100755 --- a/common/src/main/java/common/block/tech/BlockBasePressurePlate.java +++ b/common/src/main/java/common/block/tech/BlockBasePressurePlate.java @@ -208,7 +208,7 @@ public abstract class BlockBasePressurePlate extends Block /** * Can this block provide power. Only wire currently seems to have this change based on its state. */ - public boolean canConnectToWire() + public boolean canConnectToWire(State state) { return true; } diff --git a/common/src/main/java/common/block/tech/BlockBrewingStand.java b/common/src/main/java/common/block/tech/BlockBrewingStand.java index 2745bc75..649af101 100755 --- a/common/src/main/java/common/block/tech/BlockBrewingStand.java +++ b/common/src/main/java/common/block/tech/BlockBrewingStand.java @@ -2,15 +2,12 @@ package common.block.tech; import java.util.List; -import common.block.BlockContainer; +import common.block.Block; +import common.block.ITileEntityProvider; import common.block.Material; import common.entity.Entity; import common.entity.npc.EntityNPC; -import common.init.Items; import common.inventory.InventoryHelper; -import common.item.CheatTab; -import common.item.Item; -import common.item.block.ItemSmallBlock; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; @@ -28,7 +25,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockBrewingStand extends BlockContainer +public class BlockBrewingStand extends Block implements ITileEntityProvider { private static final Model brewing_stand_bottles_2 = ModelProvider.getModelProvider().getModel("brewing_stand") .add(7, 0, 7, 9, 14, 9) @@ -356,6 +353,7 @@ public class BlockBrewingStand extends BlockContainer { super(Material.SOLID); this.setDefaultState(this.getBaseState().withProperty(HAS_BOTTLE[0], Boolean.valueOf(false)).withProperty(HAS_BOTTLE[1], Boolean.valueOf(false)).withProperty(HAS_BOTTLE[2], Boolean.valueOf(false))); + this.setFlatItemTexture(); } // /** @@ -374,14 +372,6 @@ public class BlockBrewingStand extends BlockContainer return false; } - /** - * The type of render function called. 3 for standard block models, 2 for TESR's, 1 for liquids, -1 is no render - */ - public int getRenderType() - { - return 3; - } - /** * Returns a new instance of a block's tile entity class. Called on placing the block. */ @@ -454,19 +444,6 @@ public class BlockBrewingStand extends BlockContainer super.onBlockRemoved(worldIn, pos, state); } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.brewing_stand; - } - - public Item getItem(World worldIn, BlockPos pos) - { - return Items.brewing_stand; - } - public BlockLayer getBlockLayer() { return BlockLayer.CUTOUT; @@ -485,8 +462,4 @@ public class BlockBrewingStand extends BlockContainer return brewing_stand_bottles[(state.getValue(HAS_BOTTLE[0]) ? 1 : 0) | (state.getValue(HAS_BOTTLE[1]) ? 2 : 0) | (state.getValue(HAS_BOTTLE[2]) ? 4 : 0)]; } - - protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Braustand").setTab(CheatTab.TECHNOLOGY); - } } diff --git a/common/src/main/java/common/block/tech/BlockButton.java b/common/src/main/java/common/block/tech/BlockButton.java index 9830f36d..05082c43 100755 --- a/common/src/main/java/common/block/tech/BlockButton.java +++ b/common/src/main/java/common/block/tech/BlockButton.java @@ -214,7 +214,7 @@ public class BlockButton extends Block implements Directional /** * Can this block provide power. Only wire currently seems to have this change based on its state. */ - public boolean canConnectToWire() + public boolean canConnectToWire(State state) { return true; } diff --git a/common/src/main/java/common/block/tech/BlockCauldron.java b/common/src/main/java/common/block/tech/BlockCauldron.java index 8ec807da..74a40e60 100755 --- a/common/src/main/java/common/block/tech/BlockCauldron.java +++ b/common/src/main/java/common/block/tech/BlockCauldron.java @@ -11,7 +11,6 @@ import common.init.Items; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; -import common.item.block.ItemSmallBlock; import common.model.Model; import common.model.ModelProvider; import common.properties.Property; @@ -413,6 +412,7 @@ public class BlockCauldron extends Block { super(Material.SOLID); this.setDefaultState(this.getBaseState().withProperty(LEVEL, Integer.valueOf(0))); + this.setFlatItemTexture(); } /** @@ -571,19 +571,6 @@ public class BlockCauldron extends Block } } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.cauldron; - } - - public Item getItem(World worldIn, BlockPos pos) - { - return Items.cauldron; - } - protected Property[] getProperties() { return new Property[] {LEVEL}; @@ -596,8 +583,4 @@ public class BlockCauldron extends Block public Model getModel(ModelProvider provider, String name, State state) { return cauldron_levels[state.getValue(LEVEL)]; } - - protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Kessel").setTab(CheatTab.TECHNOLOGY); - } } diff --git a/common/src/main/java/common/block/tech/BlockChest.java b/common/src/main/java/common/block/tech/BlockChest.java index 5efaeebb..13a1f323 100755 --- a/common/src/main/java/common/block/tech/BlockChest.java +++ b/common/src/main/java/common/block/tech/BlockChest.java @@ -2,7 +2,8 @@ package common.block.tech; import java.util.Map; -import common.block.BlockContainer; +import common.block.Block; +import common.block.ITileEntityProvider; import common.block.Rotatable; import common.block.SoundType; import common.collect.Maps; @@ -12,13 +13,12 @@ import common.entity.Entity; import common.entity.animal.EntityCat; import common.entity.npc.EntityNPC; import common.entity.types.EntityLiving; +import common.init.Items; import common.init.SoundEvent; import common.inventory.IInventory; import common.inventory.InventoryHelper; import common.item.CheatTab; -import common.item.Item; import common.item.ItemStack; -import common.item.block.ItemChest; import common.item.tool.ItemKey; import common.packet.SPacketSoundEffect; import common.properties.Property; @@ -32,7 +32,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockChest extends BlockContainer implements Rotatable +public class BlockChest extends Block implements ITileEntityProvider, Rotatable { private static final Map CHESTS = Maps.newHashMap(); @@ -84,19 +84,6 @@ public class BlockChest extends BlockContainer implements Rotatable return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); } - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) - { - if (stack.hasDisplayName()) - { - TileEntity tileentity = worldIn.getTileEntity(pos); - - if (tileentity instanceof TileEntityChest) - { - ((TileEntityChest)tileentity).setCustomName(stack.getDisplayName()); - } - } - } - public State correctFacing(World worldIn, BlockPos pos, State state) { Facing enumfacing = null; @@ -173,8 +160,8 @@ public class BlockChest extends BlockContainer implements Rotatable if (chest != null) { - ItemStack stack = Vars.locking ? playerIn.getHeldItem() : null; - if(stack != null && stack.getItem() instanceof ItemKey) { + ItemStack stack = playerIn.getHeldItem(); + if(Vars.locking && stack != null && stack.getItem() instanceof ItemKey) { if(chest.getLockCode() != null) { if(stack.hasDisplayName() && stack.getDisplayName().equals(chest.getLockCode())) { chest.setLockCode(null); @@ -189,7 +176,11 @@ public class BlockChest extends BlockContainer implements Rotatable playerIn.connection.sendPacket(new SPacketSoundEffect(SoundEvent.DOOR, playerIn.posX, playerIn.posY, playerIn.posZ, 1.0F)); return true; } - } + } + else if(stack != null && stack.getItem() == Items.name_tag && stack.hasDisplayName()) { + chest.setCustomName(stack.getDisplayName()); + return true; + } playerIn.connection.show(chest); } @@ -250,8 +241,4 @@ public class BlockChest extends BlockContainer implements Rotatable public String getFallbackTexture() { return "oak_planks"; } - - protected Item getItemToRegister() { - return new ItemChest(this); - } } diff --git a/common/src/main/java/common/block/tech/BlockDaylightDetector.java b/common/src/main/java/common/block/tech/BlockDaylightDetector.java index eecd9121..207e6fcf 100755 --- a/common/src/main/java/common/block/tech/BlockDaylightDetector.java +++ b/common/src/main/java/common/block/tech/BlockDaylightDetector.java @@ -1,6 +1,7 @@ package common.block.tech; -import common.block.BlockContainer; +import common.block.Block; +import common.block.ITileEntityProvider; import common.block.Material; import common.block.SoundType; import common.entity.npc.EntityNPC; @@ -13,7 +14,6 @@ import common.model.ModelProvider; import common.model.Transforms; import common.properties.Property; import common.properties.PropertyInteger; -import common.rng.Random; import common.tileentity.TileEntity; import common.tileentity.TileEntityDaylightDetector; import common.util.BlockPos; @@ -25,7 +25,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockDaylightDetector extends BlockContainer +public class BlockDaylightDetector extends Block implements ITileEntityProvider { public static final PropertyInteger POWER = PropertyInteger.create("power", 0, 15); private final boolean inverted; @@ -105,15 +105,7 @@ public class BlockDaylightDetector extends BlockContainer // } } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.daylight_detector; - } - - public Item getItem(World worldIn, BlockPos pos) + public Item getItem() { return Items.daylight_detector; } @@ -131,18 +123,10 @@ public class BlockDaylightDetector extends BlockContainer return false; } - /** - * The type of render function called. 3 for standard block models, 2 for TESR's, 1 for liquids, -1 is no render - */ - public int getRenderType() - { - return 3; - } - /** * Can this block provide power. Only wire currently seems to have this change based on its state. */ - public boolean canConnectToWire() + public boolean canConnectToWire(State state) { return true; } diff --git a/common/src/main/java/common/block/tech/BlockDispenser.java b/common/src/main/java/common/block/tech/BlockDispenser.java index f9d30fb2..b408f51d 100755 --- a/common/src/main/java/common/block/tech/BlockDispenser.java +++ b/common/src/main/java/common/block/tech/BlockDispenser.java @@ -1,7 +1,8 @@ package common.block.tech; -import common.block.BlockContainer; +import common.block.Block; import common.block.Directional; +import common.block.ITileEntityProvider; import common.block.Material; import common.entity.item.EntityItem; import common.entity.npc.EntityNPC; @@ -23,7 +24,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockDispenser extends BlockContainer implements Directional +public class BlockDispenser extends Block implements ITileEntityProvider, Directional { protected Random rand = new Random(); @@ -158,14 +159,6 @@ public class BlockDispenser extends BlockContainer implements Directional return new Vec3(d0, d1, d2); } - /** - * The type of render function called. 3 for standard block models, 2 for TESR's, 1 for liquids, -1 is no render - */ - public int getRenderType() - { - return 3; - } - /** * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) */ diff --git a/common/src/main/java/common/block/tech/BlockFurnace.java b/common/src/main/java/common/block/tech/BlockFurnace.java index 7cf3711c..65e4487f 100755 --- a/common/src/main/java/common/block/tech/BlockFurnace.java +++ b/common/src/main/java/common/block/tech/BlockFurnace.java @@ -1,7 +1,7 @@ package common.block.tech; import common.block.Block; -import common.block.BlockContainer; +import common.block.ITileEntityProvider; import common.block.Rotatable; import common.block.Material; import common.entity.npc.EntityNPC; @@ -25,7 +25,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockFurnace extends BlockContainer implements Rotatable +public class BlockFurnace extends Block implements ITileEntityProvider, Rotatable { private final boolean isBurning; private static boolean keepInventory; @@ -37,14 +37,6 @@ public class BlockFurnace extends BlockContainer implements Rotatable this.isBurning = isBurning; } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.furnace; - } - public void onBlockAdded(AWorldServer worldIn, BlockPos pos, State state) { this.setDefaultFacing(worldIn, pos, state); @@ -195,19 +187,11 @@ public class BlockFurnace extends BlockContainer implements Rotatable super.onBlockRemoved(worldIn, pos, state); } - public Item getItem(World worldIn, BlockPos pos) + public Item getItem() { return Items.furnace; } - /** - * The type of render function called. 3 for standard block models, 2 for TESR's, 1 for liquids, -1 is no render - */ - public int getRenderType() - { - return 3; - } - /** * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) */ @@ -225,4 +209,8 @@ public class BlockFurnace extends BlockContainer implements Rotatable return provider.getModel("furnace_side").add().du("furnace_top").n("furnace_front_" + (this.isBurning ? "on" : "off")) .s().we().rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } + + protected Item getItemToRegister() { + return this.isBurning ? null : super.getItemToRegister(); + } } diff --git a/common/src/main/java/common/block/tech/BlockHopper.java b/common/src/main/java/common/block/tech/BlockHopper.java index 62b11b06..b810e2a9 100755 --- a/common/src/main/java/common/block/tech/BlockHopper.java +++ b/common/src/main/java/common/block/tech/BlockHopper.java @@ -1,8 +1,10 @@ package common.block.tech; import java.util.List; -import common.block.BlockContainer; + +import common.block.Block; import common.block.DirectionalDown; +import common.block.ITileEntityProvider; import common.block.Material; import common.entity.Entity; import common.entity.npc.EntityNPC; @@ -26,7 +28,7 @@ import common.world.State; import common.world.World; import common.world.AWorldServer; -public class BlockHopper extends BlockContainer implements DirectionalDown +public class BlockHopper extends Block implements ITileEntityProvider, DirectionalDown { private static final Model hopper_down = ModelProvider.getModelProvider().getModel("hopper_outside") .add(0, 10, 0, 16, 11, 16) @@ -86,6 +88,7 @@ public class BlockHopper extends BlockContainer implements DirectionalDown this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.DOWN)); this.setTab(CheatTab.TECHNOLOGY); this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + this.setFlatItemTexture(); } public void setBlockBoundsBasedOnState(IWorldAccess worldIn, BlockPos pos) @@ -168,14 +171,6 @@ public class BlockHopper extends BlockContainer implements DirectionalDown super.onBlockRemoved(worldIn, pos, state); } - /** - * The type of render function called. 3 for standard block models, 2 for TESR's, 1 for liquids, -1 is no render - */ - public int getRenderType() - { - return 3; - } - public boolean isFullCube() { return false; @@ -261,8 +256,4 @@ public class BlockHopper extends BlockContainer implements DirectionalDown .e().uv(0, 8, 4, 12).noCull() .rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - - protected Item getItemToRegister() { - return new ItemBlock(this, "hopper", true); - } } diff --git a/common/src/main/java/common/block/tech/BlockInactiveDisplay.java b/common/src/main/java/common/block/tech/BlockInactiveDisplay.java index 2eeeb25c..45caffa6 100644 --- a/common/src/main/java/common/block/tech/BlockInactiveDisplay.java +++ b/common/src/main/java/common/block/tech/BlockInactiveDisplay.java @@ -41,10 +41,6 @@ public class BlockInactiveDisplay extends BlockDisplay { } return true; } - - protected Item getItemToRegister() { - return new ItemBlock(this, BlockRegistry.getName(this)); - } protected BlockDisplay getOtherBlock() { return this.active; diff --git a/common/src/main/java/common/block/tech/BlockLever.java b/common/src/main/java/common/block/tech/BlockLever.java index 20fcef25..a34b51e0 100755 --- a/common/src/main/java/common/block/tech/BlockLever.java +++ b/common/src/main/java/common/block/tech/BlockLever.java @@ -34,6 +34,7 @@ public class BlockLever extends Block super(Material.SMALL); this.setDefaultState(this.getBaseState().withProperty(FACING, BlockLever.EnumOrientation.NORTH).withProperty(POWERED, Boolean.valueOf(false))); this.setTab(CheatTab.TECHNOLOGY); + this.setFlatBlockTexture(); } public BoundingBox getCollisionBoundingBox(World worldIn, BlockPos pos, State state) @@ -238,7 +239,7 @@ public class BlockLever extends Block /** * Can this block provide power. Only wire currently seems to have this change based on its state. */ - public boolean canConnectToWire() + public boolean canConnectToWire(State state) { return true; } @@ -288,10 +289,6 @@ public class BlockLever extends Block .e("lever").uv(7, 6, 9, 16).noCull() .rotate(getRotation(state.getValue(FACING))); } - - protected Item getItemToRegister() { - return new ItemBlock(this, "lever", false); - } public static enum EnumOrientation implements Identifyable, DirectionVec { diff --git a/common/src/main/java/common/block/tech/BlockLitTorch.java b/common/src/main/java/common/block/tech/BlockLitTorch.java index 7321e448..6975083f 100755 --- a/common/src/main/java/common/block/tech/BlockLitTorch.java +++ b/common/src/main/java/common/block/tech/BlockLitTorch.java @@ -111,15 +111,7 @@ public class BlockLitTorch extends BlockTorch { return null; } - public Item getItemDropped(State state, Random rand, int fortune) { + public Item getItem() { return this.unlit.getItem(); } - - public Item getItem(World worldIn, BlockPos pos) { - return this.unlit.getItem(); - } - - public ItemStack createStackedBlock(State state) { - return new ItemStack(this.unlit.getItem()); - } } diff --git a/common/src/main/java/common/block/tech/BlockMachine.java b/common/src/main/java/common/block/tech/BlockMachine.java index 205a5a2c..c911cff1 100755 --- a/common/src/main/java/common/block/tech/BlockMachine.java +++ b/common/src/main/java/common/block/tech/BlockMachine.java @@ -20,7 +20,6 @@ import common.world.AWorldServer; public abstract class BlockMachine extends Block implements Rotatable, ITileEntityProvider { protected BlockMachine(Material material) { super(material); - this.hasTile = true; this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH)); this.setTab(CheatTab.TECHNOLOGY); } @@ -58,13 +57,6 @@ public abstract class BlockMachine extends Block implements Rotatable, ITileEnti InventoryHelper.dropInventoryItems(worldIn, pos, (Device)tileentity); } super.onBlockRemoved(worldIn, pos, state); - worldIn.removeTileEntity(pos); - } - - public boolean onBlockEventReceived(World worldIn, BlockPos pos, State state, int eventID, int eventParam) { - super.onBlockEventReceived(worldIn, pos, state, eventID, eventParam); - TileEntity tileentity = worldIn.getTileEntity(pos); - return tileentity == null ? false : tileentity.receiveClientEvent(eventID, eventParam); } public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) { diff --git a/common/src/main/java/common/block/tech/BlockNuke.java b/common/src/main/java/common/block/tech/BlockNuke.java index 6a3b7f12..ea27d126 100755 --- a/common/src/main/java/common/block/tech/BlockNuke.java +++ b/common/src/main/java/common/block/tech/BlockNuke.java @@ -57,6 +57,6 @@ public class BlockNuke extends Block } protected Item getItemToRegister() { - return new ItemBlock(this).setColor(TextColor.RED); + return super.getItemToRegister().setColor(TextColor.RED); } } diff --git a/common/src/main/java/common/block/tech/BlockPistonBase.java b/common/src/main/java/common/block/tech/BlockPistonBase.java index ccb2c08b..08b693ab 100755 --- a/common/src/main/java/common/block/tech/BlockPistonBase.java +++ b/common/src/main/java/common/block/tech/BlockPistonBase.java @@ -14,15 +14,12 @@ import common.init.Blocks; import common.init.SoundEvent; import common.item.CheatTab; import common.item.Item; -import common.item.ItemStack; import common.item.block.ItemPiston; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; import common.properties.Property; import common.properties.PropertyBool; -import common.tileentity.TileEntity; -import common.tileentity.TileEntityPiston; import common.util.BlockPos; import common.util.BoundingBox; import common.util.ExtMath; @@ -249,6 +246,7 @@ public class BlockPistonBase extends Block implements Directional } public static final PropertyBool EXTENDED = PropertyBool.create("extended"); + private static final List TEMP_ENTITIES = Lists.newArrayList(); /** This piston is the sticky one? */ private final boolean isSticky; @@ -274,7 +272,7 @@ public class BlockPistonBase extends Block implements Directional /** * Called by ItemBlocks after a block is set in the world, to allow post-place logic */ - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) + public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer) { worldIn.setState(pos, state.withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)), 2); @@ -321,13 +319,34 @@ public class BlockPistonBase extends Block implements Directional { if ((new BlockPistonStructureHelper(worldIn, pos, enumfacing, true)).canMove()) { - worldIn.addBlockEvent(pos, this, 0, enumfacing.getIndex()); + if (!this.doMove(worldIn, pos, enumfacing, true)) + { + return; + } + + worldIn.setState(pos, state.withProperty(EXTENDED, Boolean.valueOf(true)), 2); + worldIn.playSound(SoundEvent.PISTON_OUT, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 0.5F); } } else if (!flag && ((Boolean)state.getValue(EXTENDED)).booleanValue()) { worldIn.setState(pos, state.withProperty(EXTENDED, Boolean.valueOf(false)), 2); - worldIn.addBlockEvent(pos, this, 1, enumfacing.getIndex()); + if (this.isSticky) + { + BlockPos blockpos = pos.add(enumfacing.getFrontOffsetX() * 2, enumfacing.getFrontOffsetY() * 2, enumfacing.getFrontOffsetZ() * 2); + Block block = worldIn.getState(blockpos).getBlock(); + + if (block != Blocks.air && canPush(block, worldIn, blockpos, enumfacing.getOpposite(), false) && (block.getMobilityFlag() == 0 || block == Blocks.piston || block == Blocks.sticky_piston)) + { + this.doMove(worldIn, pos, enumfacing, false); + } + } + else + { + worldIn.setBlockToAir(pos.offset(enumfacing)); + } + + worldIn.playSound(SoundEvent.PISTON_IN, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 0.5F); } } @@ -361,89 +380,6 @@ public class BlockPistonBase extends Block implements Directional // } } - /** - * Called on both Client and Server when World#addBlockEvent is called - */ - public boolean onBlockEventReceived(World worldIn, BlockPos pos, State state, int eventID, int eventParam) - { - Facing enumfacing = (Facing)state.getValue(FACING); - - if (!worldIn.client) - { - boolean flag = this.shouldBeExtended(worldIn, pos, enumfacing); - - if (flag && eventID == 1) - { - worldIn.setState(pos, state.withProperty(EXTENDED, Boolean.valueOf(true)), 2); - return false; - } - - if (!flag && eventID == 0) - { - return false; - } - } - - if (eventID == 0) - { - if (!this.doMove(worldIn, pos, enumfacing, true)) - { - return false; - } - - worldIn.setState(pos, state.withProperty(EXTENDED, Boolean.valueOf(true)), 2); - worldIn.playSound(SoundEvent.PISTON_OUT, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 0.5F); - } - else if (eventID == 1) - { - TileEntity tileentity1 = worldIn.getTileEntity(pos.offset(enumfacing)); - - if (tileentity1 instanceof TileEntityPiston) - { - ((TileEntityPiston)tileentity1).clearPistonTileEntity(); - } - - worldIn.setState(pos, Blocks.piston_extension.getState().withProperty(BlockPistonMoving.FACING, enumfacing).withProperty(BlockPistonMoving.TYPE, this.isSticky ? BlockPistonHead.EnumPistonType.STICKY : BlockPistonHead.EnumPistonType.DEFAULT), 3); - worldIn.setTileEntity(pos, BlockPistonMoving.newTileEntity(this.getState().withProperty(FACING, getFacing(eventParam)).withProperty(EXTENDED, (eventParam & 8) > 0), enumfacing, false, true)); - - if (this.isSticky) - { - BlockPos blockpos = pos.add(enumfacing.getFrontOffsetX() * 2, enumfacing.getFrontOffsetY() * 2, enumfacing.getFrontOffsetZ() * 2); - Block block = worldIn.getState(blockpos).getBlock(); - boolean flag1 = false; - - if (block == Blocks.piston_extension) - { - TileEntity tileentity = worldIn.getTileEntity(blockpos); - - if (tileentity instanceof TileEntityPiston) - { - TileEntityPiston tileentitypiston = (TileEntityPiston)tileentity; - - if (tileentitypiston.getFacing() == enumfacing && tileentitypiston.isExtending()) - { - tileentitypiston.clearPistonTileEntity(); - flag1 = true; - } - } - } - - if (!flag1 && block != Blocks.air && canPush(block, worldIn, blockpos, enumfacing.getOpposite(), false) && (block.getMobilityFlag() == 0 || block == Blocks.piston || block == Blocks.sticky_piston)) - { - this.doMove(worldIn, pos, enumfacing, false); - } - } - else - { - worldIn.setBlockToAir(pos.offset(enumfacing)); - } - - worldIn.playSound(SoundEvent.PISTON_IN, (double)pos.getX() + 0.5D, (double)pos.getY() + 0.5D, (double)pos.getZ() + 0.5D, 0.5F); - } - - return true; - } - public void setBlockBoundsBasedOnState(IWorldAccess worldIn, BlockPos pos) { State iblockstate = worldIn.getState(pos); @@ -634,8 +570,7 @@ public class BlockPistonBase extends Block implements Directional Block block1 = iblockstate.getBlock(); worldIn.setBlockToAir(blockpos2); blockpos2 = blockpos2.offset(enumfacing); - worldIn.setState(blockpos2, Blocks.piston_extension.getState().withProperty(FACING, direction), 4); - worldIn.setTileEntity(blockpos2, BlockPistonMoving.newTileEntity(iblockstate, direction, extending, false)); + worldIn.setState(blockpos2, iblockstate, 2); --i; ablock[i] = block1; } @@ -644,11 +579,8 @@ public class BlockPistonBase extends Block implements Directional if (extending) { - BlockPistonHead.EnumPistonType blockpistonextension$enumpistontype = this.isSticky ? BlockPistonHead.EnumPistonType.STICKY : BlockPistonHead.EnumPistonType.DEFAULT; - State iblockstate1 = Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, direction).withProperty(BlockPistonHead.TYPE, blockpistonextension$enumpistontype); - State iblockstate2 = Blocks.piston_extension.getState().withProperty(BlockPistonMoving.FACING, direction).withProperty(BlockPistonMoving.TYPE, this.isSticky ? BlockPistonHead.EnumPistonType.STICKY : BlockPistonHead.EnumPistonType.DEFAULT); - worldIn.setState(blockpos1, iblockstate2, 4); - worldIn.setTileEntity(blockpos1, BlockPistonMoving.newTileEntity(iblockstate1, direction, true, false)); + State iblockstate1 = (this.isSticky ? Blocks.sticky_piston_head : Blocks.piston_head).getState().withProperty(BlockPistonHead.FACING, direction); + worldIn.setState(blockpos1, iblockstate1, 2); } for (int l = list1.size() - 1; l >= 0; --l) @@ -663,7 +595,7 @@ public class BlockPistonBase extends Block implements Directional if (extending) { - worldIn.notifyNeighborsOfStateChange(blockpos1, Blocks.piston_head); + worldIn.notifyNeighborsOfStateChange(blockpos1, this.isSticky ? Blocks.sticky_piston_head : Blocks.piston_head); worldIn.notifyNeighborsOfStateChange(pos, this); } @@ -671,6 +603,50 @@ public class BlockPistonBase extends Block implements Directional } } + private void launchWithSlimeBlock(World world, BlockPos pos, Facing pistonFacing, boolean extending) + { + float step = 0.25f; + + State state = world.getState(pos); + BoundingBox axisalignedbb = state.getBlock().getCollisionBoundingBox(world, pos, state); + + if (axisalignedbb != null) + { + List list = world.getEntitiesWithinAABBExcludingEntity((Entity)null, axisalignedbb); + + if (!list.isEmpty()) + { + TEMP_ENTITIES.addAll(list); + + for (Entity entity : TEMP_ENTITIES) + { + if (state.getBlock() == Blocks.slime_block && extending) + { + switch (pistonFacing.getAxis()) + { + case X: + entity.motionX = (double)pistonFacing.getFrontOffsetX(); + break; + + case Y: + entity.motionY = (double)pistonFacing.getFrontOffsetY(); + break; + + case Z: + entity.motionZ = (double)pistonFacing.getFrontOffsetZ(); + } + } + else + { + entity.moveEntity((double)pistonFacing.getFrontOffsetX(), (double)pistonFacing.getFrontOffsetY(), (double)pistonFacing.getFrontOffsetZ()); + } + } + + TEMP_ENTITIES.clear(); + } + } + } + /** * Possibly modify the given BlockState before rendering it on an Entity (Minecarts, Endermen, ...) */ diff --git a/common/src/main/java/common/block/tech/BlockPistonHead.java b/common/src/main/java/common/block/tech/BlockPistonHead.java index e2395e07..240a1b73 100755 --- a/common/src/main/java/common/block/tech/BlockPistonHead.java +++ b/common/src/main/java/common/block/tech/BlockPistonHead.java @@ -14,13 +14,10 @@ import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; import common.properties.Property; -import common.properties.PropertyBool; -import common.properties.PropertyEnum; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; -import common.util.Identifyable; import common.world.IWorldAccess; import common.world.State; import common.world.World; @@ -28,38 +25,17 @@ import common.world.AWorldServer; public class BlockPistonHead extends Block implements Directional { - public static final PropertyEnum TYPE = PropertyEnum.create("type", BlockPistonHead.EnumPistonType.class); - public static final PropertyBool SHORT = PropertyBool.create("short"); + private final boolean sticky; - public BlockPistonHead() + public BlockPistonHead(boolean sticky) { super(Material.PISTON); - this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(TYPE, BlockPistonHead.EnumPistonType.DEFAULT).withProperty(SHORT, Boolean.valueOf(false))); + this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH)); this.setStepSound(SoundType.STONE); this.setHardness(0.5F); + this.sticky = sticky; } -// public void onBlockHarvested(World worldIn, BlockPos pos, State state, EntityNPC player) -// { -// if (player.creative) -// { -// Facing enumfacing = (Facing)state.getValue(FACING); -// -// if (enumfacing != null) -// { -// BlockPos blockpos = pos.offset(enumfacing.getOpposite()); -// Block block = worldIn.getState(blockpos).getBlock(); -// -// if (block == Blocks.piston || block == Blocks.sticky_piston) -// { -// worldIn.setBlockToAir(blockpos); -// } -// } -// } -// -// super.onBlockHarvested(worldIn, pos, state, player); -// } - public void onBlockRemoved(AWorldServer worldIn, BlockPos pos, State state) { super.onBlockRemoved(worldIn, pos, state); @@ -103,7 +79,7 @@ public class BlockPistonHead extends Block implements Directional /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 0; } @@ -219,38 +195,19 @@ public class BlockPistonHead extends Block implements Directional return true; } - public static Facing getFacing(int meta) + public Item getItem() { - int i = meta & 7; - return i > 5 ? Facing.getFront(0) : Facing.getFront(i); - } - - public Item getItem(World worldIn, BlockPos pos) - { - return worldIn.getState(pos).getValue(TYPE) == BlockPistonHead.EnumPistonType.STICKY ? Items.sticky_piston : Items.piston; + return this.sticky ? Items.sticky_piston : Items.piston; } protected Property[] getProperties() { - return new Property[] {FACING, TYPE, SHORT}; + return new Property[] {FACING}; } public Model getModel(ModelProvider provider, String name, State state) { String side = "piston_side"; - return (state.getValue(SHORT) ? provider.getModel(state.getValue(TYPE) == EnumPistonType.STICKY ? "piston_top_sticky" : "piston_top") - .add(0, 0, 0, 16, 16, 4) - .d(side).uv(0, 0, 16, 4).rot(180) - .u(side).uv(0, 0, 16, 4) - .n().uv(0, 0, 16, 16) - .s("piston_top").uv(0, 0, 16, 16).noCull() - .w(side).uv(0, 0, 16, 4).rot(270) - .e(side).uv(0, 0, 16, 4).rot(90) - .add(6, 6, 4, 10, 10, 16) - .d(side).uv(4, 0, 16, 4).rot(90).noCull() - .u(side).uv(4, 0, 16, 4).rot(270).noCull() - .w(side).uv(16, 4, 4, 0).noCull() - .e(side).uv(4, 0, 16, 4).noCull() - : provider.getModel(state.getValue(TYPE) == EnumPistonType.STICKY ? "piston_top_sticky" : "piston_top") + return provider.getModel(this.sticky ? "piston_top_sticky" : "piston_top") .add(0, 0, 0, 16, 16, 4) .d(side).uv(0, 0, 16, 4).rot(180) .u(side).uv(0, 0, 16, 4) @@ -267,7 +224,7 @@ public class BlockPistonHead extends Block implements Directional .d(side).uv(0, 0, 4, 4).rot(90).noCull() .u(side).uv(0, 0, 4, 4).rot(270).noCull() .w(side).uv(4, 4, 0, 0).noCull() - .e(side).uv(0, 0, 4, 4).noCull()) + .e(side).uv(0, 0, 4, 4).noCull() .rotate(ModelRotation.getNorthRot(state.getValue(FACING).getAxis() == Facing.Axis.Y ? state.getValue(FACING).getOpposite() : state.getValue(FACING))); } @@ -275,31 +232,4 @@ public class BlockPistonHead extends Block implements Directional protected Item getItemToRegister() { return null; } - - public Property[] getUnsavedProperties() { - return new Property[] {SHORT}; - } - - public static enum EnumPistonType implements Identifyable - { - DEFAULT("normal"), - STICKY("sticky"); - - private final String name; - - private EnumPistonType(String name) - { - this.name = name; - } - - public String toString() - { - return this.name; - } - - public String getName() - { - return this.name; - } - } } diff --git a/common/src/main/java/common/block/tech/BlockPistonMoving.java b/common/src/main/java/common/block/tech/BlockPistonMoving.java deleted file mode 100755 index 4eb472fa..00000000 --- a/common/src/main/java/common/block/tech/BlockPistonMoving.java +++ /dev/null @@ -1,293 +0,0 @@ -package common.block.tech; - -import common.block.Block; -import common.block.BlockContainer; -import common.block.Material; -import common.entity.npc.EntityNPC; -import common.init.Blocks; -import common.item.Item; -import common.properties.Property; -import common.properties.PropertyEnum; -import common.rng.Random; -import common.tileentity.TileEntity; -import common.tileentity.TileEntityPiston; -import common.util.BlockPos; -import common.util.BoundingBox; -import common.util.Facing; -import common.util.HitPosition; -import common.util.Vec3; -import common.world.IWorldAccess; -import common.world.State; -import common.world.World; -import common.world.AWorldServer; - -public class BlockPistonMoving extends BlockContainer -{ - public static final PropertyEnum FACING = BlockPistonHead.FACING; - public static final PropertyEnum TYPE = BlockPistonHead.TYPE; - - public BlockPistonMoving() - { - super(Material.PISTON); - this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(TYPE, BlockPistonHead.EnumPistonType.DEFAULT)); - this.setHardness(-1.0F); - } - - /** - * Returns a new instance of a block's tile entity class. Called on placing the block. - */ - public TileEntity createNewTileEntity() - { - return null; - } - - public static TileEntity newTileEntity(State state, Facing facing, boolean extending, boolean renderHead) - { - return new TileEntityPiston(state, facing, extending, renderHead); - } - - public void onBlockRemoved(AWorldServer worldIn, BlockPos pos, State state) - { - TileEntity tileentity = worldIn.getTileEntity(pos); - - if (tileentity instanceof TileEntityPiston) - { - ((TileEntityPiston)tileentity).clearPistonTileEntity(); - } - else - { - super.onBlockRemoved(worldIn, pos, state); - } - } - - public boolean canPlaceBlockAt(World worldIn, BlockPos pos) - { - return false; - } - - /** - * Check whether this Block can be placed on the given side - */ - public boolean canPlaceBlockOnSide(World worldIn, BlockPos pos, Facing side) - { - return false; - } - - /** - * Called when a player destroys this Block - */ - public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, State state) - { - BlockPos blockpos = pos.offset(((Facing)state.getValue(FACING)).getOpposite()); - State iblockstate = worldIn.getState(blockpos); - - if (iblockstate.getBlock() instanceof BlockPistonBase && ((Boolean)iblockstate.getValue(BlockPistonBase.EXTENDED)).booleanValue()) - { - worldIn.setBlockToAir(blockpos); - } - } - - /** - * Used to determine ambient occlusion and culling when rebuilding chunks for render - */ - public boolean isOpaqueCube() - { - return false; - } - - public boolean isFullCube() - { - return false; - } - - public boolean onBlockActivated(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ) - { - if (!worldIn.client && worldIn.getTileEntity(pos) == null) - { - worldIn.setBlockToAir(pos); - return true; - } - else - { - return false; - } - } - - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return null; - } - - /** - * Spawns this Block's drops into the World as EntityItems. - */ - public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, State state, float chance, int fortune) - { - if (!worldIn.client) - { - TileEntityPiston tileentitypiston = this.getTileEntity(worldIn, pos); - - if (tileentitypiston != null) - { - State iblockstate = tileentitypiston.getPistonState(); - iblockstate.getBlock().dropBlockAsItem(worldIn, pos, iblockstate, 0); - } - } - } - - /** - * Ray traces through the blocks collision from start vector to end vector returning a ray trace hit. - */ - public HitPosition collisionRayTrace(World worldIn, BlockPos pos, Vec3 start, Vec3 end) - { - return null; - } - - /** - * Called when a neighboring block changes. - */ - public void onNeighborBlockChange(World worldIn, BlockPos pos, State state, Block neighborBlock) - { - if (!worldIn.client) - { - worldIn.getTileEntity(pos); - } - } - - public BoundingBox getCollisionBoundingBox(World worldIn, BlockPos pos, State state) - { - TileEntityPiston tileentitypiston = this.getTileEntity(worldIn, pos); - - if (tileentitypiston == null) - { - return null; - } - else - { - float f = tileentitypiston.getProgress(0.0F); - - if (tileentitypiston.isExtending()) - { - f = 1.0F - f; - } - - return this.getBoundingBox(worldIn, pos, tileentitypiston.getPistonState(), f, tileentitypiston.getFacing()); - } - } - - public void setBlockBoundsBasedOnState(IWorldAccess worldIn, BlockPos pos) - { - TileEntityPiston tileentitypiston = this.getTileEntity(worldIn, pos); - - if (tileentitypiston != null) - { - State iblockstate = tileentitypiston.getPistonState(); - Block block = iblockstate.getBlock(); - - if (block == this || block == Blocks.air) - { - return; - } - - float f = tileentitypiston.getProgress(0.0F); - - if (tileentitypiston.isExtending()) - { - f = 1.0F - f; - } - - block.setBlockBoundsBasedOnState(worldIn, pos); - - if (block == Blocks.piston || block == Blocks.sticky_piston) - { - f = 0.0F; - } - - Facing enumfacing = tileentitypiston.getFacing(); - this.minX = block.getBlockBoundsMinX() - (double)((float)enumfacing.getFrontOffsetX() * f); - this.minY = block.getBlockBoundsMinY() - (double)((float)enumfacing.getFrontOffsetY() * f); - this.minZ = block.getBlockBoundsMinZ() - (double)((float)enumfacing.getFrontOffsetZ() * f); - this.maxX = block.getBlockBoundsMaxX() - (double)((float)enumfacing.getFrontOffsetX() * f); - this.maxY = block.getBlockBoundsMaxY() - (double)((float)enumfacing.getFrontOffsetY() * f); - this.maxZ = block.getBlockBoundsMaxZ() - (double)((float)enumfacing.getFrontOffsetZ() * f); - } - } - - public BoundingBox getBoundingBox(World worldIn, BlockPos pos, State extendingBlock, float progress, Facing direction) - { - if (extendingBlock.getBlock() != this && extendingBlock.getBlock() != Blocks.air) - { - BoundingBox axisalignedbb = extendingBlock.getBlock().getCollisionBoundingBox(worldIn, pos, extendingBlock); - - if (axisalignedbb == null) - { - return null; - } - else - { - double d0 = axisalignedbb.minX; - double d1 = axisalignedbb.minY; - double d2 = axisalignedbb.minZ; - double d3 = axisalignedbb.maxX; - double d4 = axisalignedbb.maxY; - double d5 = axisalignedbb.maxZ; - - if (direction.getFrontOffsetX() < 0) - { - d0 -= (double)((float)direction.getFrontOffsetX() * progress); - } - else - { - d3 -= (double)((float)direction.getFrontOffsetX() * progress); - } - - if (direction.getFrontOffsetY() < 0) - { - d1 -= (double)((float)direction.getFrontOffsetY() * progress); - } - else - { - d4 -= (double)((float)direction.getFrontOffsetY() * progress); - } - - if (direction.getFrontOffsetZ() < 0) - { - d2 -= (double)((float)direction.getFrontOffsetZ() * progress); - } - else - { - d5 -= (double)((float)direction.getFrontOffsetZ() * progress); - } - - return new BoundingBox(d0, d1, d2, d3, d4, d5); - } - } - else - { - return null; - } - } - - private TileEntityPiston getTileEntity(IWorldAccess worldIn, BlockPos pos) - { - TileEntity tileentity = worldIn.getTileEntity(pos); - return tileentity instanceof TileEntityPiston ? (TileEntityPiston)tileentity : null; - } - - public Item getItem(World worldIn, BlockPos pos) - { - return null; - } - - protected Property[] getProperties() - { - return new Property[] {FACING, TYPE}; - } - - protected Item getItemToRegister() { - return null; - } -} diff --git a/common/src/main/java/common/block/tech/BlockRail.java b/common/src/main/java/common/block/tech/BlockRail.java index 097217fc..2af25fb0 100755 --- a/common/src/main/java/common/block/tech/BlockRail.java +++ b/common/src/main/java/common/block/tech/BlockRail.java @@ -45,7 +45,7 @@ public class BlockRail extends Block super(Material.SMALL); this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F); this.setTab(CheatTab.TECHNOLOGY); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); this.setDefaultState(this.getBaseState().withProperty(SHAPE, BlockRail.EnumRailDirection.NORTH_SOUTH)); } diff --git a/common/src/main/java/common/block/tech/BlockToggleableLight.java b/common/src/main/java/common/block/tech/BlockToggleableLight.java index e416dcd4..08054ca6 100755 --- a/common/src/main/java/common/block/tech/BlockToggleableLight.java +++ b/common/src/main/java/common/block/tech/BlockToggleableLight.java @@ -44,18 +44,10 @@ public class BlockToggleableLight extends Block { return true; } - public Item getItemDropped(State state, Random rand, int fortune) { + public Item getItem() { return Items.lamp; } - public Item getItem(World worldIn, BlockPos pos) { - return Items.lamp; - } - - public ItemStack createStackedBlock(State state) { - return new ItemStack(Items.lamp); - } - public boolean isMagnetic() { return true; } diff --git a/common/src/main/java/common/block/tech/BlockTorch.java b/common/src/main/java/common/block/tech/BlockTorch.java index fa48f7ec..d17c0a11 100755 --- a/common/src/main/java/common/block/tech/BlockTorch.java +++ b/common/src/main/java/common/block/tech/BlockTorch.java @@ -37,7 +37,7 @@ public abstract class BlockTorch extends Block implements DirectionalUp super(Material.SMALL); this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.UP)); this.setTab(CheatTab.TECHNOLOGY); - this.setFlatItemTexture(); + this.setFlatBlockTexture(); } public BoundingBox getCollisionBoundingBox(World worldIn, BlockPos pos, State state) diff --git a/common/src/main/java/common/block/tech/BlockTripWire.java b/common/src/main/java/common/block/tech/BlockTripWire.java index e8e5d6d5..149c7f0f 100755 --- a/common/src/main/java/common/block/tech/BlockTripWire.java +++ b/common/src/main/java/common/block/tech/BlockTripWire.java @@ -11,7 +11,6 @@ import common.init.Items; import common.item.CheatTab; import common.item.Item; import common.item.StackSize; -import common.item.block.ItemSmallBlock; import common.item.tool.ItemShears; import common.model.BlockLayer; import common.model.Model; @@ -46,6 +45,7 @@ public class BlockTripWire extends Block this.setDefaultState(this.getBaseState().withProperty(POWERED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(DISARMED, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false))); this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.15625F, 1.0F); // this.setTickRandomly(true); + this.setFlatItemTexture(); } /** @@ -80,19 +80,6 @@ public class BlockTripWire extends Block return BlockLayer.TRANSLUCENT; } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.string; - } - - public Item getItem(World worldIn, BlockPos pos) - { - return Items.string; - } - /** * Called when a neighboring block changes. */ @@ -663,7 +650,7 @@ public class BlockTripWire extends Block } protected Item getItemToRegister() { - return new ItemSmallBlock(this).setDisplay("Faden").setTab(CheatTab.TECHNOLOGY).setMaxAmount(StackSize.XXXL); + return super.getItemToRegister().setMaxAmount(StackSize.XXXL); } public Property[] getUnsavedProperties() { diff --git a/common/src/main/java/common/block/tech/BlockTripWireHook.java b/common/src/main/java/common/block/tech/BlockTripWireHook.java index b53612f4..4d12d3cc 100755 --- a/common/src/main/java/common/block/tech/BlockTripWireHook.java +++ b/common/src/main/java/common/block/tech/BlockTripWireHook.java @@ -8,7 +8,6 @@ import common.init.Blocks; import common.init.SoundEvent; import common.item.CheatTab; import common.item.Item; -import common.item.ItemStack; import common.item.block.ItemBlock; import common.model.BlockLayer; import common.model.Model; @@ -37,6 +36,7 @@ public class BlockTripWireHook extends Block implements Rotatable this.setDefaultState(this.getBaseState().withProperty(FACING, Facing.NORTH).withProperty(POWERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false))); this.setTab(CheatTab.TECHNOLOGY); // this.setTickRandomly(true); + this.setFlatBlockTexture(); } /** @@ -106,7 +106,7 @@ public class BlockTripWireHook extends Block implements Rotatable /** * Called by ItemBlocks after a block is set in the world, to allow post-place logic */ - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) + public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer) { this.triggerHookAt(worldIn, pos, state, false, false, -1, (State)null); } @@ -326,7 +326,7 @@ public class BlockTripWireHook extends Block implements Rotatable /** * Can this block provide power. Only wire currently seems to have this change based on its state. */ - public boolean canConnectToWire() + public boolean canConnectToWire(State state) { return true; } @@ -555,10 +555,6 @@ public class BlockTripWireHook extends Block implements Rotatable } return model.rotate(ModelRotation.getNorthRot(state.getValue(FACING))); } - - protected Item getItemToRegister() { - return new ItemBlock(this, "tripwire_hook", false); - } public Property[] getUnsavedProperties() { return new Property[] {SUSPENDED}; diff --git a/common/src/main/java/common/block/tech/BlockWarpChest.java b/common/src/main/java/common/block/tech/BlockWarpChest.java index d2617f17..ae959565 100755 --- a/common/src/main/java/common/block/tech/BlockWarpChest.java +++ b/common/src/main/java/common/block/tech/BlockWarpChest.java @@ -11,7 +11,6 @@ import common.inventory.ContainerChest; import common.inventory.InventoryPlayer; import common.item.CheatTab; import common.item.Item; -import common.item.ItemStack; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; @@ -71,7 +70,7 @@ public class BlockWarpChest extends Block implements Rotatable /** * Returns the quantity of items to drop on block destruction. */ - public int quantityDropped(Random random) + protected int quantityDropped(Random random) { return 8; } @@ -90,14 +89,6 @@ public class BlockWarpChest extends Block implements Rotatable return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()); } - /** - * Called by ItemBlocks after a block is set in the world, to allow post-place logic - */ - public void onBlockPlacedBy(World worldIn, BlockPos pos, State state, EntityLiving placer, ItemStack stack) - { - worldIn.setState(pos, state.withProperty(FACING, placer.getHorizontalFacing().getOpposite()), 2); - } - public boolean onBlockActivated(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ) { if(!worldIn.client) { diff --git a/common/src/main/java/common/block/tech/BlockWire.java b/common/src/main/java/common/block/tech/BlockWire.java index 6955c7da..013f23f4 100755 --- a/common/src/main/java/common/block/tech/BlockWire.java +++ b/common/src/main/java/common/block/tech/BlockWire.java @@ -1,29 +1,24 @@ package common.block.tech; import java.util.ArrayDeque; -import java.util.List; import java.util.Queue; import java.util.Set; import common.block.Block; import common.block.Material; -import common.collect.Lists; import common.collect.Sets; -import common.init.Blocks; import common.item.Item; -import common.item.block.ItemWire; +import common.item.StackSize; import common.model.BlockLayer; import common.model.Model; import common.model.ModelProvider; import common.model.ModelRotation; import common.properties.Property; -import common.properties.PropertyEnum; -import common.properties.PropertyInteger; +import common.properties.PropertyBool; import common.rng.Random; import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; -import common.util.Identifyable; import common.world.IBlockAccess; import common.world.IWorldAccess; import common.world.State; @@ -240,49 +235,36 @@ public class BlockWire extends Block .w("wire_line").uv(0, 0, 16, 16).rot(90).noCull() .rotate(rot); } - - public static final PropertyEnum NORTH = PropertyEnum.create("north", EnumAttachPosition.class); - public static final PropertyEnum EAST = PropertyEnum.create("east", EnumAttachPosition.class); - public static final PropertyEnum SOUTH = PropertyEnum.create("south", EnumAttachPosition.class); - public static final PropertyEnum WEST = PropertyEnum.create("west", EnumAttachPosition.class); - public static final PropertyInteger POWER = PropertyInteger.create("power", 0, 15); - - private final Set blocksNeedingUpdate = Sets.newHashSet(); + public static final PropertyBool DOWN = PropertyBool.create("down"); + public static final PropertyBool UP = PropertyBool.create("up"); + public static final PropertyBool NORTH = PropertyBool.create("north"); + public static final PropertyBool EAST = PropertyBool.create("east"); + public static final PropertyBool SOUTH = PropertyBool.create("south"); + public static final PropertyBool WEST = PropertyBool.create("west"); + public BlockWire() { super(Material.SMALL); - this.setDefaultState(this.getBaseState().withProperty(NORTH, EnumAttachPosition.NONE).withProperty(EAST, EnumAttachPosition.NONE).withProperty(SOUTH, EnumAttachPosition.NONE).withProperty(WEST, EnumAttachPosition.NONE).withProperty(POWER, Integer.valueOf(0))); + this.setDefaultState(this.getBaseState().withProperty(DOWN, false).withProperty(UP, false).withProperty(NORTH, false).withProperty(EAST, false).withProperty(SOUTH, false).withProperty(WEST, false)); this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); + this.setFlatItemTexture(); } - /** - * Get the actual Block state of this Block at the given position. This applies properties not visible in the - * metadata, such as fence connections. - */ public State getActualState(State state, IWorldAccess worldIn, BlockPos pos) { - state = state.withProperty(WEST, this.getAttachPosition(worldIn, pos, Facing.WEST)); - state = state.withProperty(EAST, this.getAttachPosition(worldIn, pos, Facing.EAST)); - state = state.withProperty(NORTH, this.getAttachPosition(worldIn, pos, Facing.NORTH)); - state = state.withProperty(SOUTH, this.getAttachPosition(worldIn, pos, Facing.SOUTH)); + state = state.withProperty(DOWN, this.canConnect(worldIn, pos, Facing.DOWN)); + state = state.withProperty(UP, this.canConnect(worldIn, pos, Facing.UP)); + state = state.withProperty(WEST, this.canConnect(worldIn, pos, Facing.WEST)); + state = state.withProperty(EAST, this.canConnect(worldIn, pos, Facing.EAST)); + state = state.withProperty(NORTH, this.canConnect(worldIn, pos, Facing.NORTH)); + state = state.withProperty(SOUTH, this.canConnect(worldIn, pos, Facing.SOUTH)); return state; } - private EnumAttachPosition getAttachPosition(IBlockAccess worldIn, BlockPos pos, Facing direction) + private boolean canConnect(IBlockAccess worldIn, BlockPos pos, Facing direction) { - BlockPos blockpos = pos.offset(direction); - Block block = worldIn.getState(pos.offset(direction)).getBlock(); - - if (!this.canConnectTo(worldIn.getState(blockpos), direction) && (block.isBlockNormalCube() || !this.canConnectUpwardsTo(worldIn.getState(blockpos.down())))) - { - Block block1 = worldIn.getState(pos.up()).getBlock(); - return !block1.isBlockNormalCube() && block.isBlockNormalCube() && this.canConnectUpwardsTo(worldIn.getState(blockpos.up())) ? EnumAttachPosition.UP : EnumAttachPosition.NONE; - } - else - { - return EnumAttachPosition.SIDE; - } + return worldIn.getState(pos.offset(direction)).getBlock().canConnectToWire(this.getState()); } public BoundingBox getCollisionBoundingBox(World worldIn, BlockPos pos, State state) @@ -290,9 +272,6 @@ public class BlockWire extends Block return null; } - /** - * Used to determine ambient occlusion and culling when rebuilding chunks for render - */ public boolean isOpaqueCube() { return false; @@ -302,265 +281,6 @@ public class BlockWire extends Block { return false; } - - public boolean canPlaceBlockAt(World worldIn, BlockPos pos) - { - return worldIn.isBlockSolid(pos.down()) || worldIn.getState(pos.down()).getBlock() == Blocks.glowstone; - } - - private State updateSurroundings(World worldIn, BlockPos pos, State state) - { - state = this.calculateCurrentChanges(worldIn, pos, pos, state); - List list = Lists.newArrayList(this.blocksNeedingUpdate); - this.blocksNeedingUpdate.clear(); - - for (BlockPos blockpos : list) - { - worldIn.notifyNeighborsOfStateChange(blockpos, this); - } - - return state; - } - - private State calculateCurrentChanges(World worldIn, BlockPos pos1, BlockPos pos2, State state) - { - State iblockstate = state; - int i = ((Integer)state.getValue(POWER)).intValue(); - int j = 0; - j = this.getMaxCurrentStrength(worldIn, pos2, j); -// this.canProvidePower = false; - int k = 0; // TODO: worldIn.isBlockIndirectlyGettingPowered(pos1); -// this.canProvidePower = true; - - if (k > 0 && k > j - 1) - { - j = k; - } - - int l = 0; - - for (Facing enumfacing : Facing.Plane.HORIZONTAL) - { - BlockPos blockpos = pos1.offset(enumfacing); - boolean flag = blockpos.getX() != pos2.getX() || blockpos.getZ() != pos2.getZ(); - - if (flag) - { - l = this.getMaxCurrentStrength(worldIn, blockpos, l); - } - - if (worldIn.getState(blockpos).getBlock().isNormalCube() && !worldIn.getState(pos1.up()).getBlock().isNormalCube()) - { - if (flag && pos1.getY() >= pos2.getY()) - { - l = this.getMaxCurrentStrength(worldIn, blockpos.up(), l); - } - } - else if (!worldIn.getState(blockpos).getBlock().isNormalCube() && flag && pos1.getY() <= pos2.getY()) - { - l = this.getMaxCurrentStrength(worldIn, blockpos.down(), l); - } - } - - if (l > j) - { - j = l - 1; - } - else if (j > 0) - { - --j; - } - else - { - j = 0; - } - - if (k > j - 1) - { - j = k; - } - - if (i != j) - { - state = state.withProperty(POWER, Integer.valueOf(j)); - - if (worldIn.getState(pos1) == iblockstate) - { - worldIn.setState(pos1, state, 2); - } - - this.blocksNeedingUpdate.add(pos1); - - for (Facing enumfacing1 : Facing.values()) - { - this.blocksNeedingUpdate.add(pos1.offset(enumfacing1)); - } - } - - return state; - } - - /** - * Calls World.notifyNeighborsOfStateChange() for all neighboring blocks, but only if the given block is a - * wire. - */ - private void notifyWireNeighborsOfStateChange(World worldIn, BlockPos pos) - { - if (worldIn.getState(pos).getBlock() == this) - { - worldIn.notifyNeighborsOfStateChange(pos, this); - - for (Facing enumfacing : Facing.values()) - { - worldIn.notifyNeighborsOfStateChange(pos.offset(enumfacing), this); - } - } - } - - public void onBlockAdded(AWorldServer worldIn, BlockPos pos, State state) - { - if (!worldIn.client) - { - this.updateSurroundings(worldIn, pos, state); - - for (Facing enumfacing : Facing.Plane.VERTICAL) - { - worldIn.notifyNeighborsOfStateChange(pos.offset(enumfacing), this); - } - - for (Facing enumfacing1 : Facing.Plane.HORIZONTAL) - { - this.notifyWireNeighborsOfStateChange(worldIn, pos.offset(enumfacing1)); - } - - for (Facing enumfacing2 : Facing.Plane.HORIZONTAL) - { - BlockPos blockpos = pos.offset(enumfacing2); - - if (worldIn.getState(blockpos).getBlock().isNormalCube()) - { - this.notifyWireNeighborsOfStateChange(worldIn, blockpos.up()); - } - else - { - this.notifyWireNeighborsOfStateChange(worldIn, blockpos.down()); - } - } - } - } - - public void onBlockRemoved(AWorldServer worldIn, BlockPos pos, State state) - { - super.onBlockRemoved(worldIn, pos, state); - - if (!worldIn.client) - { - for (Facing enumfacing : Facing.values()) - { - worldIn.notifyNeighborsOfStateChange(pos.offset(enumfacing), this); - } - - this.updateSurroundings(worldIn, pos, state); - - for (Facing enumfacing1 : Facing.Plane.HORIZONTAL) - { - this.notifyWireNeighborsOfStateChange(worldIn, pos.offset(enumfacing1)); - } - - for (Facing enumfacing2 : Facing.Plane.HORIZONTAL) - { - BlockPos blockpos = pos.offset(enumfacing2); - - if (worldIn.getState(blockpos).getBlock().isNormalCube()) - { - this.notifyWireNeighborsOfStateChange(worldIn, blockpos.up()); - } - else - { - this.notifyWireNeighborsOfStateChange(worldIn, blockpos.down()); - } - } - } - } - - private int getMaxCurrentStrength(World worldIn, BlockPos pos, int strength) - { - if (worldIn.getState(pos).getBlock() != this) - { - return strength; - } - else - { - int i = ((Integer)worldIn.getState(pos).getValue(POWER)).intValue(); - return i > strength ? i : strength; - } - } - - /** - * Called when a neighboring block changes. - */ - public void onNeighborBlockChange(World worldIn, BlockPos pos, State state, Block neighborBlock) - { - if (!worldIn.client) - { - if (this.canPlaceBlockAt(worldIn, pos)) - { - this.updateSurroundings(worldIn, pos, state); - } - else - { - this.dropBlockAsItem(worldIn, pos, state, 0); - worldIn.setBlockToAir(pos); - } - } - } - - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return this.getItem(); - } - - private boolean isConnectedTo(IBlockAccess worldIn, BlockPos pos, Facing side) - { - BlockPos blockpos = pos.offset(side); - State iblockstate = worldIn.getState(blockpos); - Block block = iblockstate.getBlock(); - boolean flag = block.isNormalCube(); - boolean flag1 = worldIn.getState(pos.up()).getBlock().isNormalCube(); - return !flag1 && flag && this.canConnectUpwardsTo(worldIn, blockpos.up()) ? true : (this.canConnectTo(iblockstate, side) ? true : /* (block == Blocks.powered_repeater && iblockstate.getValue(BlockwireDiode.FACING) == side ? true : */ !flag && this.canConnectUpwardsTo(worldIn, blockpos.down())); - } - - protected boolean canConnectUpwardsTo(IBlockAccess worldIn, BlockPos pos) - { - return this.canConnectUpwardsTo(worldIn.getState(pos)); - } - - protected boolean canConnectUpwardsTo(State state) - { - return this.canConnectTo(state, (Facing)null); - } - - protected boolean canConnectTo(State blockState, Facing side) - { - Block block = blockState.getBlock(); - - if (block == this) - { - return true; - } -// else if (Blocks.repeater.isAssociated(block)) -// { -// Facing enumfacing = (Facing)blockState.getValue(BlockwireRepeater.FACING); -// return enumfacing == side || enumfacing.getOpposite() == side; -// } - else - { - return block.canConnectToWire() && side != null; - } - } public double doPowerPhase(AWorldServer world, BlockPos pos, Random rand, double voltage, double currentLimit) { // TODO: implement Queue queue = new ArrayDeque(); @@ -574,7 +294,7 @@ public class BlockWire extends Block if(!traversed.contains(bpos)) { traversed.add(bpos); State state = world.getState(bpos); - if(state.getBlock().canConnectToWire() || state.getBlock() instanceof BlockWire) { + if(state.getBlock().canConnectToWire(this.getState())) { double power = state.getBlock().powerTick(world, bpos, state, rand, voltage, currentLimit); converted += power; voltage -= state.getBlock().getResistance(world, bpos, state) * (power / voltage); @@ -598,14 +318,9 @@ public class BlockWire extends Block return 0.01; } -// public boolean canConnectToWire() -// { -// return true; -// } - - public Item getItem(World worldIn, BlockPos pos) + public boolean canConnectToWire(State state) { - return this.getItem(); + return state.getBlock() == this; } public BlockLayer getBlockLayer() @@ -615,26 +330,27 @@ public class BlockWire extends Block protected Property[] getProperties() { - return new Property[] {NORTH, EAST, SOUTH, WEST, POWER}; + return new Property[] {DOWN, UP, NORTH, EAST, SOUTH, WEST}; } public boolean isMagnetic() { return true; } - public Model getModel(ModelProvider provider, String name, State state) { - boolean na = state.getValue(NORTH) == EnumAttachPosition.NONE; - boolean sa = state.getValue(SOUTH) == EnumAttachPosition.NONE; - boolean wa = state.getValue(WEST) == EnumAttachPosition.NONE; - boolean ea = state.getValue(EAST) == EnumAttachPosition.NONE; - boolean nu = state.getValue(NORTH) == EnumAttachPosition.UP; - boolean su = state.getValue(SOUTH) == EnumAttachPosition.UP; - boolean wu = state.getValue(WEST) == EnumAttachPosition.UP; - boolean eu = state.getValue(EAST) == EnumAttachPosition.UP; - boolean nr = state.getValue(NORTH) == EnumAttachPosition.SIDE; - boolean sr = state.getValue(SOUTH) == EnumAttachPosition.SIDE; - boolean wr = state.getValue(WEST) == EnumAttachPosition.SIDE; - boolean er = state.getValue(EAST) == EnumAttachPosition.SIDE; + public Model getModel(ModelProvider provider, String name, State state) { //TODO: fix model + boolean nr = state.getValue(NORTH); + boolean sr = state.getValue(SOUTH); + boolean wr = state.getValue(WEST); + boolean er = state.getValue(EAST); + boolean na = !nr; + boolean sa = !sr; + boolean wa = !wr; + boolean ea = !er; + boolean ud = state.getValue(DOWN) || state.getValue(UP); + boolean nu = nr && ud; + boolean su = sr && ud; + boolean wu = wr && ud; + boolean eu = er && ud; if(ea && na && sa && wa) return wire_none; @@ -818,40 +534,12 @@ public class BlockWire extends Block else return wire_none; } - - public Property[] getIgnoredProperties() { - return new Property[] {POWER}; - } protected Item getItemToRegister() { - return new ItemWire(this); + return super.getItemToRegister().setMaxAmount(StackSize.XL); } public Property[] getUnsavedProperties() { - return new Property[] {EAST, NORTH, SOUTH, WEST}; + return new Property[] {DOWN, UP, EAST, NORTH, SOUTH, WEST}; } - - public static enum EnumAttachPosition implements Identifyable - { - UP("up"), - SIDE("side"), - NONE("none"); - - private final String name; - - private EnumAttachPosition(String name) - { - this.name = name; - } - - public String toString() - { - return this.getName(); - } - - public String getName() - { - return this.name; - } - } } diff --git a/common/src/main/java/common/block/tile/BlockSign.java b/common/src/main/java/common/block/tile/BlockSign.java index 6db0c7e1..046fb7ef 100755 --- a/common/src/main/java/common/block/tile/BlockSign.java +++ b/common/src/main/java/common/block/tile/BlockSign.java @@ -1,11 +1,11 @@ package common.block.tile; -import common.block.BlockContainer; +import common.block.Block; +import common.block.ITileEntityProvider; import common.block.Material; import common.entity.npc.EntityNPC; import common.init.Items; import common.item.Item; -import common.rng.Random; import common.tileentity.TileEntity; import common.tileentity.TileEntitySign; import common.util.BlockPos; @@ -16,7 +16,7 @@ import common.world.IBlockAccess; import common.world.State; import common.world.World; -public class BlockSign extends BlockContainer +public class BlockSign extends Block implements ITileEntityProvider { public BlockSign() { @@ -85,15 +85,7 @@ public class BlockSign extends BlockContainer return new TileEntitySign(); } - /** - * Get the Item that this Block should drop when harvested. - */ - public Item getItemDropped(State state, Random rand, int fortune) - { - return Items.sign; - } - - public Item getItem(World worldIn, BlockPos pos) + public Item getItem() { return Items.sign; } @@ -122,6 +114,15 @@ public class BlockSign extends BlockContainer // super.onBlockRemoved(worldIn, pos, state); // } + private boolean isInvalidNeighbor(World world, BlockPos pos, Facing face) { + return world.getState(pos.offset(face)).getBlock().getMaterial() == Material.BLOCKING; + } + + private boolean hasInvalidNeighbor(World world, BlockPos pos) { + return this.isInvalidNeighbor(world, pos, Facing.NORTH) || this.isInvalidNeighbor(world, pos, Facing.SOUTH) + || this.isInvalidNeighbor(world, pos, Facing.WEST) || this.isInvalidNeighbor(world, pos, Facing.EAST); + } + public boolean canPlaceBlockAt(World worldIn, BlockPos pos) { return !this.hasInvalidNeighbor(worldIn, pos) && super.canPlaceBlockAt(worldIn, pos); @@ -135,4 +136,8 @@ public class BlockSign extends BlockContainer public String getFallbackTexture() { return "oak_planks"; } + + public int getRenderType() { + return -1; + } } diff --git a/common/src/main/java/common/entity/item/EntityFalling.java b/common/src/main/java/common/entity/item/EntityFalling.java index c6746afe..5cabd0a7 100755 --- a/common/src/main/java/common/entity/item/EntityFalling.java +++ b/common/src/main/java/common/entity/item/EntityFalling.java @@ -125,24 +125,21 @@ public class EntityFalling extends Entity implements IObjectData this.motionZ *= 0.699999988079071D; this.motionY *= -0.5D; - if (this.worldObj.getState(blockpos1).getBlock() != Blocks.piston_extension) - { - this.setDead(); + this.setDead(); - if (!this.canSetAsBlock) + if (!this.canSetAsBlock) + { + if (this.worldObj.canBlockBePlaced(block, blockpos1, true, Facing.UP, (Entity)null, (ItemStack)null) && !BlockFalling.canFallInto(this.worldObj, blockpos1.down()) && this.worldObj.setState(blockpos1, this.fallTile, 3)) { - if (this.worldObj.canBlockBePlaced(block, blockpos1, true, Facing.UP, (Entity)null, (ItemStack)null) && !BlockFalling.canFallInto(this.worldObj, blockpos1.down()) && this.worldObj.setState(blockpos1, this.fallTile, 3)) + if (block instanceof BlockFalling) { - if (block instanceof BlockFalling) - { - ((BlockFalling)block).onEndFalling(this.worldObj, blockpos1); - } - } - else if (this.shouldDropItem && Vars.objectDrop) - { - this.entityDropItem(new ItemStack(block.getItem()), 0.0F); + ((BlockFalling)block).onEndFalling(this.worldObj, blockpos1); } } + else if (this.shouldDropItem && Vars.objectDrop) + { + this.entityDropItem(new ItemStack(block.getItem()), 0.0F); + } } } else if (this.fallTime > 100 && !this.worldObj.client && (blockpos1.getY() < -World.MAX_SIZE_Y + 1 || blockpos1.getY() > World.MAX_SIZE_Y) || this.fallTime > 600) diff --git a/common/src/main/java/common/init/BlockRegistry.java b/common/src/main/java/common/init/BlockRegistry.java index f8bcab09..ec43e024 100755 --- a/common/src/main/java/common/init/BlockRegistry.java +++ b/common/src/main/java/common/init/BlockRegistry.java @@ -111,7 +111,6 @@ import common.block.tech.BlockMobSpawner; import common.block.tech.BlockNuke; import common.block.tech.BlockPistonBase; import common.block.tech.BlockPistonHead; -import common.block.tech.BlockPistonMoving; import common.block.tech.BlockPressurePlate; import common.block.tech.BlockPressurePlateWeighted; import common.block.tech.BlockRail; @@ -359,7 +358,7 @@ public abstract class BlockRegistry { } Block cactus = (new BlockCactus()).setHardness(0.4F).setStepSound(SoundType.CLOTH).setDisplay("Kaktus"); register("cactus", cactus); - register("reeds", (new BlockReed()).setHardness(0.0F).setStepSound(SoundType.GRASS).setDisplay("Zuckerrohr")); + register("reeds", (new BlockReed()).setHardness(0.0F).setStepSound(SoundType.GRASS).setDisplay("Zuckerrohr").setTab(CheatTab.PLANTS)); register("vine", (new BlockVine()).setHardness(0.2F).setStepSound(SoundType.GRASS).setDisplay("Ranken").setShearsEfficiency(0)); register("waterlily", (new BlockLilyPad()).setHardness(0.0F).setStepSound(SoundType.GRASS).setDisplay("Seerosenblatt")); register("cocoa", (new BlockCocoa()).setHardness(0.2F).setResistance(5.0F).setStepSound(SoundType.WOOD).setDisplay("Kakao")); @@ -369,11 +368,11 @@ public abstract class BlockRegistry { Block brownMushroom = (new BlockMushroom()).setHardness(0.0F).setStepSound(SoundType.GRASS).setLightLevel(0.125F) .setDisplay("Pilz"); register("brown_mushroom", brownMushroom); - register("brown_mushroom_block", (new BlockHugeMushroom(Material.WOOD, brownMushroom)).setHardness(0.2F) + register("brown_mushroom_block", (new BlockHugeMushroom(brownMushroom)).setHardness(0.2F) .setStepSound(SoundType.WOOD).setDisplay("Pilzblock").setTab(CheatTab.PLANTS)); Block redMushrooom = (new BlockMushroom()).setHardness(0.0F).setStepSound(SoundType.GRASS).setDisplay("Pilz"); register("red_mushroom", redMushrooom); - register("red_mushroom_block", (new BlockHugeMushroom(Material.WOOD, redMushrooom)).setHardness(0.2F) + register("red_mushroom_block", (new BlockHugeMushroom(redMushrooom)).setHardness(0.2F) .setStepSound(SoundType.WOOD).setDisplay("Pilzblock").setTab(CheatTab.PLANTS)); register("blue_mushroom", (new BlockBlueShroom()).setHardness(0.0F).setStepSound(SoundType.GRASS).setLightLevel(0.5F) .setDisplay("Tianpilz")); @@ -414,7 +413,7 @@ public abstract class BlockRegistry { for(DyeColor color : DyeColor.values()) { register(color.getName() + "_glass", (new BlockStainedGlass(color)).setHardness(0.3F).setStepSound(SoundType.GLASS).setDisplay(color.getDisplay() + " gefärbtes Glas")); } - register("glass_pane", (new BlockPane(Material.TRANSLUCENT, false)).setHardness(0.3F).setStepSound(SoundType.GLASS).setDisplay("Glasscheibe")); + register("glass_pane", (new BlockPane(Material.TRANSLUCENT)).setHardness(0.3F).setStepSound(SoundType.GLASS).setDisplay("Glasscheibe")); for(DyeColor color : DyeColor.values()) { register(color.getName() + "_glass_pane", (new BlockStainedGlassPane(color)).setHardness(0.3F).setStepSound(SoundType.GLASS).setDisplay(color.getDisplay() + " gefärbte Glasscheibe")); } @@ -433,10 +432,10 @@ public abstract class BlockRegistry { register("ladder", (new BlockLadder()).setHardness(0.4F).setStepSound(SoundType.LADDER).setDisplay("Leiter").setAxeHarvestable()); register("bookshelf", (new BlockBookshelf()).setHardness(1.5F).setStepSound(SoundType.WOOD).setDisplay("Bücherregal")); - register("cake", (new BlockCake()).setHardness(0.5F).setStepSound(SoundType.CLOTH).setDisplay("Kuchen")); + register("cake", (new BlockCake()).setHardness(0.5F).setStepSound(SoundType.CLOTH).setDisplay("Kuchen").setTab(CheatTab.DECORATION)); register("dragon_egg", (new BlockDragonEgg()).setHardness(3.0F).setResistance(15.0F).setStepSound(SoundType.STONE) .setLightLevel(0.125F).setDisplay("Drachenei").setTab(CheatTab.DECORATION)); - register("flowerpot", (new BlockFlowerPot(null)).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Blumentopf")); + register("flowerpot", (new BlockFlowerPot(null)).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Blumentopf").setTab(CheatTab.DECORATION)); register("flowerpot_cactus", (new BlockFlowerPot(cactus)).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Blumentopf mit " + cactus.getDisplay())); for(BlockFlower.EnumFlowerType type : BlockFlower.EnumFlowerType.values()) { register("flowerpot_" + type.getName(), (new BlockFlowerPot(BlockFlower.getByType(type))).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Blumentopf mit " + type.getDisplay())); @@ -510,7 +509,7 @@ public abstract class BlockRegistry { "quartz_block_bottom", "quartz_top")) .setDisplay("Quarztreppe")); - register("iron_bars", (new BlockPane(Material.SOLID, true)).setHardness(5.0F).setResistance(10.0F).setStepSound(SoundType.STONE) + register("iron_bars", (new BlockPane(Material.SOLID)).setHardness(5.0F).setResistance(10.0F).setStepSound(SoundType.STONE) .setDisplay("Eisengitter")); register("iron_trapdoor", (new BlockTrapDoor(Material.SOLID)).setHardness(5.0F).setStepSound(SoundType.STONE).setDisplay("Eisenfalltür")); @@ -603,8 +602,8 @@ public abstract class BlockRegistry { register("anvil" + (z == 0 ? "" : "_damaged_" + z), (new BlockAnvil(z)).setHardness(5.0F).setStepSound(SoundType.ANVIL).setResistance(2000.0F).setDisplay((z == 0 ? "" : (z == 1 ? "Leicht beschädigter " : "Stark beschädigter ")) + "Amboss")); } register("enchanting_table", (new BlockEnchantmentTable()).setHardness(5.0F).setResistance(2000.0F).setDisplay("Zaubertisch")); - register("brewing_stand", (new BlockBrewingStand()).setHardness(0.5F).setLightLevel(0.125F).setDisplay("Braustand")); - register("cauldron", (new BlockCauldron()).setHardness(2.0F).setDisplay("Kessel")); + register("brewing_stand", (new BlockBrewingStand()).setHardness(0.5F).setLightLevel(0.125F).setDisplay("Braustand").setTab(CheatTab.TECHNOLOGY)); + register("cauldron", (new BlockCauldron()).setHardness(2.0F).setDisplay("Kessel").setTab(CheatTab.TECHNOLOGY)); register("effect_generator", (new BlockEffectGenerator()).setDisplay("Effektgenerator").setLightLevel(1.0F)); register("construction_table", (new BlockWorkbench(4)).setHardness(2.5F).setStepSound(SoundType.WOOD).setDisplay("Konstruktionstisch")); register("assembly_unit", (new BlockWorkbench(5)).setHardness(2.5F).setStepSound(SoundType.WOOD).setDisplay("Fertigungseinheit")); @@ -627,8 +626,8 @@ public abstract class BlockRegistry { register("piston", (new BlockPistonBase(false)).setDisplay("Kolben")); register("sticky_piston", (new BlockPistonBase(true)).setDisplay("Klebriger Kolben")); - register("piston_head", (new BlockPistonHead()).setDisplay("Kolben")); - register("piston_extension", new BlockPistonMoving().setDisplay("Kolben")); + register("piston_head", (new BlockPistonHead(false)).setDisplay("Kolben")); + register("sticky_piston_head", (new BlockPistonHead(true)).setDisplay("Klebriger Kolben")); register("dispenser", (new BlockDispenser()).setHardness(3.5F).setStepSound(SoundType.STONE).setDisplay("Werfer")); register("dropper", (new BlockDropper()).setHardness(3.5F).setStepSound(SoundType.STONE).setDisplay("Spender")); register("hopper", (new BlockHopper()).setHardness(3.0F).setResistance(8.0F).setStepSound(SoundType.STONE).setDisplay("Trichter")); @@ -651,7 +650,7 @@ public abstract class BlockRegistry { register("wooden_button", (new BlockButton(true, 30, "oak_planks")).setHardness(0.5F).setStepSound(SoundType.WOOD).setDisplay("Knopf")); register("red_button", (new BlockButton(true, 10, "red_button")).setHardness(0.5F).setStepSound(SoundType.STONE).setDisplay("Knopf")); - register("wire", (new BlockWire()).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Kabel")); + register("wire", (new BlockWire()).setHardness(0.0F).setStepSound(SoundType.STONE).setDisplay("Kabel").setTab(CheatTab.TECHNOLOGY)); BlockUnlitTorch torch; register("torch", (torch = new BlockUnlitTorch(0xffffffff)).setHardness(0.0F).setStepSound(SoundType.WOOD).setDisplay("Fackel")); register("lit_torch", (new BlockLitTorch(torch)).setHardness(0.0F).setLightLevel(0.9375F).setStepSound(SoundType.WOOD).setDisplay("Fackel")); @@ -669,7 +668,7 @@ public abstract class BlockRegistry { register("daylight_detector", new BlockDaylightDetector(false).setDisplay("Tageslichtsensor")); register("daylight_detector_inverted", new BlockDaylightDetector(true).setDisplay("Tageslichtsensor")); register("tripwire_hook", (new BlockTripWireHook()).setDisplay("Haken")); - register("string", (new BlockTripWire()).setDisplay("Stolperdraht").setShearsEfficiency(0)); + register("string", (new BlockTripWire()).setDisplay("Stolperdraht").setShearsEfficiency(0).setTab(CheatTab.TECHNOLOGY)); register("iron_door", (new BlockDoor(Material.SOLID)).setHardness(5.0F).setStepSound(SoundType.STONE).setDisplay("Eisentür")); for(WoodType wood : WoodType.values()) { diff --git a/common/src/main/java/common/init/Blocks.java b/common/src/main/java/common/init/Blocks.java index 5bc7f8d8..083a5f98 100755 --- a/common/src/main/java/common/init/Blocks.java +++ b/common/src/main/java/common/init/Blocks.java @@ -387,8 +387,8 @@ public abstract class Blocks { public static final BlockFlower pink_tulip = get("pink_tulip"); public static final BlockWool pink_wool = get("pink_wool"); public static final BlockPistonBase piston = get("piston"); - public static final BlockPistonMoving piston_extension = get("piston_extension"); public static final BlockPistonHead piston_head = get("piston_head"); + public static final BlockPistonHead sticky_piston_head = get("sticky_piston_head"); public static final Block platinum_block = get("platinum_block"); public static final BlockOre platinum_ore = get("platinum_ore"); public static final Block plutonium_block = get("plutonium_block"); diff --git a/common/src/main/java/common/init/ItemRegistry.java b/common/src/main/java/common/init/ItemRegistry.java index a5a1765d..c6476d89 100755 --- a/common/src/main/java/common/init/ItemRegistry.java +++ b/common/src/main/java/common/init/ItemRegistry.java @@ -275,7 +275,9 @@ public abstract class ItemRegistry { } Item lapis = null; for(DyeColor color : DyeColor.values()) { - Item dye = (new ItemDye(color)).setDisplay(color.getDyeName()).setMaxAmount(StackSize.XXL); + if(color == DyeColor.BROWN) + continue; + Item dye = new ItemDye(color, null); if(color == DyeColor.BLUE) lapis = dye; register(color.getDye(), dye); diff --git a/common/src/main/java/common/init/Items.java b/common/src/main/java/common/init/Items.java index ab5ed645..b6635195 100755 --- a/common/src/main/java/common/init/Items.java +++ b/common/src/main/java/common/init/Items.java @@ -14,8 +14,7 @@ import common.item.*; import common.item.block.ItemBed; import common.item.block.ItemBlock; import common.item.block.ItemButton; -import common.item.block.ItemChest; -import common.item.block.ItemColored; +import common.item.block.ItemBlock; import common.item.block.ItemDoor; import common.item.block.ItemDoublePlant; import common.item.block.ItemFence; @@ -23,12 +22,10 @@ import common.item.block.ItemLilyPad; import common.item.block.ItemMetalBlock; import common.item.block.ItemPiston; import common.item.block.ItemPressurePlate; -import common.item.block.ItemWire; import common.item.block.ItemSeedFood; import common.item.block.ItemSeeds; import common.item.block.ItemSign; import common.item.block.ItemSlab; -import common.item.block.ItemSmallBlock; import common.item.block.ItemSnow; import common.item.block.ItemWall; import common.item.material.ItemBook; @@ -93,11 +90,11 @@ public abstract class Items { public static final ItemDoor acacia_door = get("acacia_door"); public static final ItemFence acacia_fence = get("acacia_fence"); public static final ItemBlock acacia_fence_gate = get("acacia_fence_gate"); - public static final ItemColored acacia_leaves_autumn = get("acacia_leaves_autumn"); - public static final ItemColored acacia_leaves_snowy = get("acacia_leaves_snowy"); - public static final ItemColored acacia_leaves_spring = get("acacia_leaves_spring"); - public static final ItemColored acacia_leaves_summer = get("acacia_leaves_summer"); - public static final ItemColored acacia_leaves_winter = get("acacia_leaves_winter"); + public static final ItemBlock acacia_leaves_autumn = get("acacia_leaves_autumn"); + public static final ItemBlock acacia_leaves_snowy = get("acacia_leaves_snowy"); + public static final ItemBlock acacia_leaves_spring = get("acacia_leaves_spring"); + public static final ItemBlock acacia_leaves_summer = get("acacia_leaves_summer"); + public static final ItemBlock acacia_leaves_winter = get("acacia_leaves_winter"); public static final ItemBlock acacia_log = get("acacia_log"); public static final ItemBlock acacia_planks = get("acacia_planks"); public static final ItemBlock acacia_sapling = get("acacia_sapling"); @@ -137,11 +134,11 @@ public abstract class Items { public static final ItemDoor birch_door = get("birch_door"); public static final ItemFence birch_fence = get("birch_fence"); public static final ItemBlock birch_fence_gate = get("birch_fence_gate"); - public static final ItemColored birch_leaves_autumn = get("birch_leaves_autumn"); - public static final ItemColored birch_leaves_snowy = get("birch_leaves_snowy"); - public static final ItemColored birch_leaves_spring = get("birch_leaves_spring"); - public static final ItemColored birch_leaves_summer = get("birch_leaves_summer"); - public static final ItemColored birch_leaves_winter = get("birch_leaves_winter"); + public static final ItemBlock birch_leaves_autumn = get("birch_leaves_autumn"); + public static final ItemBlock birch_leaves_snowy = get("birch_leaves_snowy"); + public static final ItemBlock birch_leaves_spring = get("birch_leaves_spring"); + public static final ItemBlock birch_leaves_summer = get("birch_leaves_summer"); + public static final ItemBlock birch_leaves_winter = get("birch_leaves_winter"); public static final ItemBlock birch_log = get("birch_log"); public static final ItemBlock birch_planks = get("birch_planks"); public static final ItemBlock birch_sapling = get("birch_sapling"); @@ -179,11 +176,11 @@ public abstract class Items { public static final ItemDoor blackwood_door = get("blackwood_door"); public static final ItemFence blackwood_fence = get("blackwood_fence"); public static final ItemBlock blackwood_fence_gate = get("blackwood_fence_gate"); - public static final ItemColored blackwood_leaves_autumn = get("blackwood_leaves_autumn"); - public static final ItemColored blackwood_leaves_snowy = get("blackwood_leaves_snowy"); - public static final ItemColored blackwood_leaves_spring = get("blackwood_leaves_spring"); - public static final ItemColored blackwood_leaves_summer = get("blackwood_leaves_summer"); - public static final ItemColored blackwood_leaves_winter = get("blackwood_leaves_winter"); + public static final ItemBlock blackwood_leaves_autumn = get("blackwood_leaves_autumn"); + public static final ItemBlock blackwood_leaves_snowy = get("blackwood_leaves_snowy"); + public static final ItemBlock blackwood_leaves_spring = get("blackwood_leaves_spring"); + public static final ItemBlock blackwood_leaves_summer = get("blackwood_leaves_summer"); + public static final ItemBlock blackwood_leaves_winter = get("blackwood_leaves_winter"); public static final ItemBlock blackwood_log = get("blackwood_log"); public static final ItemBlock blackwood_planks = get("blackwood_planks"); public static final ItemBlock blackwood_sapling = get("blackwood_sapling"); @@ -214,7 +211,7 @@ public abstract class Items { public static final ItemBow bow = get("bow"); public static final ItemSmall bowl = get("bowl"); public static final ItemFood bread = get("bread"); - public static final ItemSmallBlock brewing_stand = get("brewing_stand"); + public static final ItemBlock brewing_stand = get("brewing_stand"); public static final Item brick = get("brick"); public static final ItemBlock brick_block = get("brick_block"); public static final ItemSlab brick_slab = get("brick_slab"); @@ -230,7 +227,7 @@ public abstract class Items { public static final ItemFlintAndSteel burning_soul = get("burning_soul"); public static final ItemBlock cactus = get("cactus"); public static final ItemDye cactus_green = get("cactus_green"); - public static final ItemSmallBlock cake = get("cake"); + public static final ItemBlock cake = get("cake"); public static final ItemMetalBlock calcium_block = get("calcium_block"); public static final ItemMetalBlock calcium_ore = get("calcium_ore"); public static final ItemMetal calcium_powder = get("calcium_powder"); @@ -239,7 +236,7 @@ public abstract class Items { public static final ItemCarrotOnAStick carrot_on_a_stick = get("carrot_on_a_stick"); public static final ItemBlock carved_sandstone = get("carved_sandstone"); public static final ItemBlock carved_stonebrick = get("carved_stonebrick"); - public static final ItemSmallBlock cauldron = get("cauldron"); + public static final ItemBlock cauldron = get("cauldron"); public static final ItemBlock cell_rock = get("cell_rock"); public static final ItemMagnetic chain = get("chain"); public static final ItemArmor chain_boots = get("chain_boots"); @@ -252,17 +249,17 @@ public abstract class Items { public static final ItemDoor cherry_door = get("cherry_door"); public static final ItemFence cherry_fence = get("cherry_fence"); public static final ItemBlock cherry_fence_gate = get("cherry_fence_gate"); - public static final ItemColored cherry_leaves_autumn = get("cherry_leaves_autumn"); - public static final ItemColored cherry_leaves_snowy = get("cherry_leaves_snowy"); - public static final ItemColored cherry_leaves_spring = get("cherry_leaves_spring"); - public static final ItemColored cherry_leaves_summer = get("cherry_leaves_summer"); - public static final ItemColored cherry_leaves_winter = get("cherry_leaves_winter"); + public static final ItemBlock cherry_leaves_autumn = get("cherry_leaves_autumn"); + public static final ItemBlock cherry_leaves_snowy = get("cherry_leaves_snowy"); + public static final ItemBlock cherry_leaves_spring = get("cherry_leaves_spring"); + public static final ItemBlock cherry_leaves_summer = get("cherry_leaves_summer"); + public static final ItemBlock cherry_leaves_winter = get("cherry_leaves_winter"); public static final ItemBlock cherry_log = get("cherry_log"); public static final ItemBlock cherry_planks = get("cherry_planks"); public static final ItemBlock cherry_sapling = get("cherry_sapling"); public static final ItemSlab cherry_slab = get("cherry_slab"); public static final ItemBlock cherry_stairs = get("cherry_stairs"); - public static final ItemChest chest = get("chest"); + public static final ItemBlock chest = get("chest"); public static final ItemMagnet chick_magnet = get("chick_magnet"); public static final ItemFood chicken = get("chicken"); public static final ItemMetalBlock chrome_block = get("chrome_block"); @@ -311,18 +308,18 @@ public abstract class Items { public static final ItemDoor dark_oak_door = get("dark_oak_door"); public static final ItemFence dark_oak_fence = get("dark_oak_fence"); public static final ItemBlock dark_oak_fence_gate = get("dark_oak_fence_gate"); - public static final ItemColored dark_oak_leaves_autumn = get("dark_oak_leaves_autumn"); - public static final ItemColored dark_oak_leaves_snowy = get("dark_oak_leaves_snowy"); - public static final ItemColored dark_oak_leaves_spring = get("dark_oak_leaves_spring"); - public static final ItemColored dark_oak_leaves_summer = get("dark_oak_leaves_summer"); - public static final ItemColored dark_oak_leaves_winter = get("dark_oak_leaves_winter"); + public static final ItemBlock dark_oak_leaves_autumn = get("dark_oak_leaves_autumn"); + public static final ItemBlock dark_oak_leaves_snowy = get("dark_oak_leaves_snowy"); + public static final ItemBlock dark_oak_leaves_spring = get("dark_oak_leaves_spring"); + public static final ItemBlock dark_oak_leaves_summer = get("dark_oak_leaves_summer"); + public static final ItemBlock dark_oak_leaves_winter = get("dark_oak_leaves_winter"); public static final ItemBlock dark_oak_log = get("dark_oak_log"); public static final ItemBlock dark_oak_planks = get("dark_oak_planks"); public static final ItemBlock dark_oak_sapling = get("dark_oak_sapling"); public static final ItemSlab dark_oak_slab = get("dark_oak_slab"); public static final ItemBlock dark_oak_stairs = get("dark_oak_stairs"); public static final ItemBlock daylight_detector = get("daylight_detector"); - public static final ItemColored dead_bush = get("dead_bush"); + public static final ItemBlock dead_bush = get("dead_bush"); public static final ItemBlock deadbush = get("deadbush"); public static final Item diamond = get("diamond"); public static final ItemAxe diamond_axe = get("diamond_axe"); @@ -367,7 +364,7 @@ public abstract class Items { public static final ItemBlock farmland = get("farmland"); public static final Item feather = get("feather"); public static final Item fermented_spider_eye = get("fermented_spider_eye"); - public static final ItemColored fern = get("fern"); + public static final ItemBlock fern = get("fern"); public static final ItemFireball fireball = get("fireball"); public static final ItemFishingRod fishing_rod = get("fishing_rod"); public static final Item flint = get("flint"); @@ -376,7 +373,7 @@ public abstract class Items { public static final ItemBlock floor_tiles_black = get("floor_tiles_black"); public static final ItemBlock floor_tiles_red = get("floor_tiles_red"); public static final ItemBlock floor_tiles_white = get("floor_tiles_white"); - public static final ItemSmallBlock flowerpot = get("flowerpot"); + public static final ItemBlock flowerpot = get("flowerpot"); public static final ItemBlock furnace = get("furnace"); public static final ItemTiny tear = get("tear"); public static final Item ghi_fragment = get("ghi_fragment"); @@ -404,7 +401,7 @@ public abstract class Items { public static final ItemAppleGold charged_apple = get("charged_apple"); public static final ItemFood golden_carrot = get("golden_carrot"); public static final ItemBucket goo_bucket = get("goo_bucket"); - public static final ItemColored grass = get("grass"); + public static final ItemBlock grass = get("grass"); public static final ItemBlock gravel = get("gravel"); public static final ItemBlock gray_carpet = get("gray_carpet"); public static final ItemBlock gray_clay = get("gray_clay"); @@ -457,11 +454,11 @@ public abstract class Items { public static final ItemDoor jungle_door = get("jungle_door"); public static final ItemFence jungle_fence = get("jungle_fence"); public static final ItemBlock jungle_fence_gate = get("jungle_fence_gate"); - public static final ItemColored jungle_leaves_autumn = get("jungle_leaves_autumn"); - public static final ItemColored jungle_leaves_snowy = get("jungle_leaves_snowy"); - public static final ItemColored jungle_leaves_spring = get("jungle_leaves_spring"); - public static final ItemColored jungle_leaves_summer = get("jungle_leaves_summer"); - public static final ItemColored jungle_leaves_winter = get("jungle_leaves_winter"); + public static final ItemBlock jungle_leaves_autumn = get("jungle_leaves_autumn"); + public static final ItemBlock jungle_leaves_snowy = get("jungle_leaves_snowy"); + public static final ItemBlock jungle_leaves_spring = get("jungle_leaves_spring"); + public static final ItemBlock jungle_leaves_summer = get("jungle_leaves_summer"); + public static final ItemBlock jungle_leaves_winter = get("jungle_leaves_winter"); public static final ItemBlock jungle_log = get("jungle_log"); public static final ItemBlock jungle_planks = get("jungle_planks"); public static final ItemBlock jungle_sapling = get("jungle_sapling"); @@ -498,7 +495,6 @@ public abstract class Items { public static final ItemBlock lime_glass = get("lime_glass"); public static final ItemBlock lime_glass_pane = get("lime_glass_pane"); public static final ItemBlock lime_wool = get("lime_wool"); - public static final ItemBlock lit_furnace = get("lit_furnace"); public static final ItemBlock lit_pumpkin = get("lit_pumpkin"); public static final ItemMetalBlock lithium_block = get("lithium_block"); public static final ItemMetal lithium_ingot = get("lithium_ingot"); @@ -521,11 +517,11 @@ public abstract class Items { public static final ItemDoor maple_door = get("maple_door"); public static final ItemFence maple_fence = get("maple_fence"); public static final ItemBlock maple_fence_gate = get("maple_fence_gate"); - public static final ItemColored maple_leaves_autumn = get("maple_leaves_autumn"); - public static final ItemColored maple_leaves_snowy = get("maple_leaves_snowy"); - public static final ItemColored maple_leaves_spring = get("maple_leaves_spring"); - public static final ItemColored maple_leaves_summer = get("maple_leaves_summer"); - public static final ItemColored maple_leaves_winter = get("maple_leaves_winter"); + public static final ItemBlock maple_leaves_autumn = get("maple_leaves_autumn"); + public static final ItemBlock maple_leaves_snowy = get("maple_leaves_snowy"); + public static final ItemBlock maple_leaves_spring = get("maple_leaves_spring"); + public static final ItemBlock maple_leaves_summer = get("maple_leaves_summer"); + public static final ItemBlock maple_leaves_winter = get("maple_leaves_winter"); public static final ItemBlock maple_log = get("maple_log"); public static final ItemBlock maple_planks = get("maple_planks"); public static final ItemBlock maple_sapling = get("maple_sapling"); @@ -573,11 +569,11 @@ public abstract class Items { public static final ItemDoor oak_door = get("oak_door"); public static final ItemFence oak_fence = get("oak_fence"); public static final ItemBlock oak_fence_gate = get("oak_fence_gate"); - public static final ItemColored oak_leaves_autumn = get("oak_leaves_autumn"); - public static final ItemColored oak_leaves_snowy = get("oak_leaves_snowy"); - public static final ItemColored oak_leaves_spring = get("oak_leaves_spring"); - public static final ItemColored oak_leaves_summer = get("oak_leaves_summer"); - public static final ItemColored oak_leaves_winter = get("oak_leaves_winter"); + public static final ItemBlock oak_leaves_autumn = get("oak_leaves_autumn"); + public static final ItemBlock oak_leaves_snowy = get("oak_leaves_snowy"); + public static final ItemBlock oak_leaves_spring = get("oak_leaves_spring"); + public static final ItemBlock oak_leaves_summer = get("oak_leaves_summer"); + public static final ItemBlock oak_leaves_winter = get("oak_leaves_winter"); public static final ItemBlock oak_log = get("oak_log"); public static final ItemBlock oak_planks = get("oak_planks"); public static final ItemBlock oak_sapling = get("oak_sapling"); @@ -687,7 +683,7 @@ public abstract class Items { public static final ItemBlock red_sand = get("red_sand"); public static final ItemBlock red_tulip = get("red_tulip"); public static final ItemBlock red_wool = get("red_wool"); - public static final ItemSmallBlock reeds = get("reeds"); + public static final ItemBlock reeds = get("reeds"); public static final ItemBlock rock = get("rock"); public static final ItemBlock rose = get("rose"); public static final ItemDoublePlant rose_bush = get("rose_bush"); @@ -716,7 +712,7 @@ public abstract class Items { public static final ItemMetal silver_ingot = get("silver_ingot"); public static final ItemMetalBlock silver_ore = get("silver_ore"); public static final ItemBlock silver_wool = get("silver_wool"); - public static final ItemSmallBlock skull = get("skull"); + public static final ItemBlock skull = get("skull"); public static final Item slime_ball = get("slime_ball"); public static final ItemBlock slime_block = get("slime_block"); public static final ItemBucket slime_bucket = get("slime_bucket"); @@ -737,11 +733,11 @@ public abstract class Items { public static final ItemDoor spruce_door = get("spruce_door"); public static final ItemFence spruce_fence = get("spruce_fence"); public static final ItemBlock spruce_fence_gate = get("spruce_fence_gate"); - public static final ItemColored spruce_leaves_autumn = get("spruce_leaves_autumn"); - public static final ItemColored spruce_leaves_snowy = get("spruce_leaves_snowy"); - public static final ItemColored spruce_leaves_spring = get("spruce_leaves_spring"); - public static final ItemColored spruce_leaves_summer = get("spruce_leaves_summer"); - public static final ItemColored spruce_leaves_winter = get("spruce_leaves_winter"); + public static final ItemBlock spruce_leaves_autumn = get("spruce_leaves_autumn"); + public static final ItemBlock spruce_leaves_snowy = get("spruce_leaves_snowy"); + public static final ItemBlock spruce_leaves_spring = get("spruce_leaves_spring"); + public static final ItemBlock spruce_leaves_summer = get("spruce_leaves_summer"); + public static final ItemBlock spruce_leaves_winter = get("spruce_leaves_winter"); public static final ItemBlock spruce_log = get("spruce_log"); public static final ItemBlock spruce_planks = get("spruce_planks"); public static final ItemBlock spruce_sapling = get("spruce_sapling"); @@ -762,14 +758,14 @@ public abstract class Items { public static final ItemBlock stonebrick = get("stonebrick"); public static final ItemSlab stonebrick_slab = get("stonebrick_slab"); public static final ItemBlock stonebrick_stairs = get("stonebrick_stairs"); - public static final ItemSmallBlock string = get("string"); + public static final ItemBlock string = get("string"); public static final Item sugar = get("sugar"); public static final ItemMetalBlock sulfur_block = get("sulfur_block"); public static final ItemMetalBlock sulfur_ore = get("sulfur_ore"); public static final ItemMetal sulfur_powder = get("sulfur_powder"); public static final ItemDoublePlant sunflower = get("sunflower"); public static final ItemDoublePlant syringa = get("syringa"); - public static final ItemColored tallgrass = get("tallgrass"); + public static final ItemBlock tallgrass = get("tallgrass"); public static final ItemAxe thetium_axe = get("thetium_axe"); public static final ItemBlock thetium_block = get("thetium_block"); public static final ItemArmor thetium_boots = get("thetium_boots"); @@ -786,11 +782,11 @@ public abstract class Items { public static final ItemDoor tian_door = get("tian_door"); public static final ItemFence tian_fence = get("tian_fence"); public static final ItemBlock tian_fence_gate = get("tian_fence_gate"); - public static final ItemColored tian_leaves_autumn = get("tian_leaves_autumn"); - public static final ItemColored tian_leaves_snowy = get("tian_leaves_snowy"); - public static final ItemColored tian_leaves_spring = get("tian_leaves_spring"); - public static final ItemColored tian_leaves_summer = get("tian_leaves_summer"); - public static final ItemColored tian_leaves_winter = get("tian_leaves_winter"); + public static final ItemBlock tian_leaves_autumn = get("tian_leaves_autumn"); + public static final ItemBlock tian_leaves_snowy = get("tian_leaves_snowy"); + public static final ItemBlock tian_leaves_spring = get("tian_leaves_spring"); + public static final ItemBlock tian_leaves_summer = get("tian_leaves_summer"); + public static final ItemBlock tian_leaves_winter = get("tian_leaves_winter"); public static final ItemBlock tian_log = get("tian_log"); public static final ItemBlock tian_planks = get("tian_planks"); public static final ItemBlock tian_reactor = get("tian_reactor"); @@ -824,7 +820,7 @@ public abstract class Items { public static final ItemMetalBlock vanadium_block = get("vanadium_block"); public static final ItemMetal vanadium_ingot = get("vanadium_ingot"); public static final ItemMetalBlock vanadium_ore = get("vanadium_ore"); - public static final ItemColored vine = get("vine"); + public static final ItemBlock vine = get("vine"); public static final ItemEditor editor = get("editor"); public static final ItemBlock warp_chest = get("warp_chest"); public static final ItemBucket water_bucket = get("water_bucket"); @@ -988,13 +984,13 @@ public abstract class Items { public static final ItemPotion potion_weakness = get("potion_weakness"); public static final ItemPotion potion_weakness_base = get("potion_weakness_base"); public static final ItemPotion potion_weakness_extended = get("potion_weakness_extended"); - public static final ItemChest large_chest = get("large_chest"); - public static final ItemChest giant_chest = get("giant_chest"); - public static final ItemChest huge_chest = get("huge_chest"); - public static final ItemChest toolarge_chest = get("toolarge_chest"); - public static final ItemChest xlarge_chest = get("xlarge_chest"); - public static final ItemChest xxlarge_chest = get("xxlarge_chest"); - public static final ItemChest xxxlarge_chest = get("xxxlarge_chest"); + public static final ItemBlock large_chest = get("large_chest"); + public static final ItemBlock giant_chest = get("giant_chest"); + public static final ItemBlock huge_chest = get("huge_chest"); + public static final ItemBlock toolarge_chest = get("toolarge_chest"); + public static final ItemBlock xlarge_chest = get("xlarge_chest"); + public static final ItemBlock xxlarge_chest = get("xxlarge_chest"); + public static final ItemBlock xxxlarge_chest = get("xxxlarge_chest"); public static final ItemKey key = get("key"); public static final ItemKey black_key = get("black_key"); public static final ItemKey black_keycard = get("black_keycard"); @@ -1005,7 +1001,7 @@ public abstract class Items { public static final ItemKey shiny_key = get("shiny_key"); public static final ItemBlock lamp = get("lamp"); public static final ItemMagnetic charged_powder = get("charged_powder"); - public static final ItemWire wire = get("wire"); + public static final ItemBlock wire = get("wire"); public static final ItemBlock charged_block = get("charged_block"); public static final ItemBlock charge_ore = get("charge_ore"); public static final ItemBlock torch = get("torch"); diff --git a/common/src/main/java/common/item/block/ItemBlock.java b/common/src/main/java/common/item/block/ItemBlock.java index 1d1d77f1..afba730d 100755 --- a/common/src/main/java/common/item/block/ItemBlock.java +++ b/common/src/main/java/common/item/block/ItemBlock.java @@ -1,6 +1,7 @@ package common.item.block; import common.block.Block; +import common.block.natural.BlockSnow; import common.color.TextColor; import common.entity.Entity; import common.entity.npc.EntityNPC; @@ -19,24 +20,12 @@ import common.world.World; public class ItemBlock extends Item { protected final Block block; - protected final String flatTexture; - - public ItemBlock(Block block, String flatTexture) - { - this.block = block; - this.flatTexture = flatTexture; - this.setDisplay(this.block.getDisplay()); - this.setTab(this.block.getTab()); - } - - public ItemBlock(Block block, String flatTexture, boolean item) - { - this(block, (item ? "items" : "blocks") + "/" + flatTexture); - } public ItemBlock(Block block) { - this(block, null); + this.block = block; + this.setDisplay(this.block.getDisplay()); + this.setTab(this.block.getTab()); } public ItemBlock setDisplay(String unlocalizedName) @@ -56,7 +45,9 @@ public class ItemBlock extends Item State iblockstate = worldIn.getState(pos); Block block = iblockstate.getBlock(); - if (!block.isReplaceable(worldIn, pos)) + if(block == Blocks.snow_layer && iblockstate.getValue(BlockSnow.LAYERS).intValue() < 1) + side = Facing.UP; + else if (!block.isReplaceable(worldIn, pos)) { pos = pos.offset(side); } @@ -79,7 +70,7 @@ public class ItemBlock extends Item if (iblockstate1.getBlock() == this.block) { - this.block.onBlockPlacedBy(worldIn, pos, iblockstate1, playerIn, stack); + this.block.onBlockPlacedBy(worldIn, pos, iblockstate1, playerIn); } worldIn.playSound(this.block.sound.getPlaceSound(), (double)((float)pos.getX() + 0.5F), (double)((float)pos.getY() + 0.5F), (double)((float)pos.getZ() + 0.5F), 1.0F); @@ -120,14 +111,18 @@ public class ItemBlock extends Item } public Transforms getTransform() { - return this.flatTexture != null ? super.getTransform() : this.block.getTransform(); + return this.block.getRenderType() == 2 ? Transforms.DEFAULT : (this.block.hasBlockFlatTexture() || this.block.hasItemFlatTexture() ? super.getTransform() : this.block.getTransform()); } public Model getModel(ModelProvider provider, String name) { - return this.flatTexture != null ? provider.getModel(this.getTransform(), !this.flatTexture.isEmpty() ? this.flatTexture : - this.block.getModel(provider, - BlockRegistry.getName(this.block).toString(), this.block.getState()).getPrimary() /* "blocks/" + name */) : + if(this.block.getRenderType() == 2) + return provider.getModel(provider.getEntityModel(), this.getTransform()); + return this.block.hasBlockFlatTexture() || this.block.hasItemFlatTexture() ? provider.getModel(this.getTransform(), (this.block.hasBlockFlatTexture() ? "blocks" : "items") + "/" + this.block.getItemTexture(name)) : provider.getModel(this.block.getModel(provider, - BlockRegistry.getName(this.block).toString(), this.block.getState()), this.getTransform()); - } + BlockRegistry.getName(this.block), this.block.getState()), this.getTransform()); + } + + public int getColorFromItemStack(ItemStack stack, int renderPass) { + return this.block.isItemColored() ? this.block.getRenderColor(this.block.getState()) : super.getColorFromItemStack(stack, renderPass); + } } diff --git a/common/src/main/java/common/item/block/ItemChest.java b/common/src/main/java/common/item/block/ItemChest.java deleted file mode 100755 index 335307ff..00000000 --- a/common/src/main/java/common/item/block/ItemChest.java +++ /dev/null @@ -1,20 +0,0 @@ -package common.item.block; - -import common.block.tech.BlockChest; -import common.model.Model; -import common.model.ModelProvider; -import common.model.Transforms; - -public class ItemChest extends ItemBlock { - public ItemChest(BlockChest block) { - super(block); - } - - public Model getModel(ModelProvider provider, String name) { - return provider.getModel(provider.getEntityModel(), this.getTransform()); - } - - public Transforms getTransform() { - return Transforms.DEFAULT; - } -} diff --git a/common/src/main/java/common/item/block/ItemColored.java b/common/src/main/java/common/item/block/ItemColored.java deleted file mode 100755 index 4df3abb1..00000000 --- a/common/src/main/java/common/item/block/ItemColored.java +++ /dev/null @@ -1,22 +0,0 @@ -package common.item.block; - -import common.block.Block; -import common.item.ItemStack; - -public class ItemColored extends ItemBlock -{ - public ItemColored(Block block, String flatTexture) - { - super(block, flatTexture); - } - - public ItemColored(Block block) - { - super(block); - } - - public int getColorFromItemStack(ItemStack stack, int renderPass) - { - return this.block.getRenderColor(this.block.getState()); - } -} diff --git a/common/src/main/java/common/item/block/ItemDoublePlant.java b/common/src/main/java/common/item/block/ItemDoublePlant.java index 121a4474..53c4c29e 100755 --- a/common/src/main/java/common/item/block/ItemDoublePlant.java +++ b/common/src/main/java/common/item/block/ItemDoublePlant.java @@ -14,7 +14,7 @@ public class ItemDoublePlant extends ItemBlock public ItemDoublePlant(BlockDoublePlant block) { - super(block, ""); + super(block); this.type = block.getType(); this.setMaxAmount(StackSize.S); } diff --git a/common/src/main/java/common/item/block/ItemLilyPad.java b/common/src/main/java/common/item/block/ItemLilyPad.java index b2335901..ad252bec 100755 --- a/common/src/main/java/common/item/block/ItemLilyPad.java +++ b/common/src/main/java/common/item/block/ItemLilyPad.java @@ -10,11 +10,11 @@ import common.util.HitPosition; import common.world.State; import common.world.World; -public class ItemLilyPad extends ItemColored +public class ItemLilyPad extends ItemBlock { public ItemLilyPad(BlockLilyPad block) { - super(block, ""); + super(block); } public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityNPC playerIn) diff --git a/common/src/main/java/common/item/block/ItemSmallBlock.java b/common/src/main/java/common/item/block/ItemSmallBlock.java deleted file mode 100755 index 22e00536..00000000 --- a/common/src/main/java/common/item/block/ItemSmallBlock.java +++ /dev/null @@ -1,58 +0,0 @@ -package common.item.block; - -import common.block.Block; -import common.block.natural.BlockSnow; -import common.entity.npc.EntityNPC; -import common.init.Blocks; -import common.item.Item; -import common.item.ItemStack; -import common.util.BlockPos; -import common.util.Facing; -import common.world.State; -import common.world.World; - -public class ItemSmallBlock extends Item { - private Block block; - - public ItemSmallBlock(Block block) { - this.block = block; - } - - public Block getBlock() { - return this.block; - } - - public boolean onItemUse(ItemStack stack, EntityNPC player, World world, BlockPos pos, Facing side, float hitX, float hitY, float hitZ) { - State state = world.getState(pos); - Block block = state.getBlock(); - - if(block == Blocks.snow_layer && state.getValue(BlockSnow.LAYERS).intValue() < 1) - side = Facing.UP; - else if(!block.isReplaceable(world, pos)) - pos = pos.offset(side); - - if(!player.canPlayerEdit(pos, side, stack) || stack.isEmpty()) - return false; - if(world.canBlockBePlaced(this.block, pos, false, side, null, stack)) { - State newState = this.block.onBlockPlaced(world, pos, side, hitX, hitY, hitZ, player); - - if(world.setState(pos, newState, 3)) { - newState = world.getState(pos); - - if(newState.getBlock() == this.block) { - newState.getBlock().onBlockPlacedBy(world, pos, newState, player, stack); - } - - world.playSound(this.block.sound.getPlaceSound(), (double)((float)pos.getX() + 0.5F), (double)((float)pos.getY() + 0.5F), - (double)((float)pos.getZ() + 0.5F), 1.0F); - stack.decrSize(); - return true; - } - } - return false; - } - - public boolean isMagnetic() { - return this.block.isMagnetic(); - } -} diff --git a/common/src/main/java/common/item/block/ItemWire.java b/common/src/main/java/common/item/block/ItemWire.java deleted file mode 100755 index eac65892..00000000 --- a/common/src/main/java/common/item/block/ItemWire.java +++ /dev/null @@ -1,65 +0,0 @@ -package common.item.block; - -import common.block.Block; -import common.block.tech.BlockWire; -import common.entity.Entity; -import common.entity.npc.EntityNPC; -import common.item.CheatTab; -import common.item.Item; -import common.item.ItemStack; -import common.item.StackSize; -import common.util.BlockPos; -import common.util.Facing; -import common.world.World; - -public class ItemWire extends Item -{ - private final BlockWire block; - - public ItemWire(BlockWire block) - { - this.block = block; - this.setTab(CheatTab.TECHNOLOGY); - this.setDisplay(block.getDisplay()); - this.setMaxAmount(StackSize.XL); - } - - public Block getBlock() - { - return this.block; - } - - public boolean onItemUse(ItemStack stack, EntityNPC playerIn, World worldIn, BlockPos pos, Facing side, float hitX, float hitY, float hitZ) - { - boolean flag = worldIn.getState(pos).getBlock().isReplaceable(worldIn, pos); - BlockPos blockpos = flag ? pos : pos.offset(side); - - if (!playerIn.canPlayerEdit(blockpos, side, stack)) - { - return false; - } - else - { - Block block = worldIn.getState(blockpos).getBlock(); - - if (!worldIn.canBlockBePlaced(block, blockpos, false, side, (Entity)null, stack)) - { - return false; - } - else if (this.block.canPlaceBlockAt(worldIn, blockpos)) - { - stack.decrSize(); - worldIn.setState(blockpos, this.block.getState()); - return true; - } - else - { - return false; - } - } - } - - public boolean isMagnetic() { - return true; - } -} diff --git a/common/src/main/java/common/item/material/ItemDye.java b/common/src/main/java/common/item/material/ItemDye.java index 4d772bee..921521ff 100755 --- a/common/src/main/java/common/item/material/ItemDye.java +++ b/common/src/main/java/common/item/material/ItemDye.java @@ -12,8 +12,7 @@ import common.init.Blocks; import common.item.CheatTab; import common.item.Item; import common.item.ItemStack; -import common.model.Model; -import common.model.ModelProvider; +import common.item.StackSize; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.Facing; @@ -27,21 +26,29 @@ public class ItemDye extends Item { private static final ItemDye[] DIES = new ItemDye[DyeColor.values().length]; private final DyeColor color; + private final Block block; public static ItemDye getByColor(DyeColor color) { return DIES[color.ordinal()]; } - public ItemDye(DyeColor color) + public ItemDye(DyeColor color, Block block) { this.color = color; - this.setTab(color == DyeColor.BLUE ? CheatTab.METALS : CheatTab.MATERIALS); + this.block = block; + this.setTab(color == DyeColor.BROWN ? CheatTab.PLANTS : (color == DyeColor.BLUE ? CheatTab.METALS : CheatTab.MATERIALS)); + this.setDisplay(color.getDyeName()); + this.setMaxAmount(StackSize.XXL); DIES[this.color.ordinal()] = this; } public DyeColor getColor() { return this.color; } + + public Block getBlock() { + return this.block; + } /** * Called when a Block is right-clicked with this Item @@ -87,7 +94,7 @@ public class ItemDye extends Item { if (worldIn.isAirBlock(pos)) { - State iblockstate1 = Blocks.cocoa.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, playerIn); + State iblockstate1 = this.block.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, playerIn); worldIn.setState(pos, iblockstate1, 2); // if (!playerIn.creative) @@ -203,10 +210,6 @@ public class ItemDye extends Item { return false; } } - - public Model getModel(ModelProvider provider, String name) { - return provider.getModel(this.getTransform(), "dye_" + this.color.getName()); - } public ItemStack dispenseStack(World world, TileEntity source, Vec3 position, BlockPos blockpos, Facing facing, ItemStack stack) { if(this.color != DyeColor.WHITE) diff --git a/common/src/main/java/common/network/IClientPlayer.java b/common/src/main/java/common/network/IClientPlayer.java index 6be713a0..d04ae379 100644 --- a/common/src/main/java/common/network/IClientPlayer.java +++ b/common/src/main/java/common/network/IClientPlayer.java @@ -30,7 +30,6 @@ import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; import common.packet.SPacketBiome; -import common.packet.SPacketBlockAction; import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; @@ -121,7 +120,6 @@ public interface IClientPlayer extends NetHandler { void handleWindowProperty(SPacketWindowProperty packet); void handleEntityEquipment(SPacketEntityEquipment packet); void handleCloseWindow(SPacketCloseWindow packet); - void handleBlockAction(SPacketBlockAction packet); void handleBlockBreakAnim(SPacketBlockBreakAnim packet); void handleMapChunkBulk(SPacketMapChunkBulk packet); void handleChangeGameState(SPacketChangeGameState packet); diff --git a/common/src/main/java/common/network/PacketRegistry.java b/common/src/main/java/common/network/PacketRegistry.java index 668eb146..f29cabbe 100755 --- a/common/src/main/java/common/network/PacketRegistry.java +++ b/common/src/main/java/common/network/PacketRegistry.java @@ -67,7 +67,6 @@ import common.packet.SPacketTabComplete; import common.packet.SPacketUpdateEntityTags; import common.packet.SPacketAnimation; import common.packet.SPacketBiome; -import common.packet.SPacketBlockAction; import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCamera; @@ -153,7 +152,6 @@ public enum PacketRegistry { this.server(SPacketChunkData.class); this.server(SPacketMultiBlockChange.class); this.server(SPacketBlockChange.class); - this.server(SPacketBlockAction.class); this.server(SPacketBlockBreakAnim.class); this.server(SPacketMapChunkBulk.class); this.server(SPacketExplosion.class); diff --git a/common/src/main/java/common/packet/SPacketBlockAction.java b/common/src/main/java/common/packet/SPacketBlockAction.java deleted file mode 100755 index 0b682079..00000000 --- a/common/src/main/java/common/packet/SPacketBlockAction.java +++ /dev/null @@ -1,82 +0,0 @@ -package common.packet; - -import java.io.IOException; - -import common.block.Block; -import common.init.BlockRegistry; -import common.network.IClientPlayer; -import common.network.Packet; -import common.network.PacketBuffer; -import common.util.BlockPos; -import common.world.State; - -public class SPacketBlockAction implements Packet -{ - private BlockPos blockPosition; - private int instrument; - private int pitch; - private Block block; - - public SPacketBlockAction() - { - } - - public SPacketBlockAction(BlockPos blockPositionIn, Block blockIn, int instrumentIn, int pitchIn) - { - this.blockPosition = blockPositionIn; - this.instrument = instrumentIn; - this.pitch = pitchIn; - this.block = blockIn; - } - - /** - * Reads the raw packet data from the data stream. - */ - public void readPacketData(PacketBuffer buf) throws IOException - { - this.blockPosition = buf.readBlockPos(); - this.instrument = buf.readUnsignedByte(); - this.pitch = buf.readUnsignedByte(); - State state = BlockRegistry.byId(buf.readVarInt()); - this.block = state == null ? null : state.getBlock(); - } - - /** - * Writes the raw packet data to the data stream. - */ - public void writePacketData(PacketBuffer buf) throws IOException - { - buf.writeBlockPos(this.blockPosition); - buf.writeByte(this.instrument); - buf.writeByte(this.pitch); - buf.writeVarInt(BlockRegistry.getId(this.block.getState())); - } - - /** - * Passes this Packet on to the NetHandler for processing. - */ - public void processPacket(IClientPlayer handler) - { - handler.handleBlockAction(this); - } - - public BlockPos getBlockPosition() - { - return this.blockPosition; - } - - public int getData1() - { - return this.instrument; - } - - public int getData2() - { - return this.pitch; - } - - public Block getBlockType() - { - return this.block; - } -} diff --git a/common/src/main/java/common/tileentity/TileEntity.java b/common/src/main/java/common/tileentity/TileEntity.java index 1d67988b..8329dd58 100755 --- a/common/src/main/java/common/tileentity/TileEntity.java +++ b/common/src/main/java/common/tileentity/TileEntity.java @@ -161,11 +161,6 @@ public abstract class TileEntity return false; } - public boolean receiveClientEvent(int id, int type) - { - return false; - } - public void updateContainingBlockInfo() { this.blockType = null; diff --git a/common/src/main/java/common/tileentity/TileEntityChest.java b/common/src/main/java/common/tileentity/TileEntityChest.java index 555921e8..8dcceeac 100755 --- a/common/src/main/java/common/tileentity/TileEntityChest.java +++ b/common/src/main/java/common/tileentity/TileEntityChest.java @@ -262,17 +262,9 @@ public class TileEntityChest extends TileEntity implements ITickable, IInventory } } - public boolean receiveClientEvent(int id, int type) + public void setUsing(int using) { - if (id == 1) - { - this.numPlayersUsing = type; - return true; - } - else - { - return super.receiveClientEvent(id, type); - } + this.numPlayersUsing = using; } public void openInventory(EntityNPC player) @@ -285,7 +277,7 @@ public class TileEntityChest extends TileEntity implements ITickable, IInventory } ++this.numPlayersUsing; - this.worldObj.addBlockEvent(this.pos, this.getBlockType(), 1, this.numPlayersUsing); + this.worldObj.playAuxSFX(2016, this.pos, this.numPlayersUsing); this.worldObj.notifyNeighborsOfStateChange(this.pos, this.getBlockType()); this.worldObj.notifyNeighborsOfStateChange(this.pos.down(), this.getBlockType()); // } @@ -296,7 +288,7 @@ public class TileEntityChest extends TileEntity implements ITickable, IInventory if (/* !player.isSpectator() && */ this.getBlockType() instanceof BlockChest) { --this.numPlayersUsing; - this.worldObj.addBlockEvent(this.pos, this.getBlockType(), 1, this.numPlayersUsing); + this.worldObj.playAuxSFX(2016, this.pos, this.numPlayersUsing); this.worldObj.notifyNeighborsOfStateChange(this.pos, this.getBlockType()); this.worldObj.notifyNeighborsOfStateChange(this.pos.down(), this.getBlockType()); } diff --git a/common/src/main/java/common/tileentity/TileEntityHopper.java b/common/src/main/java/common/tileentity/TileEntityHopper.java index 2cfe5fb0..cb7864ff 100755 --- a/common/src/main/java/common/tileentity/TileEntityHopper.java +++ b/common/src/main/java/common/tileentity/TileEntityHopper.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.function.Predicate; import common.block.Block; +import common.block.ITileEntityProvider; import common.block.tech.BlockChest; import common.block.tech.BlockHopper; import common.collect.Lists; @@ -625,7 +626,7 @@ public class TileEntityHopper extends TileEntityInventory implements ITickable BlockPos blockpos = new BlockPos(i, j, k); Block block = worldIn.getState(blockpos).getBlock(); - if (block.hasTileEntity()) + if (block instanceof ITileEntityProvider) { TileEntity tileentity = worldIn.getTileEntity(blockpos); diff --git a/common/src/main/java/common/tileentity/TileEntityPiston.java b/common/src/main/java/common/tileentity/TileEntityPiston.java deleted file mode 100755 index 88097b97..00000000 --- a/common/src/main/java/common/tileentity/TileEntityPiston.java +++ /dev/null @@ -1,222 +0,0 @@ -package common.tileentity; - -import java.util.List; - -import common.collect.Lists; -import common.entity.Entity; -import common.init.BlockRegistry; -import common.init.Blocks; -import common.tags.TagObject; -import common.util.BoundingBox; -import common.util.Facing; -import common.world.State; - -public class TileEntityPiston extends TileEntity implements ITickable -{ - private State pistonState; - private Facing pistonFacing; - - /** if this piston is extending or not */ - private boolean extending; - private boolean shouldHeadBeRendered; - private float progress; - - /** the progress in (de)extending */ - private float lastProgress; - private List field_174933_k = Lists.newArrayList(); - - public TileEntityPiston() - { - } - - public TileEntityPiston(State pistonStateIn, Facing pistonFacingIn, boolean extendingIn, boolean shouldHeadBeRenderedIn) - { - this.pistonState = pistonStateIn; - this.pistonFacing = pistonFacingIn; - this.extending = extendingIn; - this.shouldHeadBeRendered = shouldHeadBeRenderedIn; - } - - public State getPistonState() - { - return this.pistonState; - } - - public State getBlockState() - { - return Blocks.piston_extension.getState(); - } - - /** - * Returns true if a piston is extending - */ - public boolean isExtending() - { - return this.extending; - } - - public Facing getFacing() - { - return this.pistonFacing; - } - - public boolean shouldPistonHeadBeRendered() - { - return this.shouldHeadBeRendered; - } - - /** - * Get interpolated progress value (between lastProgress and progress) given the fractional time between ticks as an - * argument - */ - public float getProgress(float ticks) - { - if (ticks > 1.0F) - { - ticks = 1.0F; - } - - return this.lastProgress + (this.progress - this.lastProgress) * ticks; - } - - public float getOffsetX(float ticks) - { - return this.extending ? (this.getProgress(ticks) - 1.0F) * (float)this.pistonFacing.getFrontOffsetX() : (1.0F - this.getProgress(ticks)) * (float)this.pistonFacing.getFrontOffsetX(); - } - - public float getOffsetY(float ticks) - { - return this.extending ? (this.getProgress(ticks) - 1.0F) * (float)this.pistonFacing.getFrontOffsetY() : (1.0F - this.getProgress(ticks)) * (float)this.pistonFacing.getFrontOffsetY(); - } - - public float getOffsetZ(float ticks) - { - return this.extending ? (this.getProgress(ticks) - 1.0F) * (float)this.pistonFacing.getFrontOffsetZ() : (1.0F - this.getProgress(ticks)) * (float)this.pistonFacing.getFrontOffsetZ(); - } - - private void launchWithSlimeBlock(float p_145863_1_, float p_145863_2_) - { - if (this.extending) - { - p_145863_1_ = 1.0F - p_145863_1_; - } - else - { - --p_145863_1_; - } - - BoundingBox axisalignedbb = Blocks.piston_extension.getBoundingBox(this.worldObj, this.pos, this.pistonState, p_145863_1_, this.pistonFacing); - - if (axisalignedbb != null) - { - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity((Entity)null, axisalignedbb); - - if (!list.isEmpty()) - { - this.field_174933_k.addAll(list); - - for (Entity entity : this.field_174933_k) - { - if (this.pistonState.getBlock() == Blocks.slime_block && this.extending) - { - switch (this.pistonFacing.getAxis()) - { - case X: - entity.motionX = (double)this.pistonFacing.getFrontOffsetX(); - break; - - case Y: - entity.motionY = (double)this.pistonFacing.getFrontOffsetY(); - break; - - case Z: - entity.motionZ = (double)this.pistonFacing.getFrontOffsetZ(); - } - } - else - { - entity.moveEntity((double)(p_145863_2_ * (float)this.pistonFacing.getFrontOffsetX()), (double)(p_145863_2_ * (float)this.pistonFacing.getFrontOffsetY()), (double)(p_145863_2_ * (float)this.pistonFacing.getFrontOffsetZ())); - } - } - - this.field_174933_k.clear(); - } - } - } - - /** - * removes a piston's tile entity (and if the piston is moving, stops it) - */ - public void clearPistonTileEntity() - { - if (this.lastProgress < 1.0F && this.worldObj != null) - { - this.lastProgress = this.progress = 1.0F; - this.worldObj.removeTileEntity(this.pos); - this.invalidate(); - - if (this.worldObj.getState(this.pos).getBlock() == Blocks.piston_extension) - { - this.worldObj.setState(this.pos, this.pistonState, 3); - this.worldObj.notifyBlockOfStateChange(this.pos, this.pistonState.getBlock()); - } - } - } - - /** - * Like the old updateEntity(), except more generic. - */ - public void update() - { - this.lastProgress = this.progress; - - if (this.lastProgress >= 1.0F) - { - this.launchWithSlimeBlock(1.0F, 0.25F); - this.worldObj.removeTileEntity(this.pos); - this.invalidate(); - - if (this.worldObj.getState(this.pos).getBlock() == Blocks.piston_extension) - { - this.worldObj.setState(this.pos, this.pistonState, 3); - this.worldObj.notifyBlockOfStateChange(this.pos, this.pistonState.getBlock()); - } - } - else - { - this.progress += 0.5F; - - if (this.progress >= 1.0F) - { - this.progress = 1.0F; - } - - if (this.extending) - { - this.launchWithSlimeBlock(this.progress, this.progress - this.lastProgress + 0.0625F); - } - } - } - - public void readTags(TagObject compound) - { - super.readTags(compound); - this.pistonState = BlockRegistry.byName(compound.getString("block"), Blocks.air.getState()); - this.pistonFacing = Facing.getFront(compound.getInt("facing")); - this.lastProgress = this.progress = compound.getFloat("progress"); - this.extending = compound.getBool("extending"); - } - - public void writeTags(TagObject compound) - { - super.writeTags(compound); - compound.setString("block", BlockRegistry.getName(this.pistonState)); - compound.setInt("facing", this.pistonFacing.getIndex()); - compound.setFloat("progress", this.lastProgress); - compound.setBool("extending", this.extending); - } - - public int getColor() { - return 0x7f7f7f; - } -} diff --git a/common/src/main/java/common/world/Chunk.java b/common/src/main/java/common/world/Chunk.java index 23673110..153de731 100755 --- a/common/src/main/java/common/world/Chunk.java +++ b/common/src/main/java/common/world/Chunk.java @@ -347,7 +347,7 @@ public abstract class Chunk { if(!this.world.client) { oldb.onBlockRemoved((AWorldServer)this.world, pos, old); } - else if(oldb instanceof ITileEntityProvider) { + if(oldb instanceof ITileEntityProvider) { this.world.removeTileEntity(pos); } } @@ -518,7 +518,7 @@ public abstract class Chunk { private TileEntity createNewTileEntity(BlockPos pos) { Block block = this.getBlock(pos); - return !block.hasTileEntity() ? null : ((ITileEntityProvider)block).createNewTileEntity(); + return !(block instanceof ITileEntityProvider provider) ? null : provider.createNewTileEntity(); } public TileEntity getTileEntity(BlockPos pos, TileEntity.EnumCreateEntityType type) { @@ -671,7 +671,7 @@ public abstract class Chunk { while(!this.tileQueue.isEmpty()) { BlockPos pos = (BlockPos)this.tileQueue.poll(); - if(this.getTileEntity(pos, TileEntity.EnumCreateEntityType.CHECK) == null && this.getBlock(pos).hasTileEntity()) { + if(this.getTileEntity(pos, TileEntity.EnumCreateEntityType.CHECK) == null && this.getBlock(pos) instanceof ITileEntityProvider) { TileEntity tile = this.createNewTileEntity(pos); this.world.setTileEntity(pos, tile); this.world.markBlockRangeForRenderUpdate(pos, pos); diff --git a/common/src/main/java/common/world/World.java b/common/src/main/java/common/world/World.java index 3d48edd8..f10c81d5 100755 --- a/common/src/main/java/common/world/World.java +++ b/common/src/main/java/common/world/World.java @@ -1824,7 +1824,7 @@ public abstract class World implements IWorldAccess { BoundingBox axisalignedbb = p_175716_3_ ? null : blockIn.getCollisionBoundingBox(this, pos, blockIn.getState()); return axisalignedbb != null && !this.checkNoEntityCollision(axisalignedbb, entityIn) ? false : (block.getMaterial() == Material.SMALL && blockIn instanceof BlockAnvil ? true - : block.getMaterial().isReplaceable() && blockIn.canReplace(this, pos, side, itemStackIn)); + : block.getMaterial().isReplaceable() && blockIn.canPlaceBlockOnSide(this, pos, side)); } public int getSeaLevel() { @@ -1886,10 +1886,6 @@ public abstract class World implements IWorldAccess { public void setEntityState(Entity entityIn, byte state) { } - public void addBlockEvent(BlockPos pos, Block blockIn, int eventID, int eventParam) { - blockIn.onBlockEventReceived(this, pos, this.getState(pos), eventID, eventParam); - } - public Weather getWeather() { return this.weather; } diff --git a/server/src/main/java/server/clipboard/ReorderRegistry.java b/server/src/main/java/server/clipboard/ReorderRegistry.java index 3f695067..763c6748 100755 --- a/server/src/main/java/server/clipboard/ReorderRegistry.java +++ b/server/src/main/java/server/clipboard/ReorderRegistry.java @@ -53,6 +53,7 @@ public abstract class ReorderRegistry { PLACE_LAST.add(Blocks.tallgrass); PLACE_LAST.add(Blocks.deadbush); PLACE_LAST.add(Blocks.piston_head); + PLACE_LAST.add(Blocks.sticky_piston_head); for(BlockFlower block : BlockFlower.FLOWERS) { PLACE_LAST.add(block); } @@ -80,8 +81,6 @@ public abstract class ReorderRegistry { PLACE_LAST.add(Blocks.soul_wart); PLACE_LAST.add(Blocks.piston); PLACE_LAST.add(Blocks.sticky_piston); - PLACE_LAST.add(Blocks.piston_head); - PLACE_LAST.add(Blocks.piston_extension); PLACE_LAST.add(Blocks.cocoa); PLACE_LAST.add(Blocks.tripwire_hook); PLACE_LAST.add(Blocks.string); @@ -116,7 +115,7 @@ public abstract class ReorderRegistry { PLACE_FINAL.add(Blocks.reeds); PLACE_FINAL.add(Blocks.cake); PLACE_FINAL.add(Blocks.piston_head); - PLACE_FINAL.add(Blocks.piston_extension); + PLACE_FINAL.add(Blocks.sticky_piston_head); } /* diff --git a/server/src/main/java/server/world/Converter.java b/server/src/main/java/server/world/Converter.java index 00a7e657..bd3ff584 100644 --- a/server/src/main/java/server/world/Converter.java +++ b/server/src/main/java/server/world/Converter.java @@ -71,7 +71,6 @@ import common.block.tech.BlockLever; import common.block.tech.BlockLever.EnumOrientation; import common.block.tech.BlockPistonBase; import common.block.tech.BlockPistonHead; -import common.block.tech.BlockPistonHead.EnumPistonType; import common.block.tech.BlockPressurePlate; import common.block.tech.BlockPressurePlateWeighted; import common.block.tech.BlockRail; @@ -365,7 +364,6 @@ public abstract class Converter { mapTile(TileEntityDispenser.class, "Trap", "dispenser"); mapTile(TileEntityDropper.class, "Dropper", "dropper"); mapTile(TileEntitySign.class, "Sign", "sign"); - // mapTile(TileEntityPiston.class, "Piston", "piston"); mapTile(DeviceEffectGenerator.class, "Beacon", "beacon"); mapTile(TileEntityDaylightDetector.class, "DLDetector", "daylight_detector"); mapTile(TileEntityHopper.class, "Hopper", "hopper"); @@ -549,18 +547,18 @@ public abstract class Converter { mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.SOUTH), 33, 11); mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.WEST), 33, 12); mapBlock(Blocks.piston.getState().withProperty(BlockPistonBase.EXTENDED, true).withProperty(BlockPistonBase.FACING, Facing.EAST), 33, 13); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 0, 7); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 1, 6); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 2); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 3); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 4); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST).withProperty(BlockPistonHead.TYPE, EnumPistonType.DEFAULT), 34, 5); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 8, 15); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 9, 14); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 10); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 11); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 12); - mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST).withProperty(BlockPistonHead.TYPE, EnumPistonType.STICKY), 34, 13); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN), 34, 0, 7); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP), 34, 1, 6); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH), 34, 2); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH), 34, 3); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST), 34, 4); + mapBlock(Blocks.piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST), 34, 5); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.DOWN), 34, 8, 15); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.UP), 34, 9, 14); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.NORTH), 34, 10); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.SOUTH), 34, 11); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.WEST), 34, 12); + mapBlock(Blocks.sticky_piston_head.getState().withProperty(BlockPistonHead.FACING, Facing.EAST), 34, 13); mapBlock(new BlockFunction() { public State getState(int id, int data) { return BlockWool.getByColor(COLOR_LOOKUP[data]).getState(); diff --git a/server/src/main/java/server/world/TickEvent.java b/server/src/main/java/server/world/TickEvent.java deleted file mode 100755 index 7759f94c..00000000 --- a/server/src/main/java/server/world/TickEvent.java +++ /dev/null @@ -1,13 +0,0 @@ -package server.world; - -import common.block.Block; -import common.util.BlockPos; - -public record TickEvent(BlockPos position, Block block, int id, int parameter) { - public boolean equals(Object other) { - if(!(other instanceof TickEvent)) - return false; - TickEvent event = (TickEvent)other; - return this.position.equals(event.position) && this.id == event.id && this.parameter == event.parameter && this.block == event.block; - } -} diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index 4024cd62..156ae78e 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -2,7 +2,6 @@ package server.world; import java.io.File; import java.io.FileFilter; -import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -16,6 +15,7 @@ import java.util.function.Predicate; import common.biome.Biome; import common.block.Block; import common.block.BlockFalling; +import common.block.ITileEntityProvider; import common.block.Material; import common.block.artificial.BlockDoor; import common.block.liquid.BlockLiquid; @@ -49,7 +49,6 @@ import common.packet.SPacketParticles; import common.packet.SPacketChangeGameState; import common.packet.SPacketSpawnGlobalEntity; import common.packet.SPacketBiome; -import common.packet.SPacketBlockAction; import common.packet.SPacketBlockBreakAnim; import common.packet.SPacketBlockChange; import common.packet.SPacketCelestials; @@ -124,7 +123,6 @@ public final class WorldServer extends AWorldServer { private final Random grng; private final Set ticks = Sets.newHashSet(); private final TreeSet ticksNext = new TreeSet(); - private final EventList[] queue = new EventList[] {new EventList(), new EventList()}; private final List ticksNow = Lists.newArrayList(); private final Set dropped = Collections.newSetFromMap(new ConcurrentHashMap()); private final LongHashMap chunks = new LongHashMap(); @@ -174,7 +172,6 @@ public final class WorldServer extends AWorldServer { private int updatesForced; private boolean loadersModified; private int emptyTicks; - private int blockEvtIdx; private int trackDistance; private int viewRadius; private int updateLCG = this.rand.intv(); @@ -394,7 +391,6 @@ public final class WorldServer extends AWorldServer { // this.profiler.next("portalForcer"); // this.teleporter.removeStalePortalLocations(this.time); // this.profiler.end(); - this.sendQueuedBlockEvents(); } // public int getNextMapId() { @@ -983,43 +979,6 @@ public final class WorldServer extends AWorldServer { return explosion; } - public void addBlockEvent(BlockPos pos, Block blockIn, int eventID, int eventParam) { - TickEvent blockeventdata = new TickEvent(pos, blockIn, eventID, eventParam); - - for(TickEvent blockeventdata1 : this.queue[this.blockEvtIdx]) { - if(blockeventdata1.equals(blockeventdata)) { - return; - } - } - - this.queue[this.blockEvtIdx].add(blockeventdata); - } - - private void sendQueuedBlockEvents() { - while(!this.queue[this.blockEvtIdx].isEmpty()) { - int i = this.blockEvtIdx; - this.blockEvtIdx ^= 1; - - for(TickEvent blockeventdata : this.queue[i]) { - if(this.fireBlockEvent(blockeventdata)) { - this.sendNear((double)blockeventdata.position().getX(), (double)blockeventdata.position().getY(), - (double)blockeventdata.position().getZ(), 64.0D, - new SPacketBlockAction(blockeventdata.position(), blockeventdata.block(), blockeventdata.id(), - blockeventdata.parameter())); - } - } - - this.queue[i].clear(); - } - } - - private boolean fireBlockEvent(TickEvent event) { - State iblockstate = this.getState(event.position()); - return iblockstate.getBlock() == event.block() - ? iblockstate.getBlock().onBlockEventReceived(this, event.position(), iblockstate, event.id(), event.parameter()) - : false; - } - public void resetWeather() { this.calculateInitialWeather(); this.updateWeather(true); @@ -2617,11 +2576,6 @@ public final class WorldServer extends AWorldServer { if(this.isBlockLoaded(pos)) this.getChunk(pos).setModified(true); } - - private static class EventList extends ArrayList { - private EventList() { - } - } public static class WorldSavedData { public final String id; @@ -2755,7 +2709,7 @@ public final class WorldServer extends AWorldServer { BlockPos pos = new BlockPos(x, y, z); this.sendToAllPlayersWatchingChunk(new SPacketBlockChange(WorldServer.this, pos)); - if(WorldServer.this.getState(pos).getBlock().hasTileEntity()) { + if(WorldServer.this.getState(pos).getBlock() instanceof ITileEntityProvider) { this.sendTileToAllPlayersWatchingChunk(WorldServer.this.getTileEntity(pos)); } } @@ -2801,7 +2755,7 @@ public final class WorldServer extends AWorldServer { int z = (int)(this.changes[n] >> 32 & 15L) + this.position.z * 16; BlockPos pos = new BlockPos(x, y, z); - if(WorldServer.this.getState(pos).getBlock().hasTileEntity()) { + if(WorldServer.this.getState(pos).getBlock() instanceof ITileEntityProvider) { this.sendTileToAllPlayersWatchingChunk(WorldServer.this.getTileEntity(pos)); } }