block data fixes

This commit is contained in:
Sen 2025-06-23 10:18:24 +02:00
parent cde7bf84c1
commit eb815a8e21
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
54 changed files with 167 additions and 207 deletions

View file

@ -1930,7 +1930,7 @@ public class Client implements IThreadListener {
String.format("Position: %d %d %d", pos.getX(), pos.getY(), pos.getZ())
);
for(Entry<Property, Comparable> entry : block.getProperties().entrySet()) {
str.append("\n" + entry.getKey().getName() + ": " + entry.getValue().toString());
str.append("\n" + (block.getSavedProperties().contains(entry.getKey()) ? TextColor.NEON : TextColor.LGRAY) + entry.getKey().getName() + TextColor.RESET + ": " + (entry.getValue() instanceof Boolean bool ? (bool ? TextColor.GREEN : TextColor.RED) + "" + entry.getValue() + TextColor.RESET : entry.getValue()));
}
return str.toString();

View file

@ -774,8 +774,8 @@ public class Block {
public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, Entity entityIn) {
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, int meta, EntityLiving placer) {
return this.getStateFromMeta(meta);
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) {
return this.getState();
}
public void onBlockClicked(World worldIn, BlockPos pos, EntityNPC playerIn) {

View file

@ -108,7 +108,7 @@ public class BlockFenceGate extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing()).withProperty(OPEN, Boolean.valueOf(false)).withProperty(POWERED, Boolean.valueOf(false)).withProperty(IN_WALL, Boolean.valueOf(false));
}

View file

@ -75,8 +75,8 @@ public class BlockHay extends BlockRotatedPillar
* 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, int meta, EntityLiving placer)
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, meta, placer).withProperty(AXIS, facing.getAxis());
return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, placer).withProperty(AXIS, facing.getAxis());
}
}

View file

@ -90,7 +90,7 @@ public class BlockLadder extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
if (facing.getAxis().isHorizontal() && this.canBlockStay(worldIn, pos, facing))
{

View file

@ -19,8 +19,12 @@ public class BlockMetalBlock extends Block {
this.setRadiation(metal.radioactivity * 2.0f);
this.setTab(CheatTab.GEMS);
}
public MetalType getMetal() {
return this.metal;
}
protected Item getItemToRegister() {
return new ItemMetalBlock(this, this.metal, false);
return new ItemMetalBlock(this);
}
}

View file

@ -92,7 +92,7 @@ public class BlockPortalFrame extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()).withProperty(ORB, Boolean.valueOf(false));
}

View file

@ -29,7 +29,7 @@ public class BlockQuartzPillar extends BlockRotatedPillar
return this.dark;
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(AXIS, facing.getAxis());
}

View file

@ -30,7 +30,7 @@ public class BlockSkull extends Block implements Rotatable {
return world.getState(pos).getBlock().getMaterial().isReplaceable() && world.isBlockSolid(pos.down());
}
public State onBlockPlaced(World world, BlockPos pos, Facing face, float hitX, float hitY, float hitZ, int meta, EntityLiving placer) {
public State onBlockPlaced(World world, BlockPos pos, Facing face, float hitX, float hitY, float hitZ, EntityLiving placer) {
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -103,7 +103,7 @@ public class BlockSlab extends Block implements Directional
}
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, int meta, EntityLiving placer)
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 :

View file

@ -682,9 +682,9 @@ public class BlockStairs extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
State iblockstate = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer);
State iblockstate = super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, placer);
iblockstate = iblockstate.withProperty(FACING, placer.getHorizontalFacing()).withProperty(SHAPE, BlockStairs.EnumShape.STRAIGHT);
return facing != Facing.DOWN && (facing == Facing.UP || (double)hitY <= 0.5D) ? iblockstate.withProperty(HALF, BlockStairs.EnumHalf.BOTTOM) : iblockstate.withProperty(HALF, BlockStairs.EnumHalf.TOP);
}

View file

@ -188,7 +188,7 @@ public class BlockTrapDoor extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
State iblockstate = this.getState();

View file

