more block data fixes
This commit is contained in:
parent
eb815a8e21
commit
ea76cecba3
24 changed files with 115 additions and 242 deletions
|
@ -632,7 +632,6 @@ public class BlockPistonBase extends Block implements Directional
|
|||
BlockPos blockpos2 = (BlockPos)list.get(k);
|
||||
State iblockstate = worldIn.getState(blockpos2);
|
||||
Block block1 = iblockstate.getBlock();
|
||||
block1.getMetaFromState(iblockstate);
|
||||
worldIn.setBlockToAir(blockpos2);
|
||||
blockpos2 = blockpos2.offset(enumfacing);
|
||||
worldIn.setState(blockpos2, Blocks.piston_extension.getState().withProperty(FACING, direction), 4);
|
||||
|
|
|
@ -222,39 +222,21 @@ public abstract class Dimension extends Nameable implements Comparable<Dimension
|
|||
|
||||
private long seed = 0L;
|
||||
|
||||
public static void writeState(TagObject tag, String name, String dname, State state) {
|
||||
if(state == null)
|
||||
return;
|
||||
tag.setString(name, BlockRegistry.getNameFromBlock(state.getBlock()));
|
||||
if(state != state.getBlock().getState())
|
||||
tag.setByte(dname, (byte)state.getBlock().getMetaFromState(state));
|
||||
}
|
||||
|
||||
public static void writeState(TagObject tag, String name, State state) {
|
||||
writeState(tag, name, name + "Data", state);
|
||||
if(state != null)
|
||||
tag.setString(name, state.getId());
|
||||
}
|
||||
|
||||
public static void writeState(TagObject tag, State state) {
|
||||
writeState(tag, "Block", "Data", state);
|
||||
}
|
||||
|
||||
public static State readState(TagObject tag, String name, String dname, State def) {
|
||||
if(!tag.hasString(name))
|
||||
return def;
|
||||
Block block = BlockRegistry.getRegisteredBlock(tag.getString(name));
|
||||
if(tag.hasByte(dname)) {
|
||||
byte data = tag.getByte(dname);
|
||||
return data < 0 || data >= 16 ? block.getState() : block.getStateFromMeta(data);
|
||||
}
|
||||
return block.getState();
|
||||
writeState(tag, "Block", state);
|
||||
}
|
||||
|
||||
public static State readState(TagObject tag, String name, State def) {
|
||||
return readState(tag, name, name + "Data", def);
|
||||
return tag.hasString(name) ? State.getState(tag.getString(name), def) : def;
|
||||
}
|
||||
|
||||
public static State readState(TagObject tag, State def) {
|
||||
return readState(tag, "Block", "Data", def);
|
||||
return readState(tag, "Block", def);
|
||||
}
|
||||
|
||||
public Dimension(int id, String name) {
|
||||
|
@ -956,12 +938,9 @@ public abstract class Dimension extends Nameable implements Comparable<Dimension
|
|||
this.caveFiller = readState(tag, "CaveFillBlock", Blocks.lava.getState());
|
||||
if(tag.hasStringArray("Layers")) {
|
||||
String[] list = tag.getStringArray("Layers");
|
||||
byte[] data = tag.hasByteArray("LayerData") ? tag.getByteArray("LayerData") : null;
|
||||
data = data != null && data.length != list.length ? null : data;
|
||||
this.layers = new State[list.length];
|
||||
for(int z = 0; z < this.layers.length; z++) {
|
||||
Block block = BlockRegistry.getRegisteredBlock(list[z]);
|
||||
this.layers[z] = data == null ? block.getState() : block.getStateFromMeta(data[z]);
|
||||
this.layers[z] = State.getState(list[z], Blocks.air.getState());
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -1197,18 +1176,11 @@ public abstract class Dimension extends Nameable implements Comparable<Dimension
|
|||
writeState(tag, "AltBlock2", this.alt2);
|
||||
writeState(tag, "CaveFillBlock", this.caveFiller);
|
||||
if(this.layers != null) {
|
||||
boolean dataUsed = false;
|
||||
String[] list = new String[this.layers.length];
|
||||
byte[] data = new byte[this.layers.length];
|
||||
for(int z = 0; z < this.layers.length; z++) {
|
||||
State state = this.layers[z];
|
||||
list[z] = BlockRegistry.getNameFromBlock(state.getBlock());
|
||||
data[z] = (byte)state.getBlock().getMetaFromState(state);
|
||||
dataUsed |= state.getBlock().getState() != state;
|
||||
list[z] = this.layers[z].getId();
|
||||
}
|
||||
tag.setStringArray("Layers", list);
|
||||
if(dataUsed)
|
||||
tag.setByteArray("LayerData", data);
|
||||
}
|
||||
if(this.addBiomes != null) {
|
||||
String[] list = new String[this.addBiomes.length];
|
||||
|
|
|
@ -1061,7 +1061,7 @@ public abstract class Entity
|
|||
|
||||
if (block.getMaterial().isColdLiquid())
|
||||
{
|
||||
float f = BlockLiquid.getLiquidHeightPercent(iblockstate.getBlock().getMetaFromState(iblockstate)) - 0.11111111F;
|
||||
float f = BlockLiquid.getLiquidHeightPercent(iblockstate.getValue(BlockLiquid.LEVEL)) - 0.11111111F;
|
||||
float f1 = (float)(blockpos.getY() + 1) - f;
|
||||
boolean flag = d0 < (double)f1;
|
||||
return !flag && this.isPlayer() ? false : flag;
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package common.entity.item;
|
||||
|
||||
import common.block.Block;
|
||||
import common.block.tech.BlockRailBase;
|
||||
import common.block.tech.BlockRailPowered;
|
||||
import common.entity.DamageSource;
|
||||
import common.entity.Entity;
|
||||
import common.entity.EntityType;
|
||||
import common.entity.types.EntityLiving;
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.init.Items;
|
||||
import common.item.Item;
|
||||
|
@ -89,9 +87,6 @@ public abstract class EntityCart extends Entity implements IWorldNameable
|
|||
this.dataWatcher.addObject(17, 0);
|
||||
this.dataWatcher.addObject(18, 1);
|
||||
this.dataWatcher.addObject(19, 0);
|
||||
this.dataWatcher.addObject(20, 0);
|
||||
this.dataWatcher.addObject(21, 6);
|
||||
this.dataWatcher.addObject(22, Byte.valueOf((byte)0));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -755,24 +750,6 @@ public abstract class EntityCart extends Entity implements IWorldNameable
|
|||
*/
|
||||
protected void readEntity(TagObject tagCompund)
|
||||
{
|
||||
if (tagCompund.getBool("CustomDisplayTile"))
|
||||
{
|
||||
int i = tagCompund.getInt("DisplayData");
|
||||
|
||||
if (tagCompund.hasString("DisplayTile"))
|
||||
{
|
||||
Block block = BlockRegistry.getRegisteredBlock(tagCompund.getString("DisplayTile"));
|
||||
|
||||
this.func_174899_a(block.getStateFromMeta(i));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.func_174899_a(Blocks.air.getState());
|
||||
}
|
||||
|
||||
this.setDisplayTileOffset(tagCompund.getInt("DisplayOffset"));
|
||||
}
|
||||
|
||||
if (tagCompund.hasString("CustomName") && tagCompund.getString("CustomName").length() > 0)
|
||||
{
|
||||
this.entityName = tagCompund.getString("CustomName");
|
||||
|
@ -784,16 +761,6 @@ public abstract class EntityCart extends Entity implements IWorldNameable
|
|||
*/
|
||||
protected void writeEntity(TagObject tagCompound)
|
||||
{
|
||||
if (this.hasDisplayTile())
|
||||
{
|
||||
tagCompound.setBool("CustomDisplayTile", true);
|
||||
State iblockstate = this.getDisplayTile();
|
||||
String resourcelocation = BlockRegistry.getNameFromBlock(iblockstate.getBlock());
|
||||
tagCompound.setString("DisplayTile", resourcelocation == null ? "" : resourcelocation);
|
||||
tagCompound.setInt("DisplayData", iblockstate.getBlock().getMetaFromState(iblockstate));
|
||||
tagCompound.setInt("DisplayOffset", this.getDisplayTileOffset());
|
||||
}
|
||||
|
||||
if (this.entityName != null && this.entityName.length() > 0)
|
||||
{
|
||||
tagCompound.setString("CustomName", this.entityName);
|
||||
|
@ -972,47 +939,15 @@ public abstract class EntityCart extends Entity implements IWorldNameable
|
|||
public abstract EntityCart.EnumMinecartType getMinecartType();
|
||||
|
||||
public State getDisplayTile()
|
||||
{
|
||||
return !this.hasDisplayTile() ? this.getDefaultDisplayTile() : BlockRegistry.getStateById(this.getDataWatcher().getWatchableObjectInt(20));
|
||||
}
|
||||
|
||||
public State getDefaultDisplayTile()
|
||||
{
|
||||
return Blocks.air.getState();
|
||||
}
|
||||
|
||||
public int getDisplayTileOffset()
|
||||
{
|
||||
return !this.hasDisplayTile() ? this.getDefaultDisplayTileOffset() : this.getDataWatcher().getWatchableObjectInt(21);
|
||||
}
|
||||
|
||||
public int getDefaultDisplayTileOffset()
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
public void func_174899_a(State p_174899_1_)
|
||||
{
|
||||
this.getDataWatcher().updateObject(20, Integer.valueOf(BlockRegistry.getStateId(p_174899_1_)));
|
||||
this.setHasDisplayTile(true);
|
||||
}
|
||||
|
||||
public void setDisplayTileOffset(int p_94086_1_)
|
||||
{
|
||||
this.getDataWatcher().updateObject(21, Integer.valueOf(p_94086_1_));
|
||||
this.setHasDisplayTile(true);
|
||||
}
|
||||
|
||||
public boolean hasDisplayTile()
|
||||
{
|
||||
return this.getDataWatcher().getWatchableObjectByte(22) == 1;
|
||||
}
|
||||
|
||||
public void setHasDisplayTile(boolean p_94096_1_)
|
||||
{
|
||||
this.getDataWatcher().updateObject(22, Byte.valueOf((byte)(p_94096_1_ ? 1 : 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the custom name tag for this entity
|
||||
*/
|
||||
|
|
|
@ -48,12 +48,12 @@ public class EntityChestCart extends EntityCartContainer
|
|||
return EntityCart.EnumMinecartType.CHEST;
|
||||
}
|
||||
|
||||
public State getDefaultDisplayTile()
|
||||
public State getDisplayTile()
|
||||
{
|
||||
return Blocks.chest.getState().withProperty(BlockChest.FACING, Facing.NORTH);
|
||||
}
|
||||
|
||||
public int getDefaultDisplayTileOffset()
|
||||
public int getDisplayTileOffset()
|
||||
{
|
||||
return 8;
|
||||
}
|
||||
|
|
|
@ -203,10 +203,7 @@ public class EntityFalling extends Entity implements IObjectData
|
|||
*/
|
||||
protected void writeEntity(TagObject tagCompound)
|
||||
{
|
||||
Block block = this.fallTile != null ? this.fallTile.getBlock() : Blocks.air;
|
||||
String resourcelocation = BlockRegistry.getNameFromBlock(block);
|
||||
tagCompound.setString("Block", resourcelocation == null ? "" : resourcelocation.toString());
|
||||
tagCompound.setByte("Data", (byte)block.getMetaFromState(this.fallTile));
|
||||
tagCompound.setString("Block", (this.fallTile != null ? this.fallTile : Blocks.air.getState()).getId());
|
||||
tagCompound.setByte("Time", (byte)this.fallTime);
|
||||
tagCompound.setBool("DropItem", this.shouldDropItem);
|
||||
tagCompound.setBool("HurtEntities", this.hurtEntities);
|
||||
|
@ -219,11 +216,9 @@ public class EntityFalling extends Entity implements IObjectData
|
|||
*/
|
||||
protected void readEntity(TagObject tagCompund)
|
||||
{
|
||||
int i = tagCompund.getByte("Data") & 255;
|
||||
|
||||
if (tagCompund.hasString("Block"))
|
||||
{
|
||||
this.fallTile = BlockRegistry.getRegisteredBlock(tagCompund.getString("Block")).getStateFromMeta(i);
|
||||
this.fallTile = State.getState(tagCompund.getString("Block"), Blocks.sand.getState());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -40,12 +40,12 @@ public class EntityHopperCart extends EntityCartContainer implements IHopper
|
|||
return EntityCart.EnumMinecartType.HOPPER;
|
||||
}
|
||||
|
||||
public State getDefaultDisplayTile()
|
||||
public State getDisplayTile()
|
||||
{
|
||||
return Blocks.hopper.getState();
|
||||
}
|
||||
|
||||
public int getDefaultDisplayTileOffset()
|
||||
public int getDisplayTileOffset()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ public class EntityTntCart extends EntityCart
|
|||
return EntityCart.EnumMinecartType.TNT;
|
||||
}
|
||||
|
||||
public State getDefaultDisplayTile()
|
||||
public State getDisplayTile()
|
||||
{
|
||||
return Blocks.tnt.getState();
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@ import common.entity.npc.EntityNPC;
|
|||
import common.entity.types.EntityLiving;
|
||||
import common.entity.types.IObjectData;
|
||||
import common.entity.types.IProjectile;
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.init.Items;
|
||||
import common.init.SoundEvent;
|
||||
|
@ -32,8 +31,7 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
private int xTile = -1;
|
||||
private int yTile = -1;
|
||||
private int zTile = -1;
|
||||
private Block inTile;
|
||||
private int inData;
|
||||
private State inTile;
|
||||
private boolean inGround;
|
||||
|
||||
/** 1 if the player can pick up the arrow */
|
||||
|
@ -219,9 +217,7 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
|
||||
if (this.inGround)
|
||||
{
|
||||
int j = block.getMetaFromState(iblockstate);
|
||||
|
||||
if (block == this.inTile && j == this.inData)
|
||||
if (iblockstate == this.inTile)
|
||||
{
|
||||
++this.ticksInGround;
|
||||
|
||||
|
@ -383,8 +379,7 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
this.yTile = blockpos1.getY();
|
||||
this.zTile = blockpos1.getZ();
|
||||
State iblockstate1 = this.worldObj.getState(blockpos1);
|
||||
this.inTile = iblockstate1.getBlock();
|
||||
this.inData = this.inTile.getMetaFromState(iblockstate1);
|
||||
this.inTile = iblockstate1;
|
||||
this.motionX = (double)((float)(movingobjectposition.vec.xCoord - this.posX));
|
||||
this.motionY = (double)((float)(movingobjectposition.vec.yCoord - this.posY));
|
||||
this.motionZ = (double)((float)(movingobjectposition.vec.zCoord - this.posZ));
|
||||
|
@ -397,9 +392,9 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
this.arrowShake = 7;
|
||||
this.setIsCritical(false);
|
||||
|
||||
if (this.inTile != Blocks.air)
|
||||
if (this.inTile.getBlock() != Blocks.air)
|
||||
{
|
||||
this.inTile.onEntityCollidedWithBlock(this.worldObj, blockpos1, iblockstate1, this);
|
||||
this.inTile.getBlock().onEntityCollidedWithBlock(this.worldObj, blockpos1, iblockstate1, this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -478,10 +473,8 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
tagCompound.setShort("zTile", (short)this.zTile);
|
||||
tagCompound.setShort("life", (short)this.ticksInGround);
|
||||
if(this.inTile != null) {
|
||||
String id = BlockRegistry.getNameFromBlock(this.inTile);
|
||||
tagCompound.setString("inTile", id == null ? "" : id.toString());
|
||||
tagCompound.setString("inTile", this.inTile.getId());
|
||||
}
|
||||
tagCompound.setByte("inData", (byte)this.inData);
|
||||
tagCompound.setByte("shake", (byte)this.arrowShake);
|
||||
tagCompound.setBool("inGround", this.inGround);
|
||||
tagCompound.setByte("pickup", (byte)this.canBePickedUp);
|
||||
|
@ -500,14 +493,13 @@ public class EntityArrow extends Entity implements IProjectile, IObjectData
|
|||
|
||||
if (tagCompund.hasString("inTile"))
|
||||
{
|
||||
this.inTile = BlockRegistry.getRegisteredBlock(tagCompund.getString("inTile"));
|
||||
this.inTile = State.getState(tagCompund.getString("inTile"), null);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.inTile = null;
|
||||
}
|
||||
|
||||
this.inData = tagCompund.getByte("inData") & 255;
|
||||
this.arrowShake = tagCompund.getByte("shake") & 255;
|
||||
this.inGround = tagCompund.getBool("inGround");
|
||||
|
||||
|
|
|
@ -132,14 +132,12 @@ import common.color.DyeColor;
|
|||
import common.item.CheatTab;
|
||||
import common.log.Log;
|
||||
import common.model.TextureAnimation;
|
||||
import common.util.IdMap;
|
||||
import common.util.Mapping;
|
||||
import common.util.Util;
|
||||
import common.world.State;
|
||||
|
||||
public abstract class BlockRegistry {
|
||||
public static final Mapping<Block> REGISTRY = new Mapping("air");
|
||||
public static final IdMap<State> STATEMAP = new IdMap();
|
||||
|
||||
private static int nextBlockId = 0;
|
||||
|
||||
|
@ -147,56 +145,29 @@ public abstract class BlockRegistry {
|
|||
return REGISTRY.getId(block);
|
||||
}
|
||||
|
||||
public static Block getBlockById(int id) {
|
||||
return REGISTRY.byId(id);
|
||||
}
|
||||
|
||||
public static String getNameFromBlock(Block block) {
|
||||
return REGISTRY.getName(block);
|
||||
}
|
||||
|
||||
public static Block getRegisteredBlock(String name) {
|
||||
return REGISTRY.byName(name);
|
||||
}
|
||||
|
||||
public static int getStateId(State state) {
|
||||
Block block = state.getBlock();
|
||||
return getIdFromBlock(block) + (block.getMetaFromState(state) << 12);
|
||||
}
|
||||
|
||||
public static Block getBlockById(int id) {
|
||||
return REGISTRY.byId(id);
|
||||
}
|
||||
|
||||
public static State getStateById(int id) {
|
||||
int i = id & 4095;
|
||||
int j = id >> 12 & 15;
|
||||
return getBlockById(i).getStateFromMeta(j);
|
||||
}
|
||||
|
||||
public static State getFromIdName(String name, State def) {
|
||||
if(name == null)
|
||||
return def;
|
||||
String[] tok = name.split(":");
|
||||
if(tok.length < 1 || tok.length > 2)
|
||||
return def;
|
||||
Block block = REGISTRY.byNameExact(tok[0]);
|
||||
if(block == null)
|
||||
return def;
|
||||
byte data;
|
||||
if(tok.length == 2) {
|
||||
try {
|
||||
int i = Integer.parseUnsignedInt(tok[1]);
|
||||
if(i >= 16)
|
||||
return def;
|
||||
data = (byte)i;
|
||||
}
|
||||
catch(NumberFormatException e) {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
else {
|
||||
data = (byte)block.getMetaFromState(block.getState());
|
||||
}
|
||||
return block.getStateFromMeta(data);
|
||||
}
|
||||
|
||||
public static Block getRegisteredBlock(String name) {
|
||||
return REGISTRY.byName(name);
|
||||
}
|
||||
|
||||
private static void registerBlock(String name, Block block) {
|
||||
REGISTRY.register(nextBlockId++, name, block);
|
||||
}
|
||||
|
@ -651,7 +622,6 @@ 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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,25 +93,16 @@ public abstract class ItemRegistry {
|
|||
return item == null ? 0 : REGISTRY.getId(item);
|
||||
}
|
||||
|
||||
public static String getNameFromItem(Item item) {
|
||||
return REGISTRY.getName(item);
|
||||
}
|
||||
|
||||
public static Item getItemById(int id) {
|
||||
return REGISTRY.byId(id);
|
||||
}
|
||||
|
||||
public static Item getRegisteredItem(String name) {
|
||||
return REGISTRY.byName(name);
|
||||
public static String getNameFromItem(Item item) {
|
||||
return REGISTRY.getName(item);
|
||||
}
|
||||
|
||||
public static ItemStack getFromIdName(String name, ItemStack def) {
|
||||
if(name == null)
|
||||
return def;
|
||||
Item item = REGISTRY.byName(name);
|
||||
if(item == null)
|
||||
return def;
|
||||
return new ItemStack(item);
|
||||
public static Item getRegisteredItem(String name) {
|
||||
return REGISTRY.byName(name);
|
||||
}
|
||||
|
||||
private static void registerItem(String name, Item item) {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package common.item;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
@ -67,6 +68,17 @@ public final class ItemStack
|
|||
return itemstack.getItem() != null ? itemstack : null;
|
||||
}
|
||||
|
||||
public static ItemStack getStack(String name, ItemStack def) {
|
||||
if(name == null)
|
||||
return def;
|
||||
Item item = ItemRegistry.REGISTRY.byNameExact(name);
|
||||
return item == null ? def : new ItemStack(item);
|
||||
}
|
||||
|
||||
public static Collection<String> getKeys() {
|
||||
return ItemRegistry.REGISTRY.getKeys();
|
||||
}
|
||||
|
||||
private ItemStack()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ package common.packet;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import common.init.BlockRegistry;
|
||||
import common.network.IClientPlayer;
|
||||
import common.network.Packet;
|
||||
import common.network.PacketBuffer;
|
||||
|
@ -31,7 +30,7 @@ public class SPacketBlockChange implements Packet<IClientPlayer>
|
|||
public void readPacketData(PacketBuffer buf) throws IOException
|
||||
{
|
||||
this.blockPosition = buf.readBlockPos();
|
||||
this.blockState = (State)BlockRegistry.STATEMAP.getByValue(buf.readVarInt());
|
||||
this.blockState = (State)State.ID_MAP.getByValue(buf.readVarInt());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -40,7 +39,7 @@ public class SPacketBlockChange implements Packet<IClientPlayer>
|
|||
public void writePacketData(PacketBuffer buf) throws IOException
|
||||
{
|
||||
buf.writeBlockPos(this.blockPosition);
|
||||
buf.writeVarInt(BlockRegistry.STATEMAP.get(this.blockState));
|
||||
buf.writeVarInt(State.ID_MAP.get(this.blockState));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -2,7 +2,6 @@ package common.packet;
|
|||
|
||||
import java.io.IOException;
|
||||
|
||||
import common.init.BlockRegistry;
|
||||
import common.network.IClientPlayer;
|
||||
import common.network.Packet;
|
||||
import common.network.PacketBuffer;
|
||||
|
@ -39,7 +38,7 @@ public class SPacketMultiBlockChange implements Packet<IClientPlayer>
|
|||
|
||||
for (int i = 0; i < this.changedBlocks.length; ++i)
|
||||
{
|
||||
this.changedBlocks[i] = new SPacketMultiBlockChange.BlockUpdateData(buf.readLong(), (State)BlockRegistry.STATEMAP.getByValue(buf.readVarInt()));
|
||||
this.changedBlocks[i] = new SPacketMultiBlockChange.BlockUpdateData(buf.readLong(), (State)State.ID_MAP.getByValue(buf.readVarInt()));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,7 +54,7 @@ public class SPacketMultiBlockChange implements Packet<IClientPlayer>
|
|||
for (SPacketMultiBlockChange.BlockUpdateData s22packetmultiblockchange$blockupdatedata : this.changedBlocks)
|
||||
{
|
||||
buf.writeLong(s22packetmultiblockchange$blockupdatedata.getRawPos());
|
||||
buf.writeVarInt(BlockRegistry.STATEMAP.get(s22packetmultiblockchange$blockupdatedata.getBlockState()));
|
||||
buf.writeVarInt(State.ID_MAP.get(s22packetmultiblockchange$blockupdatedata.getBlockState()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ 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;
|
||||
|
@ -201,7 +200,7 @@ public class TileEntityPiston extends TileEntity implements ITickable
|
|||
public void readTags(TagObject compound)
|
||||
{
|
||||
super.readTags(compound);
|
||||
this.pistonState = BlockRegistry.getRegisteredBlock(compound.getString("blockId")).getStateFromMeta(compound.getInt("blockData"));
|
||||
this.pistonState = State.getState(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");
|
||||
|
@ -210,8 +209,7 @@ public class TileEntityPiston extends TileEntity implements ITickable
|
|||
public void writeTags(TagObject compound)
|
||||
{
|
||||
super.writeTags(compound);
|
||||
compound.setString("blockId", BlockRegistry.getNameFromBlock(this.pistonState.getBlock()));
|
||||
compound.setInt("blockData", this.pistonState.getBlock().getMetaFromState(this.pistonState));
|
||||
compound.setString("block", this.pistonState.getId());
|
||||
compound.setInt("facing", this.pistonFacing.getIndex());
|
||||
compound.setFloat("progress", this.lastProgress);
|
||||
compound.setBool("extending", this.extending);
|
||||
|
|
|
@ -3,7 +3,6 @@ package common.world;
|
|||
import java.util.Arrays;
|
||||
|
||||
import common.block.Block;
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.util.NibbleArray;
|
||||
|
||||
|
@ -22,14 +21,14 @@ public class BlockArray {
|
|||
if(sky)
|
||||
this.skylight = new NibbleArray();
|
||||
if(filler != null && filler.getBlock() != Blocks.air) {
|
||||
Arrays.fill(this.data, (char)BlockRegistry.STATEMAP.get(filler));
|
||||
Arrays.fill(this.data, (char)State.ID_MAP.get(filler));
|
||||
this.blocks = this.data.length;
|
||||
this.ticked = filler.getBlock().getTickRandomly() ? this.data.length : 0;
|
||||
}
|
||||
}
|
||||
|
||||
public State get(int x, int y, int z) {
|
||||
State iblockstate = BlockRegistry.STATEMAP.getByValue(this.data[y << 8 | z << 4 | x]);
|
||||
State iblockstate = State.ID_MAP.getByValue(this.data[y << 8 | z << 4 | x]);
|
||||
return iblockstate != null ? iblockstate : Blocks.air.getState();
|
||||
}
|
||||
|
||||
|
@ -47,18 +46,13 @@ public class BlockArray {
|
|||
if(block.getTickRandomly())
|
||||
++this.ticked;
|
||||
}
|
||||
this.data[y << 8 | z << 4 | x] = (char)BlockRegistry.STATEMAP.get(state);
|
||||
this.data[y << 8 | z << 4 | x] = (char)State.ID_MAP.get(state);
|
||||
}
|
||||
|
||||
public Block getBlock(int x, int y, int z) {
|
||||
return this.get(x, y, z).getBlock();
|
||||
}
|
||||
|
||||
public int getMeta(int x, int y, int z) {
|
||||
State state = this.get(x, y, z);
|
||||
return state.getBlock().getMetaFromState(state);
|
||||
}
|
||||
|
||||
public boolean isEmpty() {
|
||||
return this.blocks == 0;
|
||||
}
|
||||
|
|
|
@ -19,9 +19,9 @@ import common.collect.StandardTable;
|
|||
import common.collect.Table;
|
||||
import common.init.BlockRegistry;
|
||||
import common.properties.Property;
|
||||
import common.util.IdMap;
|
||||
|
||||
public class State {
|
||||
// private static final Joiner COMMA_JOINER = Joiner.on(',');
|
||||
private static final Function<Entry<Property, Comparable>, String> MAP_ENTRY_TO_STRING =
|
||||
new Function<Entry<Property, Comparable>, String>() {
|
||||
public String apply(Entry<Property, Comparable> entry) {
|
||||
|
@ -34,6 +34,8 @@ public class State {
|
|||
}
|
||||
}
|
||||
};
|
||||
private static final Map<String, State> NAME_MAP = Maps.newLinkedHashMap();
|
||||
public static final IdMap<State> ID_MAP = new IdMap();
|
||||
|
||||
private final Block block;
|
||||
private final ImmutableMap<Property, Comparable> properties;
|
||||
|
@ -76,6 +78,25 @@ public class State {
|
|||
return sb.toString();
|
||||
}
|
||||
|
||||
public static State getState(String name, State def) {
|
||||
if(name == null)
|
||||
return def;
|
||||
State state = NAME_MAP.get(name);
|
||||
if(state != null)
|
||||
return state;
|
||||
int idx = name.indexOf(",");
|
||||
if(idx >= 0) {
|
||||
Block block = BlockRegistry.REGISTRY.byNameExact(name.substring(0, idx));
|
||||
if(block != null)
|
||||
return block.getState();
|
||||
}
|
||||
return def;
|
||||
}
|
||||
|
||||
public static Collection<String> getKeys() {
|
||||
return NAME_MAP.keySet();
|
||||
}
|
||||
|
||||
public State(Block block, ImmutableMap<Property, Comparable> properties) {
|
||||
this.block = block;
|
||||
this.properties = properties;
|
||||
|
@ -184,7 +205,8 @@ public class State {
|
|||
public void buildSaved() {
|
||||
if(this.saved != null)
|
||||
throw new IllegalStateException();
|
||||
ID_MAP.put(this, BlockRegistry.getIdFromBlock(this.block) << 4 | this.block.getMetaFromState(this));
|
||||
this.saved = ImmutableSet.copyOf(getSavedProperties(this.block));
|
||||
this.id = filterProperties(this, this.saved);
|
||||
NAME_MAP.put(this.id = filterProperties(this, this.saved), this);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
package server.command.commands;
|
||||
|
||||
import java.util.Collection;
|
||||
import common.init.BlockRegistry;
|
||||
import common.tags.TagObject;
|
||||
import common.tileentity.TileEntity;
|
||||
import common.util.BlockPos;
|
||||
|
@ -19,7 +18,7 @@ public class CommandBlock extends Command {
|
|||
|
||||
this.addString("block", false, new StringCompleter() {
|
||||
public Collection<String> complete(CommandEnvironment env) {
|
||||
return BlockRegistry.REGISTRY.getKeys();
|
||||
return State.getKeys();
|
||||
}
|
||||
});
|
||||
this.addBlockPos("position", true);
|
||||
|
@ -30,7 +29,7 @@ public class CommandBlock extends Command {
|
|||
}
|
||||
|
||||
public Object exec(CommandEnvironment env, Executor exec, String block, BlockPos position, WorldServer world, TagObject tag) {
|
||||
State state = BlockRegistry.getFromIdName(block, null);
|
||||
State state = State.getState(block, null);
|
||||
if(state == null)
|
||||
throw new RunException("Block '%s' existiert nicht", block);
|
||||
boolean success = world.setState(position, state);
|
||||
|
|
|
@ -4,7 +4,6 @@ import java.util.Collection;
|
|||
import java.util.List;
|
||||
|
||||
import common.entity.npc.EntityNPC;
|
||||
import common.init.ItemRegistry;
|
||||
import common.item.ItemStack;
|
||||
import common.tags.TagObject;
|
||||
import server.command.Command;
|
||||
|
@ -20,7 +19,7 @@ public class CommandItem extends Command {
|
|||
|
||||
this.addString("item", false, new StringCompleter() {
|
||||
public Collection<String> complete(CommandEnvironment env) {
|
||||
return ItemRegistry.REGISTRY.getKeys();
|
||||
return ItemStack.getKeys();
|
||||
}
|
||||
});
|
||||
this.setParamsOptional();
|
||||
|
@ -31,7 +30,7 @@ public class CommandItem extends Command {
|
|||
}
|
||||
|
||||
public Object exec(CommandEnvironment env, Executor exec, String item, int amount, TagObject tag, List<EntityNPC> players) {
|
||||
ItemStack stack = ItemRegistry.getFromIdName(item, null);
|
||||
ItemStack stack = ItemStack.getStack(item, null);
|
||||
if(stack == null)
|
||||
throw new RunException("Gegenstand '%s' existiert nicht", item);
|
||||
stack.setTagCompound(tag);
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.Set;
|
|||
import common.biome.Biome;
|
||||
import common.block.Block;
|
||||
import common.entity.Entity;
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.log.Log;
|
||||
import common.rng.Random;
|
||||
|
@ -31,7 +30,7 @@ public class ChunkServer extends Chunk {
|
|||
for(int bx = 0; bx < 16; ++bx) {
|
||||
for(int bz = 0; bz < 16; ++bz) {
|
||||
for(int by = 0; by < height; ++by) {
|
||||
State state = BlockRegistry.STATEMAP.getByValue(data[bx << 4 | bz | by << 8]);
|
||||
State state = State.ID_MAP.getByValue(data[bx << 4 | bz | by << 8]);
|
||||
if(state != null && state.getBlock() != Blocks.air) {
|
||||
int y = by >> 4;
|
||||
BlockArray arr = this.getArray(y);
|
||||
|
|
|
@ -51,7 +51,6 @@ import common.entity.animal.EntitySquid;
|
|||
import common.entity.animal.EntityWolf;
|
||||
import common.entity.item.EntityBoat;
|
||||
import common.entity.item.EntityMinecart;
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.init.EntityRegistry;
|
||||
import common.init.TileRegistry;
|
||||
|
@ -272,7 +271,7 @@ public abstract class Converter {
|
|||
}
|
||||
|
||||
private static void mapBlock(State state, int id, int data) {
|
||||
BLOCK_MAP[(id << 4) | data] = (char)BlockRegistry.STATEMAP.get(state);
|
||||
BLOCK_MAP[(id << 4) | data] = (char)State.ID_MAP.get(state);
|
||||
}
|
||||
|
||||
private static void mapBlock(State state, int id) {
|
||||
|
|
|
@ -54,7 +54,7 @@ public class Region {
|
|||
State state = block.getStateFromMeta(n);
|
||||
String id = state.getId();
|
||||
List<Character> ids = current.get(id);
|
||||
char mid = (char)BlockRegistry.STATEMAP.get(state);
|
||||
char mid = (char)State.ID_MAP.get(state);
|
||||
if(ids == null) {
|
||||
current.put(id, Lists.newArrayList(mid));
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package server.worldgen;
|
||||
|
||||
import common.init.BlockRegistry;
|
||||
import common.init.Blocks;
|
||||
import common.world.State;
|
||||
|
||||
|
@ -18,11 +17,11 @@ public class ChunkPrimer {
|
|||
}
|
||||
|
||||
public State get(int x, int y, int z) {
|
||||
State state = BlockRegistry.STATEMAP.getByValue(this.data[x << 4 | z | y << 8]);
|
||||
State state = State.ID_MAP.getByValue(this.data[x << 4 | z | y << 8]);
|
||||
return state != null ? state : Blocks.air.getState();
|
||||
}
|
||||
|
||||
public void set(int x, int y, int z, State state) {
|
||||
this.data[x << 4 | z | y << 8] = (short)BlockRegistry.STATEMAP.get(state);
|
||||
this.data[x << 4 | z | y << 8] = (short)State.ID_MAP.get(state);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,9 +4,9 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
|
||||
import common.biome.Biome;
|
||||
import common.block.Block;
|
||||
import common.block.artificial.BlockSlab;
|
||||
import common.block.artificial.BlockStairs;
|
||||
import common.block.foliage.BlockCrops;
|
||||
import common.block.foliage.BlockLog;
|
||||
import common.block.tech.BlockTorch;
|
||||
import common.collect.Lists;
|
||||
|
@ -381,10 +381,10 @@ public class StructureVillage
|
|||
|
||||
public static class Field1 extends StructureVillage.Village
|
||||
{
|
||||
private Block cropTypeA;
|
||||
private Block cropTypeB;
|
||||
private Block cropTypeC;
|
||||
private Block cropTypeD;
|
||||
private BlockCrops cropTypeA;
|
||||
private BlockCrops cropTypeB;
|
||||
private BlockCrops cropTypeC;
|
||||
private BlockCrops cropTypeD;
|
||||
|
||||
public Field1()
|
||||
{
|
||||
|
@ -413,13 +413,13 @@ public class StructureVillage
|
|||
protected void readTags(TagObject tagCompound)
|
||||
{
|
||||
super.readTags(tagCompound);
|
||||
this.cropTypeA = BlockRegistry.getRegisteredBlock(tagCompound.getString("CA"));
|
||||
this.cropTypeB = BlockRegistry.getRegisteredBlock(tagCompound.getString("CB"));
|
||||
this.cropTypeC = BlockRegistry.getRegisteredBlock(tagCompound.getString("CC"));
|
||||
this.cropTypeD = BlockRegistry.getRegisteredBlock(tagCompound.getString("CD"));
|
||||
this.cropTypeA = BlockRegistry.getRegisteredBlock(tagCompound.getString("CA")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
this.cropTypeB = BlockRegistry.getRegisteredBlock(tagCompound.getString("CB")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
this.cropTypeC = BlockRegistry.getRegisteredBlock(tagCompound.getString("CC")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
this.cropTypeD = BlockRegistry.getRegisteredBlock(tagCompound.getString("CD")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
}
|
||||
|
||||
private Block func_151559_a(Random rand)
|
||||
private BlockCrops func_151559_a(Random rand)
|
||||
{
|
||||
switch (rand.zrange(5))
|
||||
{
|
||||
|
@ -469,14 +469,14 @@ public class StructureVillage
|
|||
|
||||
for (int i = 1; i <= 7; ++i)
|
||||
{
|
||||
this.setBlockState(worldIn, this.cropTypeA.getStateFromMeta(randomIn.range(2, 7)), 1, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getStateFromMeta(randomIn.range(2, 7)), 2, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getStateFromMeta(randomIn.range(2, 7)), 4, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getStateFromMeta(randomIn.range(2, 7)), 5, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeC.getStateFromMeta(randomIn.range(2, 7)), 7, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeC.getStateFromMeta(randomIn.range(2, 7)), 8, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeD.getStateFromMeta(randomIn.range(2, 7)), 10, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeD.getStateFromMeta(randomIn.range(2, 7)), 11, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 1, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 2, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 4, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 5, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeC.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 7, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeC.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 8, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeD.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 10, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeD.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 11, 1, i, structureBoundingBoxIn);
|
||||
}
|
||||
|
||||
for (int k = 0; k < 9; ++k)
|
||||
|
@ -494,8 +494,8 @@ public class StructureVillage
|
|||
|
||||
public static class Field2 extends StructureVillage.Village
|
||||
{
|
||||
private Block cropTypeA;
|
||||
private Block cropTypeB;
|
||||
private BlockCrops cropTypeA;
|
||||
private BlockCrops cropTypeB;
|
||||
|
||||
public Field2()
|
||||
{
|
||||
|
@ -520,11 +520,11 @@ public class StructureVillage
|
|||
protected void readTags(TagObject tagCompound)
|
||||
{
|
||||
super.readTags(tagCompound);
|
||||
this.cropTypeA = BlockRegistry.getRegisteredBlock(tagCompound.getString("CA"));
|
||||
this.cropTypeB = BlockRegistry.getRegisteredBlock(tagCompound.getString("CB"));
|
||||
this.cropTypeA = BlockRegistry.getRegisteredBlock(tagCompound.getString("CA")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
this.cropTypeB = BlockRegistry.getRegisteredBlock(tagCompound.getString("CB")) instanceof BlockCrops crops ? crops : Blocks.wheat;
|
||||
}
|
||||
|
||||
private Block func_151560_a(Random rand)
|
||||
private BlockCrops func_151560_a(Random rand)
|
||||
{
|
||||
switch (rand.zrange(5))
|
||||
{
|
||||
|
@ -570,10 +570,10 @@ public class StructureVillage
|
|||
|
||||
for (int i = 1; i <= 7; ++i)
|
||||
{
|
||||
this.setBlockState(worldIn, this.cropTypeA.getStateFromMeta(randomIn.range(2, 7)), 1, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getStateFromMeta(randomIn.range(2, 7)), 2, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getStateFromMeta(randomIn.range(2, 7)), 4, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getStateFromMeta(randomIn.range(2, 7)), 5, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 1, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeA.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 2, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 4, 1, i, structureBoundingBoxIn);
|
||||
this.setBlockState(worldIn, this.cropTypeB.getState().withProperty(BlockCrops.AGE, randomIn.range(2, 7)), 5, 1, i, structureBoundingBoxIn);
|
||||
}
|
||||
|
||||
for (int k = 0; k < 9; ++k)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue