diff --git a/client/src/main/java/client/renderer/particle/EntityFirework.java b/client/src/main/java/client/renderer/particle/EntityFirework.java index 00636d7..476388f 100755 --- a/client/src/main/java/client/renderer/particle/EntityFirework.java +++ b/client/src/main/java/client/renderer/particle/EntityFirework.java @@ -7,7 +7,7 @@ import common.entity.Entity; import common.init.SoundEvent; import common.item.ItemDye; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.BoundingBox; import common.util.ExtMath; import common.world.World; @@ -192,7 +192,7 @@ public class EntityFirework { private int fireworkAge; private final EffectRenderer theEffectRenderer; - private TagObjectList fireworkExplosions; + private List fireworkExplosions; boolean twinkle; public StarterFX(World p_i46464_1_, double p_i46464_2_, double p_i46464_4_, double p_i46464_6_, double p_i46464_8_, double p_i46464_10_, double p_i46464_12_, EffectRenderer p_i46464_14_, TagObject p_i46464_15_) @@ -206,7 +206,7 @@ public class EntityFirework if (p_i46464_15_ != null) { - this.fireworkExplosions = p_i46464_15_.getObjectList("Explosions"); + this.fireworkExplosions = p_i46464_15_.getList("Explosions"); if (this.fireworkExplosions.size() == 0) { diff --git a/common/src/main/java/common/attributes/Attributes.java b/common/src/main/java/common/attributes/Attributes.java index 73970af..99b33cd 100755 --- a/common/src/main/java/common/attributes/Attributes.java +++ b/common/src/main/java/common/attributes/Attributes.java @@ -2,9 +2,10 @@ package common.attributes; import java.util.Collection; +import common.collect.Lists; import common.log.Log; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; public class Attributes { @@ -40,9 +41,9 @@ public class Attributes /** * Creates an NBTTagList from a BaseAttributeMap, including all its AttributeInstances */ - public static TagObjectList writeBaseAttributeMapToNBT(AttributeMap map) + public static List writeBaseAttributeMapToNBT(AttributeMap map) { - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (AttributeInstance iattributeinstance : map.getAllAttributes()) { @@ -65,7 +66,7 @@ public class Attributes if (collection != null && !collection.isEmpty()) { - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (AttributeModifier attributemodifier : collection) { @@ -75,7 +76,7 @@ public class Attributes } } - nbttagcompound.setObjectList("Modifiers", nbttaglist); + nbttagcompound.setList("Modifiers", nbttaglist); } return nbttagcompound; @@ -94,7 +95,7 @@ public class Attributes return nbttagcompound; } - public static void setAttributeModifiers(AttributeMap map, TagObjectList list) + public static void setAttributeModifiers(AttributeMap map, List list) { for (int i = 0; i < list.size(); ++i) { @@ -116,9 +117,9 @@ public class Attributes { instance.setBaseValue(compound.getDouble("Base")); - if (compound.hasObjectList("Modifiers")) + if (compound.hasList("Modifiers")) { - TagObjectList nbttaglist = compound.getObjectList("Modifiers"); + List nbttaglist = compound.getList("Modifiers"); for (int i = 0; i < nbttaglist.size(); ++i) { diff --git a/common/src/main/java/common/dimension/Dimension.java b/common/src/main/java/common/dimension/Dimension.java index 55636c9..65d1afe 100755 --- a/common/src/main/java/common/dimension/Dimension.java +++ b/common/src/main/java/common/dimension/Dimension.java @@ -12,8 +12,6 @@ import common.init.Blocks; import common.init.MetalType; import common.init.UniverseRegistry; import common.tags.TagObject; -import common.tags.TagObjectList; -import common.tags.TagStringList; import common.util.ExtMath; import common.util.Vec3; import common.world.State; @@ -920,85 +918,85 @@ public abstract class Dimension extends Nameable implements Comparable list = tag.getList("Ores"); for(int z = 0; z < list.size(); z++) { TagObject gen = list.get(z); this.ores.add(new Ore(BlockRegistry.getFromIdName(gen.getString("Block"), Blocks.iron_ore.getState()), @@ -1016,8 +1014,8 @@ public abstract class Dimension extends Nameable implements Comparable list = tag.getList("Lakes"); for(int z = 0; z < list.size(); z++) { TagObject gen = list.get(z); this.lakes.add(new Lake( @@ -1028,8 +1026,8 @@ public abstract class Dimension extends Nameable implements Comparable list = tag.getList("Liquids"); for(int z = 0; z < list.size(); z++) { TagObject gen = list.get(z); this.liquids.add(new Liquid( @@ -1157,49 +1155,49 @@ public abstract class Dimension extends Nameable implements Comparable list = Lists.newArrayList(); for(Ore gen : this.ores) { TagObject ore = new TagObject(); ore.setString("Block", BlockRegistry.toIdName(gen.state)); @@ -1211,10 +1209,10 @@ public abstract class Dimension extends Nameable implements Comparable list = Lists.newArrayList(); for(Lake gen : this.lakes) { TagObject lake = new TagObject(); lake.setString("Block", BlockRegistry.toIdName(gen.state)); @@ -1228,10 +1226,10 @@ public abstract class Dimension extends Nameable implements Comparable list = Lists.newArrayList(); for(Liquid gen : this.liquids) { TagObject liquid = new TagObject(); liquid.setString("Block", BlockRegistry.toIdName(gen.state)); @@ -1241,7 +1239,7 @@ public abstract class Dimension extends Nameable implements Comparable list = stack.getEnchantmentTagList(); if (list == null) { @@ -72,7 +71,7 @@ public class EnchantmentHelper public static Map getEnchantments(ItemStack stack) { Map map = Maps.newLinkedHashMap(); - TagObjectList list = stack.getItem() == Items.enchanted_book ? Items.enchanted_book.getEnchantments(stack) : stack.getEnchantmentTagList(); + List list = stack.getItem() == Items.enchanted_book ? Items.enchanted_book.getEnchantments(stack) : stack.getEnchantmentTagList(); if (list != null) { @@ -92,7 +91,7 @@ public class EnchantmentHelper */ public static void setEnchantments(Map enchMap, ItemStack stack) { - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); Iterator iterator = enchMap.keySet().iterator(); while (iterator.hasNext()) @@ -161,7 +160,7 @@ public class EnchantmentHelper { if (stack != null) { - TagObjectList list = stack.getEnchantmentTagList(); + List list = stack.getEnchantmentTagList(); if (list != null) { diff --git a/common/src/main/java/common/entity/animal/EntityHorse.java b/common/src/main/java/common/entity/animal/EntityHorse.java index 4b1a88c..5ba138a 100755 --- a/common/src/main/java/common/entity/animal/EntityHorse.java +++ b/common/src/main/java/common/entity/animal/EntityHorse.java @@ -14,6 +14,7 @@ import common.attributes.AttributeInstance; import common.attributes.Attributes; import common.block.Block; import common.block.SoundType; +import common.collect.Lists; import common.entity.DamageSource; import common.entity.Entity; import common.entity.npc.EntityNPC; @@ -34,7 +35,7 @@ import common.model.ParticleType; import common.pathfinding.PathNavigateGround; import common.potion.Potion; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.BlockPos; import common.util.ExtMath; import common.world.World; @@ -1402,7 +1403,7 @@ public class EntityHorse extends EntityAnimal implements IInvBasic if (this.isChested()) { - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 2; i < this.horseChest.getSizeInventory(); ++i) { @@ -1417,7 +1418,7 @@ public class EntityHorse extends EntityAnimal implements IInvBasic } } - tagCompound.setObjectList("Items", nbttaglist); + tagCompound.setList("Items", nbttaglist); } if (this.horseChest.getStackInSlot(1) != null) @@ -1466,7 +1467,7 @@ public class EntityHorse extends EntityAnimal implements IInvBasic if (this.isChested()) { - TagObjectList nbttaglist = tagCompund.getObjectList("Items"); + List nbttaglist = tagCompund.getList("Items"); this.initHorseChest(); for (int i = 0; i < nbttaglist.size(); ++i) diff --git a/common/src/main/java/common/entity/item/EntityCartContainer.java b/common/src/main/java/common/entity/item/EntityCartContainer.java index bb84638..e6f9629 100755 --- a/common/src/main/java/common/entity/item/EntityCartContainer.java +++ b/common/src/main/java/common/entity/item/EntityCartContainer.java @@ -1,5 +1,6 @@ package common.entity.item; +import common.collect.Lists; import common.entity.DamageSource; import common.entity.Entity; import common.entity.npc.EntityNPC; @@ -8,7 +9,7 @@ import common.inventory.Container; import common.inventory.InventoryHelper; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.tileentity.ILockableContainer; import common.tileentity.LockCode; import common.util.BlockPos; @@ -190,7 +191,7 @@ public abstract class EntityCartContainer extends EntityCart implements ILockabl protected void writeEntity(TagObject tagCompound) { super.writeEntity(tagCompound); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.minecartContainerItems.length; ++i) { @@ -203,7 +204,7 @@ public abstract class EntityCartContainer extends EntityCart implements ILockabl } } - tagCompound.setObjectList("Items", nbttaglist); + tagCompound.setList("Items", nbttaglist); } /** @@ -212,7 +213,7 @@ public abstract class EntityCartContainer extends EntityCart implements ILockabl protected void readEntity(TagObject tagCompund) { super.readEntity(tagCompund); - TagObjectList nbttaglist = tagCompund.getObjectList("Items"); + List nbttaglist = tagCompund.getList("Items"); this.minecartContainerItems = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.size(); ++i) diff --git a/common/src/main/java/common/entity/item/EntityFalling.java b/common/src/main/java/common/entity/item/EntityFalling.java index 76607be..f2a708c 100755 --- a/common/src/main/java/common/entity/item/EntityFalling.java +++ b/common/src/main/java/common/entity/item/EntityFalling.java @@ -4,7 +4,6 @@ import java.util.List; import common.block.Block; import common.block.BlockFalling; -import common.block.ITileEntityProvider; import common.block.tech.BlockAnvil; import common.collect.Lists; import common.entity.DamageSource; @@ -15,9 +14,7 @@ import common.init.BlockRegistry; import common.init.Blocks; import common.init.Config; import common.item.ItemStack; -import common.tags.Tag; import common.tags.TagObject; -import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.ExtMath; import common.util.Facing; @@ -33,7 +30,6 @@ public class EntityFalling extends Entity implements IObjectData private boolean hurtEntities; private int fallHurtMax = 40; private float fallHurtAmount = 2.0F; - public TagObject tileEntityData; public EntityFalling(World worldIn) { @@ -141,30 +137,6 @@ public class EntityFalling extends Entity implements IObjectData { ((BlockFalling)block).onEndFalling(this.worldObj, blockpos1); } - - if (this.tileEntityData != null && block instanceof ITileEntityProvider) - { - TileEntity tileentity = this.worldObj.getTileEntity(blockpos1); - - if (tileentity != null) - { - TagObject nbttagcompound = new TagObject(); - tileentity.writeTags(nbttagcompound); - - for (String s : this.tileEntityData.getKeySet()) - { - Tag nbtbase = this.tileEntityData.get(s); - - if (!s.equals("x") && !s.equals("y") && !s.equals("z")) - { - nbttagcompound.set(s, nbtbase.copy()); - } - } - - tileentity.readTags(nbttagcompound); - tileentity.markDirty(); - } - } } else if (this.shouldDropItem && Config.objectDrop) { @@ -239,11 +211,6 @@ public class EntityFalling extends Entity implements IObjectData tagCompound.setBool("HurtEntities", this.hurtEntities); tagCompound.setFloat("FallHurtAmount", this.fallHurtAmount); tagCompound.setInt("FallHurtMax", this.fallHurtMax); - - if (this.tileEntityData != null) - { - tagCompound.setObject("TileEntityData", this.tileEntityData); - } } /** @@ -271,11 +238,6 @@ public class EntityFalling extends Entity implements IObjectData this.shouldDropItem = tagCompund.getBool("DropItem"); - if (tagCompund.hasObject("TileEntityData")) - { - this.tileEntityData = tagCompund.getObject("TileEntityData"); - } - if (block == null || block == Blocks.air) { this.fallTile = Blocks.sand.getState(); diff --git a/common/src/main/java/common/entity/npc/EntityNPC.java b/common/src/main/java/common/entity/npc/EntityNPC.java index 9f47198..55c98d1 100755 --- a/common/src/main/java/common/entity/npc/EntityNPC.java +++ b/common/src/main/java/common/entity/npc/EntityNPC.java @@ -23,6 +23,7 @@ import common.attributes.AttributeInstance; import common.attributes.Attributes; import common.block.Block; import common.block.artificial.BlockBed; +import common.collect.Lists; import common.dimension.Space; import common.enchantment.Enchantment; import common.enchantment.EnchantmentHelper; @@ -84,7 +85,6 @@ import common.potion.PotionEffect; import common.rng.Random; import common.sound.MovingSoundMinecartRiding; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.IInteractionObject; import common.tileentity.LockCode; import common.tileentity.TileEntitySign; @@ -3389,8 +3389,8 @@ public abstract class EntityNPC extends EntityLiving // this.setCanPickUpLoot(tagCompund.getBoolean("CanPickUpLoot")); // } - if(tagCompund.hasObjectList("Equipment")) { - TagObjectList nbttaglist = tagCompund.getObjectList("Equipment"); + if(tagCompund.hasList("Equipment")) { + List nbttaglist = tagCompund.getList("Equipment"); for(int i = 0; i < this.equipment.length; ++i) { this.equipment[i] = ItemStack.readFromTag(nbttaglist.get(i)); @@ -3423,7 +3423,7 @@ public abstract class EntityNPC extends EntityLiving this.setNpcClass(type); this.setHeight(tagCompund.hasFloat("Height") ? tagCompund.getFloat("Height") : this.getBaseSize()); - TagObjectList nbttaglist = tagCompund.getObjectList("Items"); + List nbttaglist = tagCompund.getList("Items"); for (int i = 0; i < nbttaglist.size(); ++i) { @@ -3435,9 +3435,9 @@ public abstract class EntityNPC extends EntityLiving } } - if(tagCompund.hasObjectList("Offers")) { + if(tagCompund.hasList("Offers")) { this.trades = new MerchantRecipeList(); - this.trades.fromTags(tagCompund.getObjectList("Offers")); + this.trades.fromTags(tagCompund.getList("Offers")); } this.healTimer = tagCompund.getInt("healTimer"); if(tagCompund.hasByteArray("Skin")) @@ -3448,7 +3448,7 @@ public abstract class EntityNPC extends EntityLiving if(this.isPlayer()) { // this.entityUniqueID = getOfflineUUID(this.user); - TagObjectList nbttaglist0 = tagCompund.getObjectList("Inventory"); + List nbttaglist0 = tagCompund.getList("Inventory"); this.inventory.readFromNBT(nbttaglist0); this.inventory.currentItem = tagCompund.getInt("SelectedItemSlot"); // this.sleeping = tagCompund.getBoolean("Sleeping"); @@ -3495,9 +3495,9 @@ public abstract class EntityNPC extends EntityLiving // this.allowFlyingPersist = tagCompund.getBoolean("alwaysFly"); this.noclip = tagCompund.getBool("noClip"); - if (tagCompund.hasObjectList("WarpItems")) + if (tagCompund.hasList("WarpItems")) { - TagObjectList nbttaglist1 = tagCompund.getObjectList("WarpItems"); + List nbttaglist1 = tagCompund.getList("WarpItems"); this.warpChest.readTags(nbttaglist1); } @@ -3534,7 +3534,7 @@ public abstract class EntityNPC extends EntityLiving super.writeEntity(tagCompound); // tagCompound.setBoolean("CanPickUpLoot", this.canPickUpLoot()); - TagObjectList nbttaglist0 = new TagObjectList(); + List nbttaglist0 = Lists.newArrayList(); for(int i = 0; i < this.equipment.length; ++i) { TagObject nbttagcompound = new TagObject(); @@ -3546,7 +3546,7 @@ public abstract class EntityNPC extends EntityLiving nbttaglist0.add(nbttagcompound); } - tagCompound.setObjectList("Equipment", nbttaglist0); + tagCompound.setList("Equipment", nbttaglist0); // tagCompound.setString("Species", this.getSpecies()); tagCompound.setString("Char", this.getChar()); tagCompound.setString("Cape", this.getCape()); @@ -3559,7 +3559,7 @@ public abstract class EntityNPC extends EntityLiving if(type != null) tagCompound.setString("ClassType", this.species.classnames.inverse().get(type)); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.extraInventory.getSizeInventory(); ++i) { @@ -3571,9 +3571,9 @@ public abstract class EntityNPC extends EntityLiving } } - tagCompound.setObjectList("Items", nbttaglist); + tagCompound.setList("Items", nbttaglist); if(this.trades != null) - tagCompound.setObjectList("Offers", this.trades.toTags()); + tagCompound.setList("Offers", this.trades.toTags()); tagCompound.setInt("healTimer", this.healTimer); if(this.skin != null) tagCompound.setByteArray("Skin", this.skin); @@ -3587,7 +3587,7 @@ public abstract class EntityNPC extends EntityLiving this.getAttributeMap().applyAttributeModifiers(itemstack.getAttributeModifiers(2), z, itemstack.size); } } - tagCompound.setObjectList("Inventory", this.inventory.writeToNBT(new TagObjectList())); + tagCompound.setList("Inventory", this.inventory.writeToNBT(Lists.newArrayList())); tagCompound.setInt("SelectedItemSlot", this.inventory.currentItem); // tagCompound.setBoolean("Sleeping", this.sleeping); // tagCompound.setShort("SleepTimer", (short)this.sleepTimer); @@ -3624,7 +3624,7 @@ public abstract class EntityNPC extends EntityLiving // tagCompound.setBoolean("alwaysFly", this.allowFlyingPersist); tagCompound.setBool("noClip", this.noclip); - tagCompound.setObjectList("WarpItems", this.warpChest.writeTags()); + tagCompound.setList("WarpItems", this.warpChest.writeTags()); ItemStack itemstack = this.inventory.getCurrentItem(); if (itemstack != null && itemstack.getItem() != null) diff --git a/common/src/main/java/common/entity/types/EntityLiving.java b/common/src/main/java/common/entity/types/EntityLiving.java index ec0f089..cd01dfb 100755 --- a/common/src/main/java/common/entity/types/EntityLiving.java +++ b/common/src/main/java/common/entity/types/EntityLiving.java @@ -58,7 +58,6 @@ import common.potion.PotionEffect; import common.potion.PotionHelper; import common.rng.Random; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.util.BoundingBox; import common.util.ExtMath; @@ -557,7 +556,7 @@ public abstract class EntityLiving extends Entity } } - tagCompound.setObjectList("Attributes", Attributes.writeBaseAttributeMapToNBT(this.getAttributeMap())); + tagCompound.setList("Attributes", Attributes.writeBaseAttributeMapToNBT(this.getAttributeMap())); for (ItemStack itemstack1 : this.getInventory()) { @@ -569,14 +568,14 @@ public abstract class EntityLiving extends Entity if (!this.effects.isEmpty()) { - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (PotionEffect potioneffect : this.effects.values()) { nbttaglist.add(potioneffect.toTags()); } - tagCompound.setObjectList("ActiveEffects", nbttaglist); + tagCompound.setList("ActiveEffects", nbttaglist); } tagCompound.setBool("Leashed", this.leashed); @@ -613,14 +612,14 @@ public abstract class EntityLiving extends Entity { this.setAbsorptionAmount(tagCompund.getInt("Absorption")); - if (tagCompund.hasObjectList("Attributes") && this.worldObj != null && !this.worldObj.client) + if (tagCompund.hasList("Attributes") && this.worldObj != null && !this.worldObj.client) { - Attributes.setAttributeModifiers(this.getAttributeMap(), tagCompund.getObjectList("Attributes")); + Attributes.setAttributeModifiers(this.getAttributeMap(), tagCompund.getList("Attributes")); } - if (tagCompund.hasObjectList("ActiveEffects")) + if (tagCompund.hasList("ActiveEffects")) { - TagObjectList nbttaglist = tagCompund.getObjectList("ActiveEffects"); + List nbttaglist = tagCompund.getList("ActiveEffects"); for (int i = 0; i < nbttaglist.size(); ++i) { diff --git a/common/src/main/java/common/init/CraftingRegistry.java b/common/src/main/java/common/init/CraftingRegistry.java index 7e1b890..d5d491f 100755 --- a/common/src/main/java/common/init/CraftingRegistry.java +++ b/common/src/main/java/common/init/CraftingRegistry.java @@ -26,7 +26,6 @@ import common.item.ItemArmor; import common.item.ItemDye; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.TileEntityBanner; import common.world.World; @@ -617,16 +616,16 @@ public abstract class CraftingRegistry } TagObject tag = itemstack.getSubCompound("BlockEntityTag", true); - TagObjectList list = null; + List list = null; - if (tag.hasObjectList("Patterns")) + if (tag.hasList("Patterns")) { - list = tag.getObjectList("Patterns"); + list = tag.getList("Patterns"); } else { - list = new TagObjectList(); - tag.setObjectList("Patterns", list); + list = Lists.newArrayList(); + tag.setList("Patterns", list); } TagObject pattern = new TagObject(); @@ -971,7 +970,7 @@ public abstract class CraftingRegistry { TagObject tag = new TagObject(); TagObject data = new TagObject(); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for (int k2 = 0; k2 < inv.getSizeInventory(); ++k2) { @@ -983,7 +982,7 @@ public abstract class CraftingRegistry } } - data.setObjectList("Explosions", list); + data.setList("Explosions", list); data.setByte("Flight", (byte)j); tag.setObject("Fireworks", data); this.field_92102_a.setTagCompound(tag); @@ -1552,7 +1551,7 @@ public abstract class CraftingRegistry if (itemstack1 != null && itemstack1.hasTagCompound()) { - itemstack.setTagCompound((TagObject)itemstack1.getTagCompound().copy()); + itemstack.setTagCompound(itemstack1.getTagCompound().copy()); } } } diff --git a/common/src/main/java/common/init/UniverseRegistry.java b/common/src/main/java/common/init/UniverseRegistry.java index ee194b1..b00741d 100755 --- a/common/src/main/java/common/init/UniverseRegistry.java +++ b/common/src/main/java/common/init/UniverseRegistry.java @@ -28,10 +28,7 @@ import common.dimension.Dimension.GeneratorType; import common.dimension.Dimension.ReplacerType; import common.log.Log; import common.rng.Random; -import common.tags.TagException; -import common.tags.TagInterpreter; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.PortalType; import common.world.State; import common.world.Weather; @@ -93,14 +90,14 @@ public abstract class UniverseRegistry { } public static void fromTags(TagObject tag) { - TagObjectList list = tag.getObjectList("Dimensions"); + List list = tag.getList("Dimensions"); for(int z = 0; z < list.size(); z++) { Dimension dim = Dimension.getByTag(list.get(z)); if(!REGISTRY.containsKey(dim.getDimensionId()) && !ALIASES.containsKey(dim.getDimensionName())) register(dim); } - list = tag.getObjectList("Names"); + list = tag.getList("Names"); for(int z = 0; z < list.size(); z++) { TagObject data = list.get(z); String id = data.getString("ID"); @@ -111,7 +108,7 @@ public abstract class UniverseRegistry { // } } - list = tag.getObjectList("Sectors"); + list = tag.getList("Sectors"); for(int z = 0; z < list.size(); z++) { TagObject data = list.get(z); String id = data.getString("ID"); @@ -121,7 +118,7 @@ public abstract class UniverseRegistry { sector.readTags(data); } - list = tag.getObjectList("Galaxies"); + list = tag.getList("Galaxies"); for(int z = 0; z < list.size(); z++) { TagObject data = list.get(z); String id = data.getString("ID"); @@ -131,7 +128,7 @@ public abstract class UniverseRegistry { galaxy.readTags(data); } - list = tag.getObjectList("Domains"); + list = tag.getList("Domains"); for(int z = 0; z < list.size(); z++) { TagObject data = list.get(z); String id = data.getString("ID"); @@ -141,7 +138,7 @@ public abstract class UniverseRegistry { domain.readTags(data); } - list = tag.getObjectList("Barycenters"); + list = tag.getList("Barycenters"); for(int z = 0; z < list.size(); z++) { TagObject link = list.get(z); if(!assign(link.getString("Celestial"), link.getString("Center"))) @@ -152,15 +149,15 @@ public abstract class UniverseRegistry { public static TagObject toTags() { TagObject tag = new TagObject(); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for(Dimension dim : DIMENSIONS) { if(!BASE_REGISTRY.containsKey(dim.getDimensionId()) && dim != Space.INSTANCE) list.add(dim.toTags()); } if(!list.isEmpty()) - tag.setObjectList("Dimensions", list); + tag.setList("Dimensions", list); - list = new TagObjectList(); + list = Lists.newArrayList(); for(Dimension dim : DIMENSIONS) { if(/* BASE_REGISTRY.containsKey(dim.getDimensionId()) */ dim != Space.INSTANCE) { TagObject data = new TagObject(); @@ -172,9 +169,9 @@ public abstract class UniverseRegistry { } } if(!list.isEmpty()) - tag.setObjectList("Names", list); + tag.setList("Names", list); - list = new TagObjectList(); + list = Lists.newArrayList(); for(Sector sector : SECTORS.values()) { TagObject data = new TagObject(); sector.writeTags(data); @@ -184,9 +181,9 @@ public abstract class UniverseRegistry { } } if(!list.isEmpty()) - tag.setObjectList("Sectors", list); + tag.setList("Sectors", list); - list = new TagObjectList(); + list = Lists.newArrayList(); for(Galaxy galaxy : GALAXIES.values()) { TagObject data = new TagObject(); galaxy.writeTags(data); @@ -196,9 +193,9 @@ public abstract class UniverseRegistry { } } if(!list.isEmpty()) - tag.setObjectList("Galaxies", list); + tag.setList("Galaxies", list); - list = new TagObjectList(); + list = Lists.newArrayList(); for(Domain domain : DOMAINS.values()) { TagObject data = new TagObject(); domain.writeTags(data); @@ -208,9 +205,9 @@ public abstract class UniverseRegistry { } } if(!list.isEmpty()) - tag.setObjectList("Domains", list); + tag.setList("Domains", list); - list = new TagObjectList(); + list = Lists.newArrayList(); for(Entry entry : MOON_MAP.entrySet()) { if(BASE_REGISTRY.containsKey(entry.getKey().getDimensionId())) continue; @@ -252,7 +249,7 @@ public abstract class UniverseRegistry { list.add(link); } if(!list.isEmpty()) - tag.setObjectList("Barycenters", list); + tag.setList("Barycenters", list); return tag; } @@ -703,9 +700,9 @@ public abstract class UniverseRegistry { Dimension dim = BASE_ALIASES.get(base).copy(UniverseRegistry.MORE_DIM_ID, "preset"); TagObject ptag; try { - ptag = TagInterpreter.parseTag("{" + data + "}"); + ptag = TagObject.parse("{" + data + "}"); } - catch(TagException e) { + catch(IllegalArgumentException e) { throw new RuntimeException(e); } TagObject dtag = dim.toTags(true); diff --git a/common/src/main/java/common/inventory/InventoryHelper.java b/common/src/main/java/common/inventory/InventoryHelper.java index 9b1d4fd..97dbb15 100755 --- a/common/src/main/java/common/inventory/InventoryHelper.java +++ b/common/src/main/java/common/inventory/InventoryHelper.java @@ -4,7 +4,6 @@ import common.entity.Entity; import common.entity.item.EntityItem; import common.item.ItemStack; import common.rng.Random; -import common.tags.TagObject; import common.util.BlockPos; import common.world.World; @@ -55,7 +54,7 @@ public class InventoryHelper if (stack.hasTagCompound()) { - entityitem.getEntityItem().setTagCompound((TagObject)stack.getTagCompound().copy()); + entityitem.getEntityItem().setTagCompound(stack.getTagCompound().copy()); } float f3 = 0.05F; diff --git a/common/src/main/java/common/inventory/InventoryPlayer.java b/common/src/main/java/common/inventory/InventoryPlayer.java index 21c9308..8802577 100755 --- a/common/src/main/java/common/inventory/InventoryPlayer.java +++ b/common/src/main/java/common/inventory/InventoryPlayer.java @@ -6,7 +6,7 @@ import common.item.Item; import common.item.ItemArmor; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; public class InventoryPlayer implements IInventory { @@ -216,7 +216,7 @@ public class InventoryPlayer implements IInventory if (itemStackIn.hasTagCompound()) { - this.mainInventory[j].setTagCompound((TagObject)itemStackIn.getTagCompound().copy()); + this.mainInventory[j].setTagCompound(itemStackIn.getTagCompound().copy()); } } @@ -450,7 +450,7 @@ public class InventoryPlayer implements IInventory * * @param nbtTagListIn List to append tags to */ - public TagObjectList writeToNBT(TagObjectList nbtTagListIn) + public List writeToNBT(List nbtTagListIn) { for (int i = 0; i < this.mainInventory.length; ++i) { @@ -482,7 +482,7 @@ public class InventoryPlayer implements IInventory * * @param nbtTagListIn tagList to read from */ - public void readFromNBT(TagObjectList nbtTagListIn) + public void readFromNBT(List nbtTagListIn) { this.mainInventory = new ItemStack[36]; this.armorInventory = new ItemStack[4]; diff --git a/common/src/main/java/common/inventory/InventoryWarpChest.java b/common/src/main/java/common/inventory/InventoryWarpChest.java index 6a4ff75..af5b384 100755 --- a/common/src/main/java/common/inventory/InventoryWarpChest.java +++ b/common/src/main/java/common/inventory/InventoryWarpChest.java @@ -1,10 +1,11 @@ package common.inventory; +import common.collect.Lists; import common.entity.npc.EntityNPC; import common.init.Blocks; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.BlockPos; public class InventoryWarpChest extends InventoryBasic @@ -21,7 +22,7 @@ public class InventoryWarpChest extends InventoryBasic this.associatedChest = chestTileEntity; } - public void readTags(TagObjectList list) + public void readTags(List list) { for (int i = 0; i < this.getSizeInventory(); ++i) { @@ -40,9 +41,9 @@ public class InventoryWarpChest extends InventoryBasic } } - public TagObjectList writeTags() + public List writeTags() { - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for (int i = 0; i < this.getSizeInventory(); ++i) { diff --git a/common/src/main/java/common/item/ItemBanner.java b/common/src/main/java/common/item/ItemBanner.java index 1b5549e..c5c76f6 100755 --- a/common/src/main/java/common/item/ItemBanner.java +++ b/common/src/main/java/common/item/ItemBanner.java @@ -11,7 +11,6 @@ import common.model.ItemMeshDefinition; import common.model.Model; import common.model.ModelProvider; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.TileEntity; import common.tileentity.TileEntityBanner; import common.util.BlockPos; @@ -98,9 +97,9 @@ public class ItemBanner extends ItemBlock { TagObject nbttagcompound = stack.getSubCompound("BlockEntityTag", false); - if (nbttagcompound != null && nbttagcompound.hasObjectList("Patterns")) + if (nbttagcompound != null && nbttagcompound.hasList("Patterns")) { - TagObjectList nbttaglist = nbttagcompound.getObjectList("Patterns"); + List nbttaglist = nbttagcompound.getList("Patterns"); for (int i = 0; i < nbttaglist.size() && i < 6; ++i) { diff --git a/common/src/main/java/common/item/ItemBlock.java b/common/src/main/java/common/item/ItemBlock.java index c63754f..0fa8dc3 100755 --- a/common/src/main/java/common/item/ItemBlock.java +++ b/common/src/main/java/common/item/ItemBlock.java @@ -119,9 +119,9 @@ public class ItemBlock extends Item } TagObject nbttagcompound = new TagObject(); - TagObject nbttagcompound1 = (TagObject)nbttagcompound.copy(); + TagObject nbttagcompound1 = nbttagcompound.copy(); tileentity.writeTags(nbttagcompound); - TagObject nbttagcompound2 = (TagObject)p_179224_3_.getTagCompound().get("BlockEntityTag"); + TagObject nbttagcompound2 = p_179224_3_.getTagCompound().getObject("BlockEntityTag"); nbttagcompound.merge(nbttagcompound2); nbttagcompound.setInt("x", stack.getX()); nbttagcompound.setInt("y", stack.getY()); diff --git a/common/src/main/java/common/item/ItemEnchantedBook.java b/common/src/main/java/common/item/ItemEnchantedBook.java index acd0ec1..ee4cf76 100755 --- a/common/src/main/java/common/item/ItemEnchantedBook.java +++ b/common/src/main/java/common/item/ItemEnchantedBook.java @@ -2,6 +2,7 @@ package common.item; import java.util.List; +import common.collect.Lists; import common.color.TextColor; import common.enchantment.Enchantment; import common.enchantment.EnchantmentHelper; @@ -11,7 +12,6 @@ import common.init.Items; import common.model.ItemMeshDefinition; import common.rng.Random; import common.tags.TagObject; -import common.tags.TagObjectList; public class ItemEnchantedBook extends Item { @@ -48,10 +48,10 @@ public class ItemEnchantedBook extends Item // return this.getEnchantments(stack).tagCount() > 0 ? ChatFormat.YELLOW : super.getColor(stack); // } - public TagObjectList getEnchantments(ItemStack stack) + public List getEnchantments(ItemStack stack) { TagObject nbttagcompound = stack.getTagCompound(); - return nbttagcompound != null && nbttagcompound.hasObjectList("StoredEnchantments") ? nbttagcompound.getObjectList("StoredEnchantments") : new TagObjectList(); + return nbttagcompound != null && nbttagcompound.hasList("StoredEnchantments") ? nbttagcompound.getList("StoredEnchantments") : Lists.newArrayList(); } /** @@ -60,7 +60,7 @@ public class ItemEnchantedBook extends Item public void addInformation(ItemStack stack, EntityNPC playerIn, List tooltip) { super.addInformation(stack, playerIn, tooltip); - TagObjectList nbttaglist = this.getEnchantments(stack); + List nbttaglist = this.getEnchantments(stack); if (nbttaglist != null) { @@ -82,7 +82,7 @@ public class ItemEnchantedBook extends Item */ public void addEnchantment(ItemStack stack, RngEnchantment enchantment) { - TagObjectList nbttaglist = this.getEnchantments(stack); + List nbttaglist = this.getEnchantments(stack); boolean flag = true; for (int i = 0; i < nbttaglist.size(); ++i) @@ -114,7 +114,7 @@ public class ItemEnchantedBook extends Item stack.setTagCompound(new TagObject()); } - stack.getTagCompound().setObjectList("StoredEnchantments", nbttaglist); + stack.getTagCompound().setList("StoredEnchantments", nbttaglist); } /** diff --git a/common/src/main/java/common/item/ItemFirework.java b/common/src/main/java/common/item/ItemFirework.java index 3cd1f8b..4f207b2 100755 --- a/common/src/main/java/common/item/ItemFirework.java +++ b/common/src/main/java/common/item/ItemFirework.java @@ -6,7 +6,6 @@ import common.collect.Lists; import common.entity.item.EntityFireworks; import common.entity.npc.EntityNPC; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.util.Facing; import common.world.World; @@ -52,7 +51,7 @@ public class ItemFirework extends Item tooltip.add("Flugdauer: " + nbttagcompound.getByte("Flight")); } - TagObjectList nbttaglist = nbttagcompound.getObjectList("Explosions"); + List nbttaglist = nbttagcompound.getList("Explosions"); if (nbttaglist != null && nbttaglist.size() > 0) { diff --git a/common/src/main/java/common/item/ItemStack.java b/common/src/main/java/common/item/ItemStack.java index a97992f..65d20aa 100755 --- a/common/src/main/java/common/item/ItemStack.java +++ b/common/src/main/java/common/item/ItemStack.java @@ -20,9 +20,7 @@ import common.entity.types.EntityLiving; import common.init.BlockRegistry; import common.init.ItemRegistry; import common.rng.Random; -import common.tags.Tag; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.util.Facing; import common.world.World; @@ -121,7 +119,7 @@ public final class ItemStack if (this.tag != null) { - itemstack.tag = (TagObject)this.tag.copy(); + itemstack.tag = this.tag.copy(); } this.size -= amount; @@ -433,7 +431,7 @@ public final class ItemStack if (this.tag != null) { - itemstack.tag = (TagObject)this.tag.copy(); + itemstack.tag = this.tag.copy(); } return itemstack; @@ -580,9 +578,9 @@ public final class ItemStack } } - public TagObjectList getEnchantmentTagList() + public List getEnchantmentTagList() { - return this.tag == null ? null : this.tag.getObjectList("ench"); + return this.tag == null ? null : this.tag.getList("ench"); } /** @@ -825,7 +823,7 @@ public final class ItemStack { // if ((i1 & 1) == 0) // { - TagObjectList nbttaglist = this.getEnchantmentTagList(); + List nbttaglist = this.getEnchantmentTagList(); if (nbttaglist != null) { @@ -984,7 +982,7 @@ public final class ItemStack if (this.hasTagCompound()) { - list.add(TextColor.GRAY + String.format("NBT-Tags: %d", this.getTagCompound().getKeySet().size())); + list.add(TextColor.GRAY + String.format("NBT-Tags: %d", this.getTagCompound().keySet().size())); } // } @@ -1019,12 +1017,12 @@ public final class ItemStack this.setTagCompound(new TagObject()); } - if (!this.tag.hasObjectList("ench")) + if (!this.tag.hasList("ench")) { - this.tag.setObjectList("ench", new TagObjectList()); + this.tag.setList("ench", Lists.newArrayList()); } - TagObjectList nbttaglist = this.tag.getObjectList("ench"); + List nbttaglist = this.tag.getList("ench"); TagObject nbttagcompound = new TagObject(); nbttagcompound.setShort("id", (short)ench.effectId); nbttagcompound.setShort("lvl", (short)(/* (byte) */ level)); @@ -1038,11 +1036,11 @@ public final class ItemStack if(this.tag == null) { return false; } - if(!this.tag.hasObjectList("ench")) { + if(!this.tag.hasList("ench")) { return false; } - TagObjectList oldEnch = this.tag.getObjectList("ench"); - TagObjectList newEnch = new TagObjectList(); + List oldEnch = this.tag.getList("ench"); + List newEnch = Lists.newArrayList(); boolean changed = false; TagObject tag; for(int z = 0; z < oldEnch.size(); z++) { @@ -1064,7 +1062,7 @@ public final class ItemStack } } else { - this.tag.setObjectList("ench", newEnch); + this.tag.setList("ench", newEnch); } return true; } @@ -1076,7 +1074,7 @@ public final class ItemStack if(this.tag == null) { return false; } - if(!this.tag.hasObjectList("ench")) { + if(!this.tag.hasList("ench")) { return false; } this.tag.remove("ench"); @@ -1091,17 +1089,27 @@ public final class ItemStack */ public boolean isItemEnchanted() { - return this.tag != null && this.tag.hasObjectList("ench"); + return this.tag != null && this.tag.hasList("ench"); } - public void setTagInfo(String key, Tag value) + public void setTagInfo(String key, TagObject value) { if (this.tag == null) { this.setTagCompound(new TagObject()); } - this.tag.set(key, value); + this.tag.setObject(key, value); + } + + public void setTagInfo(String key, List value) + { + if (this.tag == null) + { + this.setTagCompound(new TagObject()); + } + + this.tag.setList(key, value); } // public boolean canEditBlocks() diff --git a/common/src/main/java/common/network/PacketBuffer.java b/common/src/main/java/common/network/PacketBuffer.java index 0fff7a6..5de7b2f 100755 --- a/common/src/main/java/common/network/PacketBuffer.java +++ b/common/src/main/java/common/network/PacketBuffer.java @@ -10,8 +10,6 @@ import common.net.buffer.ByteBufInputStream; import common.net.buffer.ByteBufOutputStream; import common.net.handler.codec.DecoderException; import common.net.handler.codec.EncoderException; -import common.tags.SizeTracker; -import common.tags.TagLoader; import common.tags.TagObject; import common.util.BlockPos; @@ -98,7 +96,7 @@ public class PacketBuffer { return; } try { - TagLoader.write(tag, new ByteBufOutputStream(this.buf)); + TagObject.write(tag, new ByteBufOutputStream(this.buf)); } catch(IOException e) { throw new EncoderException(e); @@ -111,7 +109,7 @@ public class PacketBuffer { if(b == 0) return null; this.buf.readerIndex(i); - return TagLoader.read(new ByteBufInputStream(this.buf), new SizeTracker(2097152)); + return TagObject.read(new ByteBufInputStream(this.buf), 2097152); } public void writeItemStack(ItemStack stack) { diff --git a/common/src/main/java/common/tags/SizeTracker.java b/common/src/main/java/common/tags/SizeTracker.java index 04345e0..26040d3 100755 --- a/common/src/main/java/common/tags/SizeTracker.java +++ b/common/src/main/java/common/tags/SizeTracker.java @@ -1,6 +1,6 @@ package common.tags; -public class SizeTracker { +class SizeTracker { public static final SizeTracker INFINITE = new SizeTracker(0) { public void read(int bytes) { } diff --git a/common/src/main/java/common/tags/Tag.java b/common/src/main/java/common/tags/Tag.java index 000856f..401c857 100755 --- a/common/src/main/java/common/tags/Tag.java +++ b/common/src/main/java/common/tags/Tag.java @@ -4,7 +4,7 @@ import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -public abstract class Tag { +abstract class Tag { abstract void write(DataOutput output) throws IOException; abstract void read(DataInput input, int depth, SizeTracker tracker) throws IOException; public abstract String toString(); diff --git a/common/src/main/java/common/tags/TagException.java b/common/src/main/java/common/tags/TagException.java index b032641..1b11ebc 100755 --- a/common/src/main/java/common/tags/TagException.java +++ b/common/src/main/java/common/tags/TagException.java @@ -1,6 +1,6 @@ package common.tags; -public class TagException extends Exception { +class TagException extends IllegalArgumentException { public TagException(String message) { super(message); } diff --git a/common/src/main/java/common/tags/TagIntArray.java b/common/src/main/java/common/tags/TagIntArray.java index cf7d34f..1ef8c82 100755 --- a/common/src/main/java/common/tags/TagIntArray.java +++ b/common/src/main/java/common/tags/TagIntArray.java @@ -17,8 +17,8 @@ class TagIntArray extends Tag { void write(DataOutput output) throws IOException { output.writeInt(this.data.length); - for(int i = 0; i < this.data.length; ++i) { - output.writeInt(this.data[i]); + for(int z = 0; z < this.data.length; z++) { + output.writeInt(this.data[z]); } } @@ -38,8 +38,10 @@ class TagIntArray extends Tag { public String toString() { StringBuilder sb = new StringBuilder("["); - for(int i : this.data) { - sb.append(i + ","); + for(int z = 0; z < this.data.length; z++) { + if(z != 0) + sb.append(','); + sb.append(this.data[z]); } return sb.append("]").toString(); } diff --git a/common/src/main/java/common/tags/TagInterpreter.java b/common/src/main/java/common/tags/TagInterpreter.java index abe0f1e..2ee5ac1 100755 --- a/common/src/main/java/common/tags/TagInterpreter.java +++ b/common/src/main/java/common/tags/TagInterpreter.java @@ -1,29 +1,28 @@ package common.tags; +import java.util.ArrayList; import java.util.Stack; import java.util.regex.Pattern; import common.collect.Lists; -public class TagInterpreter +class TagInterpreter { private static final Pattern PATTERN = Pattern.compile("\\[[-+\\d|,\\s]+\\]"); - public static TagObject parseTag(String jsonString) throws TagException + static TagObject parseTag(String tag) throws TagException { - jsonString = jsonString.trim(); - - if (!jsonString.startsWith("{")) + if (!tag.startsWith("{")) { throw new TagException("Invalid tag encountered, expected \'{\' as first char."); } - else if (func_150310_b(jsonString) != 1) + else if (func_150310_b(tag) != 1) { throw new TagException("Encountered multiple top tags, only one expected"); } else { - return (TagObject)func_150316_a("tag", jsonString).parse(); + return (TagObject)func_150316_a("tag", tag).parse(); } } @@ -144,7 +143,7 @@ public class TagInterpreter if (s.length() > 0) { boolean flag = true; - list.field_150492_b.add(func_179270_a(s, flag)); + list.data.add(func_179270_a(s, flag)); } if (p_150316_1_.length() < s.length() + 1) @@ -405,7 +404,7 @@ public class TagInterpreter static class List extends TagInterpreter.Any { - protected java.util.List field_150492_b = Lists.newArrayList(); + protected java.util.List data = Lists.newArrayList(); public List(String json) { @@ -415,24 +414,31 @@ public class TagInterpreter public Tag parse() throws TagException { TagList list = null; + java.util.List strs = null; - for (TagInterpreter.Any any : this.field_150492_b) + for (TagInterpreter.Any any : this.data) { Tag tag = any.parse(); - if(list == null) { - switch(tag.getType()) { - case STRING_LIST: - list = new TagStringList(); - case OBJECT_LIST: - list = new TagObjectList(); - default: - throw new TagException("Type cannot be put in a list: " + any.json); - } + if(tag.getType() == TagType.STRING) { + if(list != null) + throw new TagException("Cannot use mixed types for list: " + any.json); + if(strs == null) + strs = new ArrayList(this.data.size()); + strs.add(((TagString)tag).getString()); + } + else if(tag.getType() == TagType.OBJECT) { + if(strs != null) + throw new TagException("Cannot use mixed types for list: " + any.json); + if(list == null) + list = new TagList(new ArrayList(this.data.size())); + list.getList().add(((TagObject)tag)); + } + else { + throw new TagException("Type cannot be put in a list: " + any.json); } - list.addElem(tag); } - return list; + return strs != null ? new TagStringArray(strs.toArray(new String[strs.size()])) : (list != null ? list : new TagList(Lists.newArrayList())); } } diff --git a/common/src/main/java/common/tags/TagList.java b/common/src/main/java/common/tags/TagList.java old mode 100755 new mode 100644 index ffedf00..93d89da --- a/common/src/main/java/common/tags/TagList.java +++ b/common/src/main/java/common/tags/TagList.java @@ -6,11 +6,15 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import common.collect.Lists; -import common.log.Log; - -abstract class TagList extends Tag { - private List list = Lists.newArrayList(); +class TagList extends Tag { + private List list; + + TagList() { + } + + public TagList(List list) { + this.list = list; + } void write(DataOutput output) throws IOException { output.writeInt(this.list.size()); @@ -25,18 +29,17 @@ abstract class TagList extends Tag { throw new RuntimeException("Objekt ist zu komplex, die Tiefe ist größer als 512"); int len = input.readInt(); tracker.read(4 * len); - this.list = new ArrayList(len); + this.list = new ArrayList(len); for(int z = 0; z < len; z++) { - K tag = (K)this.getElemType().createTag(); + TagObject tag = new TagObject(); tag.read(input, depth + 1, tracker); this.list.add(tag); } } - protected abstract TagType getType(); - protected abstract TagType getElemType(); - protected abstract TagList createInstance(); - protected abstract K getDefault(); + protected TagType getType() { + return TagType.LIST; + } public String toString() { StringBuilder sb = new StringBuilder("["); @@ -48,38 +51,10 @@ abstract class TagList extends Tag { return sb.append(']').toString(); } - protected void addElem(K tag) { - this.list.add(tag); - } - - protected void set(int index, K tag) { - if(index < 0 || index >= this.list.size()) { - Log.IO.error("Index außerhalb des Bereiches um Tag in Tag-Liste zu setzen"); - return; - } - this.list.set(index, tag); - } - - public void remove(int index) { - this.list.remove(index); - } - - public boolean isEmpty() { - return this.list.isEmpty(); - } - - protected K getElem(int index) { - return index >= 0 && index < this.list.size() ? this.list.get(index) : this.getDefault(); - } - - public int size() { - return this.list.size(); - } - public Tag copy() { - TagList list = this.createInstance(); - for(K tag : this.list) { - list.list.add((K)tag.copy()); + TagList list = new TagList(new ArrayList(this.list.size())); + for(TagObject tag : this.list) { + list.list.add(tag.copy()); } return list; } @@ -91,4 +66,8 @@ abstract class TagList extends Tag { public int hashCode() { return super.hashCode() ^ this.list.hashCode(); } + + public List getList() { + return this.list; + } } diff --git a/common/src/main/java/common/tags/TagLoader.java b/common/src/main/java/common/tags/TagLoader.java deleted file mode 100755 index 77b2a34..0000000 --- a/common/src/main/java/common/tags/TagLoader.java +++ /dev/null @@ -1,52 +0,0 @@ -package common.tags; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.DataOutput; -import java.io.DataOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; - -/** - * compressed data tree / CDT loader - * (ids 0..15) - */ -public class TagLoader { - public static TagObject readGZip(File file) throws IOException { - DataInputStream in = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); - TagObject tag; - try { - tag = read(in, SizeTracker.INFINITE); - } - finally { - in.close(); - } - return tag; - } - - public static void writeGZip(TagObject tag, File file) throws IOException { - DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(file)))); - try { - write(tag, out); - } - finally { - out.close(); - } - } - - public static TagObject read(DataInput in, SizeTracker tracker) throws IOException { - TagObject tag = new TagObject(); - tag.read(in, 0, tracker); - return tag; - } - - public static void write(TagObject tag, DataOutput out) throws IOException { - tag.write(out); - } -} diff --git a/common/src/main/java/common/tags/TagObject.java b/common/src/main/java/common/tags/TagObject.java index afa3b73..c17085a 100755 --- a/common/src/main/java/common/tags/TagObject.java +++ b/common/src/main/java/common/tags/TagObject.java @@ -1,15 +1,30 @@ package common.tags; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.DataInput; +import java.io.DataInputStream; import java.io.DataOutput; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.util.List; import java.util.Map; import java.util.Map.Entry; +import common.collect.Lists; import common.collect.Maps; import java.util.Set; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; +/** + * compressed data tree / CDT + * (ids 0..15) + */ public class TagObject extends Tag { private Map tags = Maps.newHashMap(); @@ -41,7 +56,7 @@ public class TagObject extends Tag { } } - public Set getKeySet() { + public Set keySet() { return this.tags.keySet(); } @@ -49,7 +64,7 @@ public class TagObject extends Tag { return TagType.OBJECT; } - public void set(String key, Tag value) { + void set(String key, Tag value) { this.tags.put(key, value); } @@ -57,12 +72,12 @@ public class TagObject extends Tag { this.tags.put(key, value); } - public void setStringList(String key, TagStringList value) { - this.tags.put(key, value); + public void setStringArray(String key, String[] value) { + this.tags.put(key, new TagStringArray(value)); } - public void setObjectList(String key, TagObjectList value) { - this.tags.put(key, value); + public void setList(String key, List value) { + this.tags.put(key, new TagList(value)); } public void setBool(String key, boolean value) { @@ -109,7 +124,7 @@ public class TagObject extends Tag { this.tags.put(key, new TagIntArray(value)); } - public Tag get(String key) { + Tag get(String key) { return this.tags.get(key); } @@ -166,12 +181,12 @@ public class TagObject extends Tag { return this.has(key, TagType.OBJECT); } - public boolean hasStringList(String key) { - return this.has(key, TagType.STRING_LIST); + public boolean hasStringArray(String key) { + return this.has(key, TagType.STRING_ARRAY); } - public boolean hasObjectList(String key) { - return this.has(key, TagType.OBJECT_LIST); + public boolean hasList(String key) { + return this.has(key, TagType.LIST); } public boolean getBool(String key) { @@ -199,11 +214,11 @@ public class TagObject extends Tag { } public float getFloat(String key) { - return !this.has(key, TagType.FLOAT) ? 0.0F : ((TagFloat)this.tags.get(key)).getFloat(); + return !this.has(key, TagType.FLOAT) ? 0.0f : ((TagFloat)this.tags.get(key)).getFloat(); } public double getDouble(String key) { - return !this.has(key, TagType.DOUBLE) ? 0.0D : ((TagDouble)this.tags.get(key)).getDouble(); + return !this.has(key, TagType.DOUBLE) ? 0.0 : ((TagDouble)this.tags.get(key)).getDouble(); } public String getString(String key) { @@ -222,12 +237,12 @@ public class TagObject extends Tag { return !this.has(key, TagType.OBJECT) ? new TagObject() : (TagObject)this.tags.get(key); } - public TagStringList getStringList(String key) { - return !this.has(key, TagType.STRING_LIST) ? new TagStringList() : (TagStringList)this.tags.get(key); + public String[] getStringArray(String key) { + return !this.has(key, TagType.STRING_ARRAY) ? new String[0] : ((TagStringArray)this.tags.get(key)).getStringArray(); } - public TagObjectList getObjectList(String key) { - return !this.has(key, TagType.OBJECT_LIST) ? new TagObjectList() : (TagObjectList)this.tags.get(key); + public List getList(String key) { + return !this.has(key, TagType.LIST) ? Lists.newArrayList() : ((TagList)this.tags.get(key)).getList(); } public void remove(String key) { @@ -248,7 +263,7 @@ public class TagObject extends Tag { return this.tags.isEmpty(); } - public Tag copy() { + public TagObject copy() { TagObject tag = new TagObject(); for(String s : this.tags.keySet()) { tag.set(s, this.tags.get(s).copy()); @@ -286,4 +301,70 @@ public class TagObject extends Tag { } } } + + public static void write(TagObject tag, DataOutput out) throws IOException { + tag.write(out); + } + + public static TagObject read(DataInput in) throws IOException { + return read(in, SizeTracker.INFINITE); + } + + public static TagObject read(DataInput in, int limit) throws IOException { + return read(in, new SizeTracker(limit)); + } + + private static TagObject read(DataInput in, SizeTracker tracker) throws IOException { + TagObject tag = new TagObject(); + tag.read(in, 0, tracker); + return tag; + } + + public static void writeGZip(TagObject tag, File file) throws IOException { + DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(file)))); + try { + TagObject.write(tag, out); + } + finally { + out.close(); + } + } + + public static TagObject readGZip(File file) throws IOException { + DataInputStream in = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(file)))); + TagObject tag; + try { + tag = TagObject.read(in, SizeTracker.INFINITE); + } + finally { + in.close(); + } + return tag; + } + + public static boolean compare(TagObject tag1, TagObject tag2) { + return compareTags(tag1, tag2); + } + + private static boolean compareTags(Tag tag1, Tag tag2) { + if(tag1 == tag2 || tag1 == null) + return true; + else if(tag2 == null || !tag1.getClass().equals(tag2.getClass())) + return false; + else if(tag1 instanceof TagObject) { + TagObject comp1 = (TagObject)tag1; + TagObject comp2 = (TagObject)tag2; + for(String key : comp1.keySet()) { + Tag tag = comp1.get(key); + if(!compareTags(tag, comp2.get(key))) + return false; + } + return true; + } + return tag1.equals(tag2); + } + + public static TagObject parse(String tag) throws IllegalArgumentException { + return TagInterpreter.parseTag(tag.trim()); + } } diff --git a/common/src/main/java/common/tags/TagObjectList.java b/common/src/main/java/common/tags/TagObjectList.java deleted file mode 100644 index c4b5245..0000000 --- a/common/src/main/java/common/tags/TagObjectList.java +++ /dev/null @@ -1,27 +0,0 @@ -package common.tags; - -public class TagObjectList extends TagList { - protected TagType getType() { - return TagType.OBJECT_LIST; - } - - protected TagType getElemType() { - return TagType.OBJECT; - } - - protected TagList createInstance() { - return new TagObjectList(); - } - - protected TagObject getDefault() { - return new TagObject(); - } - - public TagObject get(int index) { - return this.getElem(index); - } - - public void add(TagObject value) { - this.addElem(value); - } -} diff --git a/common/src/main/java/common/tags/TagStringArray.java b/common/src/main/java/common/tags/TagStringArray.java new file mode 100644 index 0000000..7adb7d3 --- /dev/null +++ b/common/src/main/java/common/tags/TagStringArray.java @@ -0,0 +1,66 @@ +package common.tags; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.util.Arrays; + +class TagStringArray extends Tag { + private String[] data; + + TagStringArray() { + } + + public TagStringArray(String[] data) { + this.data = data; + } + + void write(DataOutput output) throws IOException { + output.writeInt(this.data.length); + for(int z = 0; z < this.data.length; z++) { + output.writeUTF(this.data[z]); + } + } + + void read(DataInput input, int depth, SizeTracker tracker) throws IOException { + tracker.read(24); + int len = input.readInt(); + this.data = new String[len]; + for(int z = 0; z < len; z++) { + this.data[z] = input.readUTF(); + tracker.read(2 * this.data[z].length()); + } + } + + protected TagType getType() { + return TagType.STRING_ARRAY; + } + + public String toString() { + StringBuilder sb = new StringBuilder("["); + for(int z = 0; z < this.data.length; z++) { + if(z != 0) + sb.append(','); + sb.append("\"" + this.data[z].replace("\"", "\\\"") + "\""); + } + return sb.append("]").toString(); + } + + public Tag copy() { + String[] data = new String[this.data.length]; + System.arraycopy(this.data, 0, data, 0, this.data.length); + return new TagStringArray(data); + } + + public boolean equals(Object other) { + return super.equals(other) && Arrays.equals(this.data, ((TagStringArray)other).data); + } + + public int hashCode() { + return super.hashCode() ^ Arrays.hashCode(this.data); + } + + public String[] getStringArray() { + return this.data; + } +} diff --git a/common/src/main/java/common/tags/TagStringList.java b/common/src/main/java/common/tags/TagStringList.java deleted file mode 100644 index 242fb1b..0000000 --- a/common/src/main/java/common/tags/TagStringList.java +++ /dev/null @@ -1,27 +0,0 @@ -package common.tags; - -public class TagStringList extends TagList { - protected TagType getType() { - return TagType.STRING_LIST; - } - - protected TagType getElemType() { - return TagType.STRING; - } - - protected TagList createInstance() { - return new TagStringList(); - } - - protected TagString getDefault() { - return new TagString(""); - } - - public String get(int index) { - return this.getElem(index).getString(); - } - - public void add(String value) { - this.addElem(new TagString(value)); - } -} diff --git a/common/src/main/java/common/tags/TagType.java b/common/src/main/java/common/tags/TagType.java index 239d0c3..e0a27d1 100644 --- a/common/src/main/java/common/tags/TagType.java +++ b/common/src/main/java/common/tags/TagType.java @@ -4,80 +4,80 @@ import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; -public enum TagType { +enum TagType { NULL { // 0 - public Tag createTag() { + protected Tag createTag() { return new TagNull(); } }, OBJECT { // 1 - public Tag createTag() { + protected Tag createTag() { return new TagObject(); } }, BOOLEAN { // 2 - public Tag createTag() { + protected Tag createTag() { return new TagBool(); } }, BYTE { // 3 - public Tag createTag() { + protected Tag createTag() { return new TagByte(); } }, SHORT { // 4 - public Tag createTag() { + protected Tag createTag() { return new TagShort(); } }, CHAR { // 5 - public Tag createTag() { + protected Tag createTag() { return new TagChar(); } }, INT { // 6 - public Tag createTag() { + protected Tag createTag() { return new TagInt(); } }, LONG { // 7 - public Tag createTag() { + protected Tag createTag() { return new TagLong(); } }, FLOAT { // 8 - public Tag createTag() { + protected Tag createTag() { return new TagFloat(); } }, DOUBLE { // 9 - public Tag createTag() { + protected Tag createTag() { return new TagDouble(); } }, STRING { // 10 - public Tag createTag() { + protected Tag createTag() { return new TagString(); } }, - OBJECT_LIST { // 11 - public Tag createTag() { - return new TagObjectList(); + LIST { // 11 + protected Tag createTag() { + return new TagList(); } }, BYTE_ARRAY { // 12 - public Tag createTag() { + protected Tag createTag() { return new TagByteArray(); } }, INT_ARRAY { // 13 - public Tag createTag() { + protected Tag createTag() { return new TagIntArray(); } }, - STRING_LIST { // 14 - public Tag createTag() { - return new TagStringList(); + STRING_ARRAY { // 14 + protected Tag createTag() { + return new TagStringArray(); } }; @@ -117,7 +117,7 @@ public enum TagType { this.id = (byte)this.ordinal(); } - public abstract Tag createTag(); + protected abstract Tag createTag(); public byte getId() { return this.id; diff --git a/common/src/main/java/common/tileentity/TileEntityBanner.java b/common/src/main/java/common/tileentity/TileEntityBanner.java index 1fc9211..6f09ac2 100755 --- a/common/src/main/java/common/tileentity/TileEntityBanner.java +++ b/common/src/main/java/common/tileentity/TileEntityBanner.java @@ -11,14 +11,13 @@ import common.item.ItemStack; import common.network.Packet; import common.packet.SPacketUpdateTileEntity; import common.tags.TagObject; -import common.tags.TagObjectList; public class TileEntityBanner extends TileEntity { private int baseColor; /** A list of all the banner patterns. */ - private TagObjectList patterns; + private List patterns; private boolean field_175119_g; private List patternList; private List colorList; @@ -36,9 +35,12 @@ public class TileEntityBanner extends TileEntity { TagObject nbttagcompound = stack.getTagCompound().getObject("BlockEntityTag"); - if (nbttagcompound.hasObjectList("Patterns")) + if (nbttagcompound.hasList("Patterns")) { - this.patterns = (TagObjectList)nbttagcompound.getObjectList("Patterns").copy(); + this.patterns = Lists.newArrayList(); + for(TagObject pattern : nbttagcompound.getList("Patterns")) { + this.patterns.add(pattern.copy()); + } } if (nbttagcompound.hasInt("Base")) @@ -67,13 +69,13 @@ public class TileEntityBanner extends TileEntity setBaseColorAndPatterns(compound, this.baseColor, this.patterns); } - public static void setBaseColorAndPatterns(TagObject compound, int baseColorIn, TagObjectList patternsIn) + public static void setBaseColorAndPatterns(TagObject compound, int baseColorIn, List patternsIn) { compound.setInt("Base", baseColorIn); if (patternsIn != null) { - compound.setObjectList("Patterns", patternsIn); + compound.setList("Patterns", patternsIn); } } @@ -81,7 +83,7 @@ public class TileEntityBanner extends TileEntity { super.readTags(compound); this.baseColor = compound.getInt("Base"); - this.patterns = compound.getObjectList("Patterns"); + this.patterns = compound.getList("Patterns"); this.patternList = null; this.colorList = null; this.patternResourceLocation = null; @@ -114,7 +116,7 @@ public class TileEntityBanner extends TileEntity public static int getPatterns(ItemStack stack) { TagObject nbttagcompound = stack.getSubCompound("BlockEntityTag", false); - return nbttagcompound != null && nbttagcompound.hasObjectList("Patterns") ? nbttagcompound.getObjectList("Patterns").size() : 0; + return nbttagcompound != null && nbttagcompound.hasList("Patterns") ? nbttagcompound.getList("Patterns").size() : 0; } public List getPatternList() @@ -123,7 +125,7 @@ public class TileEntityBanner extends TileEntity return this.patternList; } - public TagObjectList getPatterns() + public List getPatterns() { return this.patterns; } @@ -191,9 +193,9 @@ public class TileEntityBanner extends TileEntity { TagObject nbttagcompound = stack.getSubCompound("BlockEntityTag", false); - if (nbttagcompound != null && nbttagcompound.hasObjectList("Patterns")) + if (nbttagcompound != null && nbttagcompound.hasList("Patterns")) { - TagObjectList nbttaglist = nbttagcompound.getObjectList("Patterns"); + List nbttaglist = nbttagcompound.getList("Patterns"); if (nbttaglist.size() > 0) { diff --git a/common/src/main/java/common/tileentity/TileEntityBrewingStand.java b/common/src/main/java/common/tileentity/TileEntityBrewingStand.java index 97b3587..f883e9b 100755 --- a/common/src/main/java/common/tileentity/TileEntityBrewingStand.java +++ b/common/src/main/java/common/tileentity/TileEntityBrewingStand.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.List; import common.block.tech.BlockBrewingStand; +import common.collect.Lists; import common.entity.npc.EntityNPC; import common.init.Items; import common.inventory.Container; @@ -16,7 +17,6 @@ import common.item.ItemStack; import common.potion.PotionEffect; import common.potion.PotionHelper; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.Facing; import common.world.State; @@ -230,7 +230,7 @@ public class TileEntityBrewingStand extends TileEntityLockable implements ITicka public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.brewingItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.size(); ++i) @@ -256,7 +256,7 @@ public class TileEntityBrewingStand extends TileEntityLockable implements ITicka { super.writeTags(compound); compound.setShort("BrewTime", (short)this.brewTime); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.brewingItemStacks.length; ++i) { @@ -269,7 +269,7 @@ public class TileEntityBrewingStand extends TileEntityLockable implements ITicka } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); if (this.hasCustomName()) { diff --git a/common/src/main/java/common/tileentity/TileEntityChest.java b/common/src/main/java/common/tileentity/TileEntityChest.java index e999c68..2e5357c 100755 --- a/common/src/main/java/common/tileentity/TileEntityChest.java +++ b/common/src/main/java/common/tileentity/TileEntityChest.java @@ -2,6 +2,7 @@ package common.tileentity; import common.block.Block; import common.block.tech.BlockChest; +import common.collect.Lists; import common.entity.npc.EntityNPC; import common.init.SoundEvent; import common.inventory.Container; @@ -11,7 +12,7 @@ import common.inventory.InventoryLargeChest; import common.inventory.InventoryPlayer; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.BlockPos; import common.util.BoundingBox; import common.util.Facing; @@ -164,7 +165,7 @@ public class TileEntityChest extends TileEntityLockable implements ITickable, II public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.chestContents = new ItemStack[this.getSizeInventory()]; if (compound.hasString("CustomName")) @@ -187,7 +188,7 @@ public class TileEntityChest extends TileEntityLockable implements ITickable, II public void writeTags(TagObject compound) { super.writeTags(compound); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.chestContents.length; ++i) { @@ -200,7 +201,7 @@ public class TileEntityChest extends TileEntityLockable implements ITickable, II } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); if (this.hasCustomName()) { diff --git a/common/src/main/java/common/tileentity/TileEntityDispenser.java b/common/src/main/java/common/tileentity/TileEntityDispenser.java index fc13f2f..075f70e 100755 --- a/common/src/main/java/common/tileentity/TileEntityDispenser.java +++ b/common/src/main/java/common/tileentity/TileEntityDispenser.java @@ -1,5 +1,6 @@ package common.tileentity; +import common.collect.Lists; import common.entity.npc.EntityNPC; import common.inventory.Container; import common.inventory.ContainerDispenser; @@ -8,7 +9,7 @@ import common.inventory.InventoryPlayer; import common.item.ItemStack; import common.rng.Random; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; public class TileEntityDispenser extends TileEntityLockable implements IInventory { @@ -155,7 +156,7 @@ public class TileEntityDispenser extends TileEntityLockable implements IInventor public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.stacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.size(); ++i) @@ -178,7 +179,7 @@ public class TileEntityDispenser extends TileEntityLockable implements IInventor public void writeTags(TagObject compound) { super.writeTags(compound); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.stacks.length; ++i) { @@ -191,7 +192,7 @@ public class TileEntityDispenser extends TileEntityLockable implements IInventor } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); if (this.hasCustomName()) { diff --git a/common/src/main/java/common/tileentity/TileEntityFurnace.java b/common/src/main/java/common/tileentity/TileEntityFurnace.java index 4b39b12..519647c 100755 --- a/common/src/main/java/common/tileentity/TileEntityFurnace.java +++ b/common/src/main/java/common/tileentity/TileEntityFurnace.java @@ -5,6 +5,7 @@ import common.block.Material; import common.block.artificial.BlockSlab; import common.block.foliage.BlockSapling; import common.block.tech.BlockFurnace; +import common.collect.Lists; import common.entity.npc.EntityNPC; import common.init.Blocks; import common.init.Items; @@ -24,7 +25,7 @@ import common.item.ItemStack; import common.item.ItemSword; import common.item.ItemTool; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.ExtMath; import common.util.Facing; @@ -159,7 +160,7 @@ public class TileEntityFurnace extends TileEntityLockable implements ITickable, public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.furnaceItemStacks = new ItemStack[this.getSizeInventory()]; for (int i = 0; i < nbttaglist.size(); ++i) @@ -190,7 +191,7 @@ public class TileEntityFurnace extends TileEntityLockable implements ITickable, compound.setShort("BurnTime", (short)this.furnaceBurnTime); compound.setShort("CookTime", (short)this.cookTime); compound.setShort("CookTimeTotal", (short)this.totalCookTime); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.furnaceItemStacks.length; ++i) { @@ -203,7 +204,7 @@ public class TileEntityFurnace extends TileEntityLockable implements ITickable, } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); if (this.hasCustomName()) { diff --git a/common/src/main/java/common/tileentity/TileEntityHopper.java b/common/src/main/java/common/tileentity/TileEntityHopper.java index 7e9a5d3..ee88e6b 100755 --- a/common/src/main/java/common/tileentity/TileEntityHopper.java +++ b/common/src/main/java/common/tileentity/TileEntityHopper.java @@ -6,6 +6,7 @@ import java.util.function.Predicate; import common.block.Block; import common.block.tech.BlockChest; import common.block.tech.BlockHopper; +import common.collect.Lists; import common.entity.Entity; import common.entity.item.EntityItem; import common.entity.npc.EntityNPC; @@ -17,7 +18,6 @@ import common.inventory.ISidedInventory; import common.inventory.InventoryPlayer; import common.item.ItemStack; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.util.BoundingBox; import common.util.ExtMath; @@ -33,7 +33,7 @@ public class TileEntityHopper extends TileEntityLockable implements IHopper, ITi public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.inventory = new ItemStack[this.getSizeInventory()]; if (compound.hasString("CustomName")) @@ -58,7 +58,7 @@ public class TileEntityHopper extends TileEntityLockable implements IHopper, ITi public void writeTags(TagObject compound) { super.writeTags(compound); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for (int i = 0; i < this.inventory.length; ++i) { @@ -71,7 +71,7 @@ public class TileEntityHopper extends TileEntityLockable implements IHopper, ITi } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); compound.setInt("TransferCooldown", this.transferCooldown); if (this.hasCustomName()) diff --git a/common/src/main/java/common/tileentity/TileEntityMachine.java b/common/src/main/java/common/tileentity/TileEntityMachine.java index 2f90139..0878e42 100755 --- a/common/src/main/java/common/tileentity/TileEntityMachine.java +++ b/common/src/main/java/common/tileentity/TileEntityMachine.java @@ -1,5 +1,6 @@ package common.tileentity; +import common.collect.Lists; import common.color.TextColor; import common.entity.npc.EntityNPC; import common.inventory.Container; @@ -10,7 +11,7 @@ import common.network.Packet; import common.packet.SPacketUpdateTileEntity; import common.rng.Random; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.ExtMath; public abstract class TileEntityMachine extends TileEntityLockable implements IHopper, ITickable { @@ -82,7 +83,7 @@ public abstract class TileEntityMachine extends TileEntityLockable implements IH public void readTags(TagObject compound) { super.readTags(compound); - TagObjectList nbttaglist = compound.getObjectList("Items"); + List nbttaglist = compound.getList("Items"); this.clear(); for(int i = 0; i < nbttaglist.size(); ++i) { TagObject nbttagcompound = nbttaglist.get(i); @@ -93,7 +94,7 @@ public abstract class TileEntityMachine extends TileEntityLockable implements IH } } - nbttaglist = compound.getObjectList("Resources"); + nbttaglist = compound.getList("Resources"); for(MachineResource res : this.resources) { res.reset(); } @@ -109,7 +110,7 @@ public abstract class TileEntityMachine extends TileEntityLockable implements IH public void writeTags(TagObject compound) { super.writeTags(compound); - TagObjectList nbttaglist = new TagObjectList(); + List nbttaglist = Lists.newArrayList(); for(int i = 0; i < this.inventory.length; ++i) { if(this.inventory[i] != null) { TagObject nbttagcompound = new TagObject(); @@ -118,15 +119,15 @@ public abstract class TileEntityMachine extends TileEntityLockable implements IH nbttaglist.add(nbttagcompound); } } - compound.setObjectList("Items", nbttaglist); + compound.setList("Items", nbttaglist); - nbttaglist = new TagObjectList(); + nbttaglist = Lists.newArrayList(); for(int z = 0; z < this.resources.length; z++) { TagObject res = new TagObject(); this.resources[z].writeToNbt(res); nbttaglist.add(res); } - compound.setObjectList("Resources", nbttaglist); + compound.setList("Resources", nbttaglist); // compound.setBoolean("Creative", this.isCreative); compound.setInt("Temperature", this.temperature); diff --git a/common/src/main/java/common/village/MerchantRecipeList.java b/common/src/main/java/common/village/MerchantRecipeList.java index bb1958a..4cd0bc4 100755 --- a/common/src/main/java/common/village/MerchantRecipeList.java +++ b/common/src/main/java/common/village/MerchantRecipeList.java @@ -2,10 +2,10 @@ package common.village; import java.util.ArrayList; +import common.collect.Lists; import common.item.ItemStack; -import common.tags.Tag; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; public class MerchantRecipeList extends ArrayList { public MerchantRecipe canUse(ItemStack stack1, ItemStack stack2, int index) { @@ -33,36 +33,18 @@ public class MerchantRecipeList extends ArrayList { private static boolean areItemsSimilar(ItemStack stack1, ItemStack stack2) { return ItemStack.areItemsEqual(stack1, stack2) - && (!stack2.hasTagCompound() || stack1.hasTagCompound() && compareTags(stack2.getTagCompound(), stack1.getTagCompound())); - } - - private static boolean compareTags(Tag tag1, Tag tag2) { - if(tag1 == tag2 || tag1 == null) - return true; - else if(tag2 == null || !tag1.getClass().equals(tag2.getClass())) - return false; - else if(tag1 instanceof TagObject) { - TagObject comp1 = (TagObject)tag1; - TagObject comp2 = (TagObject)tag2; - for(String key : comp1.getKeySet()) { - Tag tag = comp1.get(key); - if(!compareTags(tag, comp2.get(key))) - return false; - } - return true; - } - return tag1.equals(tag2); + && (!stack2.hasTagCompound() || stack1.hasTagCompound() && TagObject.compare(stack2.getTagCompound(), stack1.getTagCompound())); } - public void fromTags(TagObjectList list) { + public void fromTags(List list) { this.clear(); for(int z = 0; z < list.size(); z++) { this.add(new MerchantRecipe(list.get(z))); } } - public TagObjectList toTags() { - TagObjectList list = new TagObjectList(); + public List toTags() { + List list = Lists.newArrayList(); for(int z = 0; z < this.size(); z++) { list.add(this.get(z).toTags()); } diff --git a/common/src/main/java/common/village/Village.java b/common/src/main/java/common/village/Village.java index bf9dee7..0e6f693 100755 --- a/common/src/main/java/common/village/Village.java +++ b/common/src/main/java/common/village/Village.java @@ -8,7 +8,6 @@ import common.block.Material; import common.block.artificial.BlockDoor; import common.collect.Lists; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.world.AWorldServer; @@ -214,7 +213,7 @@ public class Village this.radius = tag.getInt("Radius"); this.center = new BlockPos(tag.getInt("CX"), tag.getInt("CY"), tag.getInt("CZ")); this.doorRange = new BlockPos(tag.getInt("ACX"), tag.getInt("ACY"), tag.getInt("ACZ")); - TagObjectList doors = tag.getObjectList("Doors"); + List doors = tag.getList("Doors"); for (int i = 0; i < doors.size(); ++i) { @@ -233,7 +232,7 @@ public class Village tag.setInt("ACX", this.doorRange.getX()); tag.setInt("ACY", this.doorRange.getY()); tag.setInt("ACZ", this.doorRange.getZ()); - TagObjectList doors = new TagObjectList(); + List doors = Lists.newArrayList(); for (VillageDoorInfo info : this.doors) { @@ -247,6 +246,6 @@ public class Village doors.add(door); } - tag.setObjectList("Doors", doors); + tag.setList("Doors", doors); } } diff --git a/server/src/main/java/server/Server.java b/server/src/main/java/server/Server.java index e87c6ed..ac8a329 100755 --- a/server/src/main/java/server/Server.java +++ b/server/src/main/java/server/Server.java @@ -80,7 +80,6 @@ import common.packet.SPacketSkin; import common.packet.SPacketTimeUpdate; import common.packet.SPacketWorld; import common.potion.PotionEffect; -import common.tags.TagLoader; import common.tags.TagObject; import common.util.BlockPos; import common.util.EncryptUtil; @@ -186,7 +185,7 @@ public final class Server implements IThreadListener { File nfile = new File("server.cdt.tmp"); File lfile = new File("server.cdt"); try { - TagLoader.writeGZip(data, nfile); + TagObject.writeGZip(data, nfile); if(lfile.exists()) lfile.delete(); nfile.renameTo(lfile); @@ -204,9 +203,9 @@ public final class Server implements IThreadListener { file = new File("server.cdt.tmp"); if(file.exists()) { try { - TagObject tag = TagLoader.readGZip(file); + TagObject tag = TagObject.readGZip(file); TagObject cfg = tag.getObject("Config"); - for(String key : cfg.getKeySet()) { + for(String key : cfg.keySet()) { Config.set(key, cfg.getString(key), false); } UniverseRegistry.fromTags(tag.getObject("Universe")); @@ -297,7 +296,7 @@ public final class Server implements IThreadListener { File dat = new File(new File("players"), user + ".cdt"); if(dat.exists() && dat.isFile()) { - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } } catch(Exception e) { @@ -312,7 +311,7 @@ public final class Server implements IThreadListener { try { File tmp = new File(new File("players"), user + ".cdt.tmp"); File dat = new File(new File("players"), user + ".cdt"); - TagLoader.writeGZip(tag, tmp); + TagObject.writeGZip(tag, tmp); if(dat.exists()) { dat.delete(); } @@ -938,7 +937,7 @@ public final class Server implements IThreadListener { File dat = new File(new File("players"), user + ".cdt"); if(dat.exists() && dat.isFile()) { - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } } catch(Exception e) { @@ -963,7 +962,7 @@ public final class Server implements IThreadListener { conn.writeTags(tag); File tmp = new File(new File("players"), conn.getUser() + ".cdt.tmp"); File dat = new File(new File("players"), conn.getUser() + ".cdt"); - TagLoader.writeGZip(tag, tmp); + TagObject.writeGZip(tag, tmp); if(dat.exists()) { dat.delete(); } diff --git a/server/src/main/java/server/command/TagParser.java b/server/src/main/java/server/command/TagParser.java index cbfa795..c24522f 100644 --- a/server/src/main/java/server/command/TagParser.java +++ b/server/src/main/java/server/command/TagParser.java @@ -1,7 +1,5 @@ package server.command; -import common.tags.TagException; -import common.tags.TagInterpreter; import common.tags.TagObject; public class TagParser extends DefaultingParser { @@ -12,9 +10,9 @@ public class TagParser extends DefaultingParser { public TagObject parse(CommandEnvironment env, String input) { TagObject value; try { - value = TagInterpreter.parseTag(input); + value = TagObject.parse(input); } - catch(TagException e) { + catch(IllegalArgumentException e) { throw new RunException(e, "Ungültiger Tag '%s'", input); } return value; diff --git a/server/src/main/java/server/network/Player.java b/server/src/main/java/server/network/Player.java index 6f2596f..1c79ca3 100755 --- a/server/src/main/java/server/network/Player.java +++ b/server/src/main/java/server/network/Player.java @@ -102,7 +102,6 @@ import common.packet.SPacketMessage.Type; import common.potion.Potion; import common.potion.PotionEffect; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.IInteractionObject; import common.tileentity.ILockableContainer; import common.tileentity.TileEntity; @@ -621,7 +620,7 @@ public class Player extends NetHandler implements ICrafting, Executor, IPlayer if(tag.hasString("password")) this.password = tag.getString("password"); this.selected = tag.getInt("selected"); - TagObjectList list = tag.getObjectList("characters"); + List list = tag.getList("characters"); for(int z = 0; z < list.size(); z++) { this.characters.add(list.get(z)); } @@ -636,11 +635,11 @@ public class Player extends NetHandler implements ICrafting, Executor, IPlayer tag.setString("password", this.password); if(!this.characters.isEmpty()) { tag.setInt("selected", this.selected); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for(TagObject etag : this.characters) { list.add(etag); } - tag.setObjectList("characters", list); + tag.setList("characters", list); } } diff --git a/server/src/main/java/server/village/VillageCollection.java b/server/src/main/java/server/village/VillageCollection.java index 0111722..be459ab 100755 --- a/server/src/main/java/server/village/VillageCollection.java +++ b/server/src/main/java/server/village/VillageCollection.java @@ -8,7 +8,6 @@ import common.block.Material; import common.block.artificial.BlockDoor; import common.collect.Lists; import common.tags.TagObject; -import common.tags.TagObjectList; import common.util.BlockPos; import common.util.Facing; import common.village.Village; @@ -26,7 +25,7 @@ public class VillageCollection public VillageCollection(TagObject tag) { if(tag != null) { this.tickCounter = tag.getInt("Tick"); - TagObjectList list = tag.getObjectList("Villages"); + List list = tag.getList("Villages"); for (int i = 0; i < list.size(); ++i) { @@ -252,7 +251,7 @@ public class VillageCollection { TagObject tag = new TagObject(); tag.setInt("Tick", this.tickCounter); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for (Village village : this.villageList) { @@ -261,7 +260,7 @@ public class VillageCollection list.add(obj); } - tag.setObjectList("Villages", list); + tag.setList("Villages", list); this.dirty = false; return tag; } diff --git a/server/src/main/java/server/world/Converter.java b/server/src/main/java/server/world/Converter.java index b4e68c6..f236d30 100644 --- a/server/src/main/java/server/world/Converter.java +++ b/server/src/main/java/server/world/Converter.java @@ -68,9 +68,7 @@ import common.init.TileRegistry; import common.init.UniverseRegistry; import common.log.Log; import common.rng.Random; -import common.tags.TagLoader; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.TileEntity; import common.tileentity.TileEntityBanner; import common.tileentity.TileEntityBeacon; @@ -1009,7 +1007,7 @@ public abstract class Converter { byte[] olddata = tag.getByteArray("Data"); byte[] oldsky = tag.getByteArray("SkyLight"); byte[] oldlight = tag.getByteArray("BlockLight"); - TagObjectList sections = new TagObjectList(); + List sections = Lists.newArrayList(); for(int n = 0; n < 8; ++n) { boolean empty = true; for(int x = 0; x < 16 && empty; ++x) { @@ -1050,7 +1048,7 @@ public abstract class Converter { sections.add(section); } } - ntag.setObjectList("Sections", sections); + ntag.setList("Sections", sections); byte[] biomes = new byte[256]; Arrays.fill(biomes, (byte)(Biome.DEF_BIOME.id & 255)); ntag.setByteArray("Biomes", biomes); @@ -1063,7 +1061,7 @@ public abstract class Converter { ntag.setBool("LightPopulated", tag.getByte("LightPopulated") != 0); NbtTag[] ents = tag.getTagList("Entities"); - TagObjectList entities = new TagObjectList(); + List entities = Lists.newArrayList(); for(NbtTag ent : ents) { TagObject nent = new TagObject(); String mapped = ENTITY_MAP.get(trimColon(ent.getString("id"))); @@ -1088,10 +1086,10 @@ public abstract class Converter { entities.add(nent); } } - ntag.setObjectList("Entities", entities); + ntag.setList("Entities", entities); ents = tag.getTagList("TileEntities"); - entities = new TagObjectList(); + entities = Lists.newArrayList(); for(NbtTag ent : ents) { TagObject nent = new TagObject(); String mapped = TILE_MAP.get(trimColon(ent.getString("id"))); @@ -1104,10 +1102,10 @@ public abstract class Converter { entities.add(nent); } } - ntag.setObjectList("TileEntities", entities); + ntag.setList("TileEntities", entities); NbtTag[] sects = tag.getTagList("Sections"); - entities = new TagObjectList(); + entities = Lists.newArrayList(); for(NbtTag sect : sects) { TagObject nsect = new TagObject(); nsect.setInt("Y", sect.getByte("Y")); @@ -1151,7 +1149,7 @@ public abstract class Converter { nsect.setByteArray("Add", adddata.getData()); entities.add(nsect); } - ntag.setObjectList("Sections", entities); + ntag.setList("Sections", entities); return ntag; } @@ -1318,7 +1316,7 @@ public abstract class Converter { Log.IO.info("Speichere neue data.cdt ..."); File dataFile = new File(new File(new File("chunk"), "terra"), "data.cdt"); try { - TagLoader.writeGZip(dataTag, dataFile); + TagObject.writeGZip(dataTag, dataFile); } catch(Exception e) { Log.IO.error(e, "Konnte Weltdaten nicht speichern"); diff --git a/server/src/main/java/server/world/Region.java b/server/src/main/java/server/world/Region.java index 8bbf9c1..b2da029 100755 --- a/server/src/main/java/server/world/Region.java +++ b/server/src/main/java/server/world/Region.java @@ -25,10 +25,7 @@ import common.entity.Entity; import common.init.BlockRegistry; import common.init.EntityRegistry; import common.log.Log; -import common.tags.SizeTracker; -import common.tags.TagLoader; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.NextTickListEntry; @@ -276,7 +273,7 @@ public class Region { public void writeTag(int x, int z, TagObject tag) throws IOException { ChunkBuffer buf = new ChunkBuffer(); DataOutputStream out = new DataOutputStream(new DeflaterOutputStream(buf)); - TagLoader.write(tag, out); + TagObject.write(tag, out); out.close(); this.write(x, z, buf.getData(), buf.size()); } @@ -348,13 +345,13 @@ public class Region { byte[] data = getRegionFile(dir, x >> 3, z >> 3).read(x & 7, z & 7); if(data == null) return null; - return TagLoader.read(new DataInputStream(new BufferedInputStream(new InflaterInputStream(new ByteArrayInputStream(data)))), SizeTracker.INFINITE); + return TagObject.read(new DataInputStream(new BufferedInputStream(new InflaterInputStream(new ByteArrayInputStream(data))))); } public static /* synchronized */ void writeChunk(File dir, int x, int z, TagObject tag) throws IOException { ChunkBuffer buf = new ChunkBuffer(); DataOutputStream out = new DataOutputStream(new DeflaterOutputStream(buf)); - TagLoader.write(tag, out); + TagObject.write(tag, out); out.close(); getRegionFile(dir, x >> 3, z >> 3).write(x & 7, z & 7, buf.getData(), buf.size()); // getRegionFile(dir, x >> 3, z >> 3).writeTag(x & 7, z & 7, tag); @@ -366,7 +363,7 @@ public class Region { // return null; // } // tag = tag.getCompoundTag("Level"); - if(!tag.hasObjectList("Sections")) { + if(!tag.hasList("Sections")) { Log.IO.warn("Chunk-Datei bei " + x + "," + z + " hat keine Block-Daten, überspringe"); return null; } @@ -375,7 +372,7 @@ public class Region { chunk.setTerrainPopulated(tag.getBool("TerrainPopulated")); chunk.setLightPopulated(tag.getBool("LightPopulated")); chunk.setInhabited(tag.getLong("InhabitedTime")); - TagObjectList sects = tag.getObjectList("Sections"); + List sects = tag.getList("Sections"); BlockArray[] sections = new BlockArray[sects.size()]; boolean light = !world.dimension.hasNoLight(); @@ -413,7 +410,7 @@ public class Region { chunk.setBiomes(tag.getByteArray("Biomes")); } - TagObjectList entities = tag.getObjectList("Entities"); + List entities = tag.getList("Entities"); if(entities != null) { for(int n = 0; n < entities.size(); ++n) { @@ -439,7 +436,7 @@ public class Region { } } - TagObjectList tiles = tag.getObjectList("TileEntities"); + List tiles = tag.getList("TileEntities"); if(tiles != null) { for(int n = 0; n < tiles.size(); ++n) { @@ -452,8 +449,8 @@ public class Region { } } - if(tag.hasObjectList("TileTicks")) { - TagObjectList ticks = tag.getObjectList("TileTicks"); + if(tag.hasList("TileTicks")) { + List ticks = tag.getList("TileTicks"); if(ticks != null) { int invalid = 0; @@ -495,7 +492,7 @@ public class Region { tag.setBool("LightPopulated", chunk.isLightPopulated()); tag.setLong("InhabitedTime", chunk.getInhabited()); Set sections = chunk.getStorage(); - TagObjectList sects = new TagObjectList(); + List sects = Lists.newArrayList(); boolean light = !world.dimension.hasNoLight(); for(BlockArray storage : sections) { @@ -544,10 +541,10 @@ public class Region { } } - tag.setObjectList("Sections", sects); + tag.setList("Sections", sects); tag.setByteArray("Biomes", chunk.getBiomes()); chunk.setHasEntities(false); - TagObjectList entities = new TagObjectList(); + List entities = Lists.newArrayList(); for(int n = 0; n < chunk.getEntities().length; ++n) { for(Entity entity : chunk.getEntities()[n]) { @@ -560,8 +557,8 @@ public class Region { } } - tag.setObjectList("Entities", entities); - TagObjectList tiles = new TagObjectList(); + tag.setList("Entities", entities); + List tiles = Lists.newArrayList(); for(TileEntity tileentity : chunk.getTiles().values()) { TagObject tile = new TagObject(); @@ -569,12 +566,12 @@ public class Region { tiles.add(tile); } - tag.setObjectList("TileEntities", tiles); + tag.setList("TileEntities", tiles); List tics = world.getPendingBlockUpdates(chunk); if(tics != null) { long time = world.getTime(); - TagObjectList ticks = new TagObjectList(); + List ticks = Lists.newArrayList(); for(NextTickListEntry tic : tics) { TagObject tick = new TagObject(); @@ -588,7 +585,7 @@ public class Region { ticks.add(tick); } - tag.setObjectList("TileTicks", ticks); + tag.setList("TileTicks", ticks); } return tag; diff --git a/server/src/main/java/server/world/WorldServer.java b/server/src/main/java/server/world/WorldServer.java index 7f6860f..1580000 100755 --- a/server/src/main/java/server/world/WorldServer.java +++ b/server/src/main/java/server/world/WorldServer.java @@ -56,9 +56,7 @@ import common.packet.SPacketBlockChange; import common.packet.SPacketMultiBlockChange; import common.rng.Random; import common.rng.WeightedList; -import common.tags.TagLoader; import common.tags.TagObject; -import common.tags.TagObjectList; import common.tileentity.TileEntity; import common.util.BlockPos; import common.util.BoundingBox; @@ -301,7 +299,7 @@ public final class WorldServer extends AWorldServer { try { File dat = new File(this.chunkDir, "data.cdt"); if(dat.exists() && dat.isFile()) - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } catch(Exception e) { Log.IO.error(e, "Konnte Weltdaten nicht laden"); @@ -443,13 +441,13 @@ public final class WorldServer extends AWorldServer { try { File dat = new File(this.chunkDir, "loaders.cdt"); if(dat.exists() && dat.isFile()) - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } catch(Exception e) { Log.IO.error(e, "Konnte Ladeliste nicht laden"); } - if(tag != null && tag.hasObjectList("Loaders")) { - TagObjectList list = tag.getObjectList("Loaders"); + if(tag != null && tag.hasList("Loaders")) { + List list = tag.getList("Loaders"); for(int z = 0; z < list.size(); z++) { TagObject pos = list.get(z); this.addLoader(new BlockPos(pos.getInt("X"), pos.getInt("Y"), pos.getInt("Z"))); @@ -461,7 +459,7 @@ public final class WorldServer extends AWorldServer { try { File dat = new File(this.chunkDir, "villages.cdt"); if(dat.exists() && dat.isFile()) - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } catch(Exception e) { Log.IO.error(e, "Konnte Dorfliste nicht laden"); @@ -914,12 +912,12 @@ public final class WorldServer extends AWorldServer { try { File dat = new File(new File(new File("chunk"), dim.getDimensionName()), "loaders.cdt"); if(dat.exists() && dat.isFile()) - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } catch(Exception e) { return false; } - return tag != null && tag.hasObjectList("Loaders") && !tag.getObjectList("Loaders").isEmpty(); + return tag != null && tag.hasList("Loaders") && !tag.getList("Loaders").isEmpty(); } public static void loadWarps(Dimension dim, Map warps) { @@ -927,14 +925,14 @@ public final class WorldServer extends AWorldServer { try { File dat = new File(new File(new File("chunk"), dim.getDimensionName()), "warps.cdt"); if(dat.exists() && dat.isFile()) - tag = TagLoader.readGZip(dat); + tag = TagObject.readGZip(dat); } catch(Exception e) { Log.IO.error(e, "Konnte Warpliste nicht laden"); return; } - if(tag != null && tag.hasObjectList("Warps")) { - TagObjectList list = tag.getObjectList("Warps"); + if(tag != null && tag.hasList("Warps")) { + List list = tag.getList("Warps"); for(int z = 0; z < list.size(); z++) { TagObject pos = list.get(z); warps.put(pos.getString("Name"), new Position(pos.getDouble("X"), pos.getDouble("Y"), pos.getDouble("Z"), @@ -944,13 +942,13 @@ public final class WorldServer extends AWorldServer { } public static void saveWarps(Map warps) { - Map map = Maps.newHashMap(); + Map> map = Maps.newHashMap(); for(Entry pos : warps.entrySet()) { Dimension dim = UniverseRegistry.getDimension(pos.getValue().dim); if(dim != null) { - TagObjectList list = map.get(pos.getValue().dim); + List list = map.get(pos.getValue().dim); if(list == null) - map.put(pos.getValue().dim, list = new TagObjectList()); + map.put(pos.getValue().dim, list = Lists.newArrayList()); TagObject warp = new TagObject(); warp.setString("Name", pos.getKey()); warp.setDouble("X", pos.getValue().x); @@ -962,16 +960,16 @@ public final class WorldServer extends AWorldServer { } } for(Dimension dim : UniverseRegistry.getDimensions()) { - TagObjectList list = map.get(dim.getDimensionId()); + List list = map.get(dim.getDimensionId()); File file = new File(new File(new File("chunk"), dim.getDimensionName()), "warps.cdt"); if(list == null) { file.delete(); } else { TagObject tag = new TagObject(); - tag.setObjectList("Warps", list); + tag.setList("Warps", list); try { - TagLoader.writeGZip(tag, file); + TagObject.writeGZip(tag, file); } catch(Exception e) { Log.IO.error(e, "Konnte Warpliste nicht speichern"); @@ -1013,7 +1011,7 @@ public final class WorldServer extends AWorldServer { if(this.loadersModified) { this.loadersModified = false; TagObject loaders = new TagObject(); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for(BlockPos pos : this.loaderList) { TagObject loader = new TagObject(); loader.setInt("X", pos.getX()); @@ -1021,14 +1019,14 @@ public final class WorldServer extends AWorldServer { loader.setInt("Z", pos.getZ()); list.add(loader); } - loaders.setObjectList("Loaders", list); + loaders.setList("Loaders", list); File file = new File(this.chunkDir, "loaders.cdt"); if(list.isEmpty()) { file.delete(); } else { try { - TagLoader.writeGZip(loaders, file); + TagObject.writeGZip(loaders, file); } catch(Exception e) { Log.IO.error(e, "Konnte Ladeliste nicht speichern"); @@ -1049,7 +1047,7 @@ public final class WorldServer extends AWorldServer { // ... File file = new File(this.chunkDir, "data.cdt"); try { - TagLoader.writeGZip(data, file); + TagObject.writeGZip(data, file); } catch(Exception e) { Log.IO.error(e, "Konnte Weltdaten nicht speichern"); @@ -1066,7 +1064,7 @@ public final class WorldServer extends AWorldServer { TagObject tag = this.villageStorage.toTags(); File dat = new File(this.chunkDir, "villages.cdt"); try { - TagLoader.writeGZip(tag, dat); + TagObject.writeGZip(tag, dat); } catch(Exception e) { Log.IO.error(e, "Konnte Dorfliste nicht speichern"); @@ -2459,7 +2457,7 @@ public final class WorldServer extends AWorldServer { try { File file = this.getSaveFile(id); if(file.exists()) { - data = new WorldSavedData(id, TagLoader.readGZip(file)); + data = new WorldSavedData(id, TagObject.readGZip(file)); } } catch(Exception e) { @@ -2483,7 +2481,7 @@ public final class WorldServer extends AWorldServer { private void saveData(WorldSavedData data) { try { File file = this.getSaveFile(data.id); - TagLoader.writeGZip(data.tag, file); + TagObject.writeGZip(data.tag, file); } catch(Exception e) { e.printStackTrace(); diff --git a/server/src/main/java/server/worldgen/structure/MapGenStructure.java b/server/src/main/java/server/worldgen/structure/MapGenStructure.java index 78824d3..5f6c0d5 100755 --- a/server/src/main/java/server/worldgen/structure/MapGenStructure.java +++ b/server/src/main/java/server/worldgen/structure/MapGenStructure.java @@ -5,7 +5,6 @@ import java.util.Map; import common.collect.Maps; import common.rng.Random; -import common.tags.Tag; import common.tags.TagObject; import common.util.BlockPos; import common.util.ChunkPos; @@ -205,13 +204,11 @@ public abstract class MapGenStructure extends MapGenBase { TagObject tag = this.structureData.tag; - for (String s : tag.getKeySet()) + for (String s : tag.keySet()) { - Tag sub = tag.get(s); - - if (sub instanceof TagObject) + if (tag.hasObject(s)) { - TagObject start = (TagObject)sub; + TagObject start = tag.getObject(s); if (start.hasInt("ChunkX") && start.hasInt("ChunkZ")) { diff --git a/server/src/main/java/server/worldgen/structure/StructureStart.java b/server/src/main/java/server/worldgen/structure/StructureStart.java index 9bfa360..ecb455d 100755 --- a/server/src/main/java/server/worldgen/structure/StructureStart.java +++ b/server/src/main/java/server/worldgen/structure/StructureStart.java @@ -3,9 +3,10 @@ package server.worldgen.structure; import java.util.Iterator; import java.util.LinkedList; +import common.collect.Lists; import common.rng.Random; import common.tags.TagObject; -import common.tags.TagObjectList; +import java.util.List; import common.util.ChunkPos; import server.world.WorldServer; @@ -74,14 +75,14 @@ public abstract class StructureStart tag.setInt("ChunkX", chunkX); tag.setInt("ChunkZ", chunkZ); tag.setIntArray("BB", this.boundingBox.toIntArray()); - TagObjectList list = new TagObjectList(); + List list = Lists.newArrayList(); for (StructureComponent comp : this.components) { list.add(comp.writeBase()); } - tag.setObjectList("Children", list); + tag.setList("Children", list); this.writeTags(tag); return tag; } @@ -100,7 +101,7 @@ public abstract class StructureStart this.boundingBox = new StructureBoundingBox(tag.getIntArray("BB")); } - TagObjectList list = tag.getObjectList("Children"); + List list = tag.getList("Children"); for (int i = 0; i < list.size(); ++i) {