@ -126,7 +126,7 @@ public class BlockCocoa extends Block implements Rotatable, IGrowable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
if (!facing.getAxis().isHorizontal())
{

View file

@ -4,7 +4,6 @@ import common.block.Block;
import common.block.Material;
import common.entity.types.EntityLiving;
import common.item.Item;
import common.item.block.ItemBlock;
import common.model.Model;
import common.model.ModelProvider;
import common.properties.Property;
@ -75,7 +74,7 @@ public class BlockHugeMushroom extends Block
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState();
}
@ -141,10 +140,6 @@ public class BlockHugeMushroom extends Block
.w(name + "_cap").e(name + "_inside");
}
}
protected Item getItemToRegister() {
return new ItemBlock(this, 14);
}
public static enum EnumType implements Identifyable
{

View file

@ -8,6 +8,7 @@ import common.block.SoundType;
import common.collect.Lists;
import common.color.Colorizer;
import common.entity.npc.EntityNPC;
import common.entity.types.EntityLiving;
import common.init.Blocks;
import common.init.ItemRegistry;
import common.init.WoodType;
@ -24,6 +25,7 @@ import common.properties.PropertyBool;
import common.rng.Random;
import common.tileentity.TileEntity;
import common.util.BlockPos;
import common.util.Facing;
import common.vars.Vars;
import common.world.IWorldAccess;
import common.world.AWorldClient;
@ -326,6 +328,10 @@ public class BlockLeaves extends BlockLeavesBase
super.harvestBlock(worldIn, player, pos, state, te);
}
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) {
return this.getState().withProperty(DECAY, false);
}
public Model getModel(ModelProvider provider, String name, State state) {
return this.subType.isTinted() ? provider.getModel(name).add().all().tint() :
@ -337,6 +343,6 @@ public class BlockLeaves extends BlockLeavesBase
}
protected Item getItemToRegister() {
return new ItemColored(this, 8);
return new ItemColored(this);
}
}

View file

@ -102,7 +102,7 @@ public class BlockLilyPad extends BlockBush implements Rotatable
return new Property[] {FACING};
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -54,9 +54,9 @@ public class BlockLog extends BlockRotatedPillar
* 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, int meta, EntityLiving placer)
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, meta, placer).withProperty(LOG_AXIS, BlockLog.EnumAxis.fromFacingAxis(facing.getAxis()));
return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, placer).withProperty(LOG_AXIS, BlockLog.EnumAxis.fromFacingAxis(facing.getAxis()));
}
public Model getModel(ModelProvider provider, String name, State state) {

View file

@ -25,7 +25,7 @@ public class BlockPumpkin extends Block implements Rotatable {
return world.getState(pos).getBlock().getMaterial().isReplaceable() && world.isBlockSolid(pos.down());
}
public State onBlockPlaced(World world, BlockPos pos, Facing face, float hitX, float hitY, float hitZ, int meta, EntityLiving placer) {
public State onBlockPlaced(World world, BlockPos pos, Facing face, float hitX, float hitY, float hitZ, EntityLiving placer) {
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -401,7 +401,7 @@ public class BlockVine extends Block
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
State iblockstate = this.getState().withProperty(UP, Boolean.valueOf(false)).withProperty(NORTH, Boolean.valueOf(false)).withProperty(EAST, Boolean.valueOf(false)).withProperty(SOUTH, Boolean.valueOf(false)).withProperty(WEST, Boolean.valueOf(false));
return facing.getAxis().isHorizontal() ? iblockstate.withProperty(getPropertyFor(facing.getOpposite()), Boolean.valueOf(true)) : iblockstate;

View file

@ -14,8 +14,12 @@ public class BlockMetalOre extends BlockOre {
this.setLightLevel(metal.radioactivity > 0.0F ? 0.25F : 0.0F);
this.setRadiation(metal.radioactivity * 0.5f);
}
public MetalType getMetal() {
return this.metal;
}
protected Item getItemToRegister() {
return new ItemMetalBlock(this, this.metal, true);
return new ItemMetalBlock(this);
}
}

View file

@ -68,10 +68,10 @@ public class BlockAnvil extends BlockFalling implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
Facing enumfacing = placer.getHorizontalFacing().rotateY();
return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer).withProperty(FACING, enumfacing);
return super.onBlockPlaced(worldIn, pos, facing, hitX, hitY, hitZ, placer).withProperty(FACING, enumfacing);
}
public boolean onBlockActivated(World worldIn, BlockPos pos, State state, EntityNPC playerIn, Facing side, float hitX, float hitY, float hitZ)

View file

