ensure that ids on blueprints are not correlated to worlds ids

This commit is contained in:
SpaceToad 2014-03-01 18:12:37 +01:00
parent 4f8a4535b9
commit 39c9cd3391
3 changed files with 16 additions and 21 deletions

View file

@ -25,14 +25,14 @@ public class MappingRegistry {
private HashMap <Item, Integer> itemToId = new HashMap<Item, Integer>();
private HashMap <Integer, Item> idToItem = new HashMap<Integer, Item>();
public void setIdForItem (Item item, int id) {
private void setIdForItem (Item item, int id) {
if (!itemToId.containsKey(item)) {
itemToId.put(item, id);
idToItem.put(id, item);
}
}
public void setIdForBlock (Block block, int id) {
private void setIdForBlock (Block block, int id) {
if (!blockToId.containsKey(block)) {
blockToId.put(block, id);
idToBlock.put(id, block);
@ -40,35 +40,35 @@ public class MappingRegistry {
}
public Item getItemForId(int id) {
if (idToItem.containsKey(id)) {
return idToItem.get(id);
if (!idToItem.containsKey(id)) {
return null;
}
return null;
return idToItem.get(id);
}
public int getIdForItem(Item item) {
if (itemToId.containsKey(item)) {
return itemToId.get(item);
if (!itemToId.containsKey(item)) {
setIdForItem(item, itemToId.size());
}
return 0;
return itemToId.get(item);
}
public Block getBlockForId(int id) {
if (idToBlock.containsKey(id)) {
return idToBlock.get(id);
if (!idToBlock.containsKey(id)) {
return null;
}
return null;
return idToBlock.get(id);
}
public int getIdForBlock(Block block) {
if (blockToId.containsKey(block)) {
return blockToId.get(block);
if (!blockToId.containsKey(block)) {
setIdForBlock(block, blockToId.size());
}
return 0;
return blockToId.get(block);
}
public void write (NBTTagCompound nbt) {

View file

@ -11,7 +11,6 @@ package buildcraft.core.blueprints;
import java.util.ArrayList;
import java.util.LinkedList;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -94,8 +93,6 @@ public class BptSlot extends BptSlotInfo {
}
public void writeToNBT(NBTTagCompound nbt, MappingRegistry registry) {
registry.setIdForBlock(block, Block.blockRegistry.getIDForObject(block));
nbt.setInteger("blockId", registry.getIdForBlock(block));
nbt.setInteger("blockMeta", meta);
nbt.setTag("blockCpt", cpt);
@ -103,11 +100,10 @@ public class BptSlot extends BptSlotInfo {
NBTTagList rq = new NBTTagList();
for (ItemStack stack : storedRequirements) {
registry.setIdForItem(stack.getItem(),
Item.itemRegistry.getIDForObject(stack.getItem()));
NBTTagCompound sub = new NBTTagCompound();
stack.writeToNBT(stack.writeToNBT(sub));
sub.setInteger("id", Item.itemRegistry.getIDForObject(registry
.getItemForId(sub.getInteger("id"))));
rq.appendTag(sub);
}

View file

@ -82,7 +82,6 @@ public class BptBlockPipe extends BptBlock {
Pipe pipe = BlockGenericPipe.getPipe(context.world(), x, y, z);
if (BlockGenericPipe.isValid(pipe)) {
context.getMappingRegistry().setIdForItem(pipe.item, Item.getIdFromItem(pipe.item));
slot.cpt.setInteger("pipeId", context.getMappingRegistry()
.getIdForItem(pipe.item));