@Override public void writeCustomNBT(NBTTagCompound nbtRoot) { NBTTagList conduitTags = new NBTTagList(); for (IConduit conduit : conduits) { NBTTagCompound conduitRoot = new NBTTagCompound(); ConduitUtil.writeToNBT(conduit, conduitRoot); conduitTags.appendTag(conduitRoot); } nbtRoot.setTag("conduits", conduitTags); if (facadeId != null) { nbtRoot.setString("facadeId", Block.blockRegistry.getNameForObject(facadeId)); nbtRoot.setString("facadeType", facadeType.name()); } else { nbtRoot.setString("facadeId", "null"); } nbtRoot.setInteger("facadeMeta", facadeMeta); nbtRoot.setShort("nbtVersion", NBT_VERSION); if (MicroblocksUtil.supportMicroblocks()) { writeMicroblocksToNBT(nbtRoot); } }
@Override public void readCustomNBT(NBTTagCompound nbtRoot) { short nbtVersion = nbtRoot.getShort("nbtVersion"); conduits.clear(); cachedCollidables.clear(); NBTTagList conduitTags = (NBTTagList) nbtRoot.getTag("conduits"); if (conduitTags != null) { for (int i = 0; i < conduitTags.tagCount(); i++) { NBTTagCompound conduitTag = conduitTags.getCompoundTagAt(i); IConduit conduit = ConduitUtil.readConduitFromNBT(conduitTag, nbtVersion); if (conduit != null) { conduit.setBundle(this); conduits.add(conduit); } } } String fs = nbtRoot.getString("facadeId"); if (fs == null || "null".equals(fs)) { facadeId = null; facadeType = FacadeType.BASIC; } else { facadeId = Block.getBlockFromName(fs); if (nbtRoot.hasKey("facadeType")) { // backwards compat, never true in freshly placed bundles facadeType = FacadeType.valueOf(nbtRoot.getString("facadeType")); } } facadeMeta = nbtRoot.getInteger("facadeMeta"); if (worldObj != null && worldObj.isRemote) { clientUpdated = true; } if (MicroblocksUtil.supportMicroblocks()) { readMicroblocksFromNBT(nbtRoot); } }
private void initMicroblocks() { if (MicroblocksUtil.supportMicroblocks()) { createCovers(); } }