@ -107,7 +107,7 @@ public class BlockButton extends Block implements Directional
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return canPlaceButtonOn(worldIn, pos, facing.getOpposite()) ? this.getState().withProperty(FACING, facing).withProperty(POWERED, Boolean.valueOf(false)) : this.getState().withProperty(FACING, Facing.DOWN).withProperty(POWERED, Boolean.valueOf(false));
}

View file

@ -113,7 +113,7 @@ public class BlockChest extends BlockContainer implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing());
}

View file

@ -10,9 +10,7 @@ import common.entity.types.EntityLiving;
import common.inventory.Container;
import common.inventory.InventoryHelper;
import common.item.CheatTab;
import common.item.Item;
import common.item.ItemStack;
import common.item.block.ItemBlock;
import common.model.Model;
import common.model.ModelProvider;
import common.model.ModelRotation;
@ -201,7 +199,7 @@ public class BlockDispenser extends BlockContainer implements Directional
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, BlockPistonBase.getFacingFromEntity(worldIn, pos, placer)).withProperty(TRIGGERED, Boolean.valueOf(false));
}
@ -321,8 +319,4 @@ public class BlockDispenser extends BlockContainer implements Directional
public Property<?>[] getIgnoredProperties() {
return new Property[] {TRIGGERED};
}
protected Item getItemToRegister() {
return new ItemBlock(this, 2);
}
}

View file

@ -177,7 +177,7 @@ public class BlockFurnace extends BlockContainer implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -122,7 +122,7 @@ public class BlockHopper extends BlockContainer implements DirectionalDown
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
Facing enumfacing = facing.getOpposite();

View file

@ -83,7 +83,7 @@ public class BlockLever extends Block
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
State iblockstate = this.getState().withProperty(POWERED, Boolean.valueOf(false));

View file

@ -81,8 +81,7 @@ public abstract class BlockMachine extends Block implements Rotatable, ITileEnti
return tileentity == null ? false : tileentity.receiveClientEvent(eventID, eventParam);
}
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, int meta,
EntityLiving placer) {
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer) {
return this.getState().withProperty(FACING, placer.getHorizontalFacing());
}

View file

@ -307,7 +307,7 @@ public class BlockPistonBase extends Block implements Directional
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, getFacingFromEntity(worldIn, pos, placer)).withProperty(EXTENDED, Boolean.valueOf(false));
}

View file

@ -312,7 +312,7 @@ public class BlockRedstoneComparator extends BlockRedstoneDiode implements ITile
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite()).withProperty(POWERED, Boolean.valueOf(false)).withProperty(MODE, BlockRedstoneComparator.Mode.COMPARE);
}

View file

@ -191,7 +191,7 @@ public abstract class BlockRedstoneDiode extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -98,7 +98,7 @@ public class BlockTorch extends Block implements DirectionalUp
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
if (this.canPlaceAt(worldIn, pos, facing))
{

View file

@ -91,7 +91,7 @@ public class BlockTripWireHook extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
State iblockstate = this.getState().withProperty(POWERED, Boolean.valueOf(false)).withProperty(ATTACHED, Boolean.valueOf(false)).withProperty(SUSPENDED, Boolean.valueOf(false));

View file

@ -83,7 +83,7 @@ public class BlockWarpChest extends Block implements Rotatable
* 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, int meta, EntityLiving placer)
public State onBlockPlaced(World worldIn, BlockPos pos, Facing facing, float hitX, float hitY, float hitZ, EntityLiving placer)
{
return this.getState().withProperty(FACING, placer.getHorizontalFacing().getOpposite());
}

View file

@ -652,6 +652,7 @@ public abstract class BlockRegistry {
for(Block block : REGISTRY) {
for(State state : block.getValidStates()) {
STATEMAP.put(state, REGISTRY.getId(block) << 4 | block.getMetaFromState(state));
state.buildSaved();
}
}

View file

@ -3,7 +3,7 @@ package common.item.block;
import java.util.List;
import common.block.Block;
import common.block.tile.BlockBanner;
import common.block.tile.BlockBannerStanding;
import common.block.tile.BlockStandingSign;
import common.block.tile.BlockWallSign;
import common.color.DyeColor;
@ -26,9 +26,9 @@ import common.world.World;
public class ItemBanner extends Item
{
private final BlockBanner block;
private final BlockBannerStanding block;
public ItemBanner(BlockBanner block)
public ItemBanner(BlockBannerStanding block)
{
this.block = block;
this.setTab(CheatTab.DECORATION);

View file

@ -23,33 +23,21 @@ public class ItemBlock extends Item
{
protected final Block block;
protected final String flatTexture;
protected final int fixedMeta;
public ItemBlock(Block block, String flatTexture, int fixedMeta)
{
this.block = block;
this.flatTexture = flatTexture;
this.fixedMeta = fixedMeta;
}
public ItemBlock(Block block, int fixedMeta)
{
this(block, null, fixedMeta);
}
public ItemBlock(Block block, String flatTexture)
{
this(block, flatTexture, 0);
this.block = block;
this.flatTexture = flatTexture;
}
public ItemBlock(Block block, String flatTexture, boolean item)
{
this(block, (item ? "items" : "blocks") + "/" + flatTexture, 0);
this(block, (item ? "items" : "blocks") + "/" + flatTexture);
}
public ItemBlock(Block block)
{
this(block, null, 0);
this(block, null);
}
public ItemBlock setDisplay(String unlocalizedName)
@ -87,7 +75,7 @@ public class ItemBlock extends Item
}
else if (worldIn.canBlockBePlaced(this.block, pos, false, side, (Entity)null, stack))
{
State iblockstate1 = this.block.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, this.fixedMeta, playerIn);
State iblockstate1 = this.block.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, playerIn);
if (worldIn.setState(pos, iblockstate1, 3))
{
@ -224,8 +212,8 @@ public class ItemBlock extends Item
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.getNameFromBlock(this.block).toString(), this.block.getStateFromMeta(this.fixedMeta)).getPrimary() /* "blocks/" + name */) :
BlockRegistry.getNameFromBlock(this.block).toString(), this.block.getState()).getPrimary() /* "blocks/" + name */) :
provider.getModel(this.block.getModel(provider,
BlockRegistry.getNameFromBlock(this.block).toString(), this.block.getStateFromMeta(this.fixedMeta)), this.getTransform());
BlockRegistry.getNameFromBlock(this.block).toString(), this.block.getState()), this.getTransform());
}
}

View file

@ -1,12 +1,12 @@
package common.item.block;
import common.block.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(Block block) {
public ItemChest(BlockChest block) {
super(block);
}

View file

@ -1,27 +0,0 @@
package common.item.block;
import common.block.Block;
import common.color.DyeColor;
import common.model.Model;
import common.model.ModelProvider;
public class ItemCloth extends ItemBlock
{
private final DyeColor color;
public ItemCloth(Block block, String flatTexture, DyeColor color)
{
super(block, flatTexture);
this.color = color;
}
public ItemCloth(Block block, DyeColor color)
{
this(block, null, color);
}
public Model getModel(ModelProvider provider, String name) {
return this.flatTexture != null ? provider.getModel(this.getTransform(), "blocks/" + this.color.getName() + "_" +
this.flatTexture) : super.getModel(provider, name);
}
}

View file

@ -10,11 +10,6 @@ public class ItemColored extends ItemBlock
super(block, flatTexture);
}
public ItemColored(Block block, int fixedMeta)
{
super(block, fixedMeta);
}
public ItemColored(Block block)
{
super(block);

View file

@ -15,9 +15,9 @@ import common.world.World;
public class ItemDoor extends Item
{
private Block block;
private final BlockDoor block;
public ItemDoor(Block block)
public ItemDoor(BlockDoor block)
{
this.block = block;
this.setTab(block.getMaterial() == Material.WOOD ? CheatTab.WOOD : CheatTab.TECHNOLOGY);

View file

@ -1,12 +1,11 @@
package common.item.block;
import common.block.Block;
import common.block.artificial.BlockFence;
import common.model.Model;
import common.model.ModelProvider;
public class ItemFence extends ItemBlock {
public ItemFence(Block block) {
public ItemFence(BlockFence block) {
super(block);
}

View file

@ -1,6 +1,5 @@
package common.item.block;
import common.block.Block;
import common.block.foliage.BlockLilyPad;
import common.block.liquid.BlockLiquid;
import common.entity.npc.EntityNPC;
@ -13,7 +12,7 @@ import common.world.World;
public class ItemLilyPad extends ItemColored
{
public ItemLilyPad(Block block)
public ItemLilyPad(BlockLilyPad block)
{
super(block, "");
}

View file

@ -5,6 +5,8 @@ import java.util.Map;
import common.attributes.Attribute;
import common.attributes.UsageSlot;
import common.block.Block;
import common.block.artificial.BlockMetalBlock;
import common.block.natural.BlockMetalOre;
import common.color.TextColor;
import common.entity.npc.EntityNPC;
import common.init.MetalType;
@ -14,7 +16,7 @@ public class ItemMetalBlock extends ItemBlock {
private final MetalType metal;
private final boolean ore;
public ItemMetalBlock(Block block, MetalType metal, boolean ore) {
private ItemMetalBlock(Block block, MetalType metal, boolean ore) {
super(block);
this.metal = metal;
this.ore = ore;
@ -22,6 +24,14 @@ public class ItemMetalBlock extends ItemBlock {
this.setColor(TextColor.GREEN);
}
public ItemMetalBlock(BlockMetalBlock block) {
this(block, block.getMetal(), false);
}
public ItemMetalBlock(BlockMetalOre block) {
this(block, block.getMetal(), true);
}
public void addInformation(ItemStack stack, EntityNPC playerIn, List<String> tooltip)
{
tooltip.add(this.metal.formatSymbol());
@ -30,11 +40,6 @@ public class ItemMetalBlock extends ItemBlock {
}
tooltip.add(this.metal.formatRarity());
}
// public ChatFormat getColor(ItemStack stack)
// {
// return this.metal.radioactivity > 0.0f ? ChatFormat.GREEN : super.getColor(stack);
// }
public void getModifiers(Map<Attribute, Float> map, UsageSlot slot)
{

View file

@ -1,15 +1,15 @@
package common.item.block;
import common.block.Block;
import common.block.tech.BlockPistonBase;
import common.init.Blocks;
import common.model.Model;
import common.model.ModelProvider;
public class ItemPiston extends ItemBlock
{
public ItemPiston(Block block)
public ItemPiston(BlockPistonBase block)
{
super(block, 7);
super(block);
}
public boolean isMagnetic() {

View file

@ -1,12 +1,11 @@
package common.item.block;
import common.block.Block;
import common.block.tech.BlockBasePressurePlate;
import common.model.Model;
import common.model.ModelProvider;
public class ItemPressurePlate extends ItemBlock {
public ItemPressurePlate(Block block) {
public ItemPressurePlate(BlockBasePressurePlate block) {
super(block);
}

View file

@ -1,6 +1,7 @@
package common.item.block;
import common.block.Block;
import common.block.foliage.BlockCrops;
import common.entity.npc.EntityNPC;
import common.item.CheatTab;
import common.item.ItemStack;
@ -11,16 +12,14 @@ import common.world.World;
public class ItemSeedFood extends ItemFood
{
private Block crops;
private BlockCrops crops;
private Block soil;
/** Block ID of the soil this seed food should be planted on. */
private Block soilId;
public ItemSeedFood(int healAmount, Block crops, Block soil)
public ItemSeedFood(int healAmount, BlockCrops crops, Block soil)
{
super(healAmount, false);
this.crops = crops;
this.soilId = soil;
this.soil = soil;
this.setTab(CheatTab.PLANTS);
}
@ -42,7 +41,7 @@ public class ItemSeedFood extends ItemFood
{
return false;
}
else if (worldIn.getState(pos).getBlock() == this.soilId && worldIn.isAirBlock(pos.up()))
else if (worldIn.getState(pos).getBlock() == this.soil && worldIn.isAirBlock(pos.up()))
{
worldIn.setState(pos.up(), this.crops.getState());
--stack.size;

View file

@ -1,6 +1,7 @@
package common.item.block;
import common.block.Block;
import common.block.foliage.BlockBush;
import common.entity.npc.EntityNPC;
import common.item.CheatTab;
import common.item.Item;
@ -12,15 +13,13 @@ import common.world.World;
public class ItemSeeds extends Item
{
private Block crops;
private BlockBush crops;
private Block soil;
/** BlockID of the block the seeds can be planted on. */
private Block soilBlockID;
public ItemSeeds(Block crops, Block soil)
public ItemSeeds(BlockBush crops, Block soil)
{
this.crops = crops;
this.soilBlockID = soil;
this.soil = soil;
this.setTab(CheatTab.PLANTS);
}
@ -42,7 +41,7 @@ public class ItemSeeds extends Item
{
return false;
}
else if (worldIn.getState(pos).getBlock() == this.soilBlockID && worldIn.isAirBlock(pos.up()))
else if (worldIn.getState(pos).getBlock() == this.soil && worldIn.isAirBlock(pos.up()))
{
worldIn.setState(pos.up(), this.crops.getState());
--stack.size;

View file

@ -1,7 +1,6 @@
package common.item.block;
import common.block.Block;
import common.block.tile.BlockSign;
import common.block.tile.BlockStandingSign;
import common.block.tile.BlockWallSign;
import common.entity.npc.EntityNPC;
@ -18,9 +17,9 @@ import common.world.World;
public class ItemSign extends Item
{
private final BlockSign block;
private final BlockStandingSign block;
public ItemSign(BlockSign block)
public ItemSign(BlockStandingSign block)
{
this.block = block;
this.setTab(CheatTab.DECORATION);
@ -84,17 +83,4 @@ public class ItemSign extends Item
}
}
}
// public Set<String> getValidTags() {
// return Sets.newHashSet("BlockEntityTag");
// }
//
// protected boolean validateNbt(NBTTagCompound tag) {
// if(tag.hasKey("BlockEntityTag")) {
// if(!tag.hasTag("BlockEntityTag")) {
// return false;
// }
// }
// return true;
// }
}

View file

@ -34,7 +34,7 @@ public class ItemSmallBlock extends Item {
if(!player.canPlayerEdit(pos, side, stack) || stack.size == 0)
return false;
if(world.canBlockBePlaced(this.block, pos, false, side, null, stack)) {
State newState = this.block.onBlockPlaced(world, pos, side, hitX, hitY, hitZ, 0, player);
State newState = this.block.onBlockPlaced(world, pos, side, hitX, hitY, hitZ, player);
if(world.setState(pos, newState, 3)) {
newState = world.getState(pos);

View file

@ -12,7 +12,7 @@ import common.world.World;
public class ItemSnow extends ItemBlock
{
public ItemSnow(Block block)
public ItemSnow(BlockSnow block)
{
super(block);
}

View file

@ -90,7 +90,7 @@ public class ItemDye extends Item
if (worldIn.isAirBlock(pos))
{
State iblockstate1 = Blocks.cocoa.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, 0, playerIn);
State iblockstate1 = Blocks.cocoa.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, playerIn);
worldIn.setState(pos, iblockstate1, 2);
// if (!playerIn.creative)

View file

@ -4,14 +4,17 @@ import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.function.Function;
import common.block.Block;
import common.collect.ImmutableMap;
import common.collect.ImmutableSet;
import common.collect.ImmutableTable;
import common.collect.Iterables;
import common.collect.Maps;
import common.collect.Sets;
import common.collect.StandardTable;
import common.collect.Table;
import common.init.BlockRegistry;
@ -35,6 +38,43 @@ public class State {
private final Block block;
private final ImmutableMap<Property, Comparable> properties;
private ImmutableTable<Property, Comparable, State> map;
private ImmutableSet<Property> saved;
private String id;
private static Set<Property> getSavedProperties(Block block) {
Set<Property> stored = Sets.newHashSet();
Map<Property, Comparable> map = Maps.newHashMap();
for(int z = 0; z < 16; z++) {
State sub = block.getStateFromMeta(z);
for(Entry<Property, Comparable> entry : sub.getProperties().entrySet()) {
if(map.containsKey(entry.getKey())) {
if(!map.get(entry.getKey()).equals(entry.getValue()))
stored.add(entry.getKey());
}
else {
map.put(entry.getKey(), entry.getValue());
}
}
}
for(int z = 0; z < 16; z++) {
State sub = block.getStateFromMeta(z);
Map<Property, Comparable> smap = sub.getProperties();
for(Property prop : map.keySet()) {
if(!smap.containsKey(prop))
stored.add(prop);
}
}
return stored;
}
private static String filterProperties(State state, Set<Property> stored) {
StringBuilder sb = new StringBuilder(BlockRegistry.getNameFromBlock(state.getBlock()));
for(Entry<Property, Comparable> entry : state.getProperties().entrySet()) {
if(stored.contains(entry.getKey()))
sb.append(',').append(entry.getKey().getName()).append('=').append(entry.getKey().getName(entry.getValue()));
}
return sb.toString();
}
public State(Block block, ImmutableMap<Property, Comparable> properties) {
this.block = block;
@ -58,6 +98,14 @@ public class State {
public Collection<Property> getPropertyNames() {
return Collections.<Property>unmodifiableCollection(this.properties.keySet());
}
public Collection<Property> getSavedProperties() {
return this.saved;
}
public String getId() {
return this.id;
}
public <T extends Comparable<T>> T getValue(Property<T> property) {
if(!this.properties.containsKey(property)) {
@ -118,21 +166,25 @@ public class State {
}
public void buildTable(Map<Map<Property, Comparable>, State> map) {
if(this.map != null) {
if(this.map != null)
throw new IllegalStateException();
}
else {
Table<Property, Comparable, State> table = new StandardTable<Property, Comparable, State>();
for(Property<? extends Comparable> prop : this.properties.keySet()) {
for(Comparable value : prop.getStates()) {
if(value != this.properties.get(prop)) {
Map<Property, Comparable> props = Maps.<Property, Comparable>newHashMap(this.properties);
props.put(prop, value);
table.put(prop, value, map.get(props));
}
Table<Property, Comparable, State> table = new StandardTable<Property, Comparable, State>();
for(Property<? extends Comparable> prop : this.properties.keySet()) {
for(Comparable value : prop.getStates()) {
if(value != this.properties.get(prop)) {
Map<Property, Comparable> props = Maps.<Property, Comparable>newHashMap(this.properties);
props.put(prop, value);
table.put(prop, value, map.get(props));
}
}
this.map = ImmutableTable.<Property, Comparable, State>copyOf(table);
}
this.map = ImmutableTable.<Property, Comparable, State>copyOf(table);
}
public void buildSaved() {
if(this.saved != null)
throw new IllegalStateException();
this.saved = ImmutableSet.copyOf(getSavedProperties(this.block));
this.id = filterProperties(this, this.saved);
}
}

View file

@ -28,7 +28,6 @@ import common.init.BlockRegistry;
import common.init.Blocks;
import common.init.EntityRegistry;
import common.log.Log;
import common.properties.Property;
import common.tags.TagObject;
import common.tileentity.TileEntity;
import common.util.BlockPos;
@ -38,41 +37,6 @@ import common.world.BlockArray;
import common.world.State;
public class Region {
private static Set<Property> getSavedProperties(Block block) {
Set<Property> stored = Sets.newHashSet();
Map<Property, Comparable> map = Maps.newHashMap();
for(int z = 0; z < 16; z++) {
State sub = block.getStateFromMeta(z);
for(Entry<Property, Comparable> entry : sub.getProperties().entrySet()) {
if(map.containsKey(entry.getKey())) {
if(!map.get(entry.getKey()).equals(entry.getValue()))
stored.add(entry.getKey());
}
else {
map.put(entry.getKey(), entry.getValue());
}
}
}
for(int z = 0; z < 16; z++) {
State sub = block.getStateFromMeta(z);
Map<Property, Comparable> smap = sub.getProperties();
for(Property prop : map.keySet()) {
if(!smap.containsKey(prop))
stored.add(prop);
}
}
return stored;
}
private static String filterProperties(State state, Set<Property> stored) {
StringBuilder sb = new StringBuilder(BlockRegistry.getNameFromBlock(state.getBlock()));
for(Entry<Property, Comparable> entry : state.getProperties().entrySet()) {
if(stored.contains(entry.getKey()))
sb.append(',').append(entry.getKey().getName()).append('=').append(entry.getKey().getName(entry.getValue()));
}
return sb.toString();
}
private static boolean makeMap(TagObject tag) {
Set<String> removed = Sets.newHashSet();
for(String id : tag.keySet()) {
@ -86,10 +50,9 @@ public class Region {
for(int z = 0; z < 4096; z++) {
Block block = BlockRegistry.getBlockById(z);
if(block != Blocks.air) {
Set<Property> stored = getSavedProperties(block);
for(int n = 0; n < 16; n++) {
State state = block.getStateFromMeta(n);
String id = filterProperties(state, stored);
String id = state.getId();
List<Character> ids = current.get(id);
char mid = (char)BlockRegistry.STATEMAP.get(state);
if(ids == null) {