package com.amadornes.framez.movement.data; import net.minecraft.block.ITileEntityProvider; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import com.amadornes.framez.api.movement.IMovementDataProvider; import com.amadornes.framez.api.movement.IMovingBlock; import com.amadornes.framez.movement.MovingBlock; import com.amadornes.framez.world.FakeWorld; import cpw.mods.fml.common.registry.GameData; public class MovementDataProviderDefault implements IMovementDataProvider { @Override public String getID() { return "default"; } @Override public boolean canHandle(IMovingBlock block) { return true; } @Override public void writeMovementInfo(IMovingBlock block, NBTTagCompound tag) { tag.setString("block", GameData.getBlockRegistry().getNameForObject(block.getBlock())); tag.setInteger("metadata", block.getMetadata()); NBTTagCompound t = null; if (block.getTileEntity() != null) block.getTileEntity().writeToNBT(t = new NBTTagCompound()); if (t != null) tag.setTag("data", t); } @Override public void readMovementInfo(IMovingBlock block, NBTTagCompound tag) { block.setBlock(GameData.getBlockRegistry().getObject(tag.getString("block"))); block.setMetadata(tag.getInteger("metadata")); TileEntity te = block.getTileEntity(); if (tag.hasKey("data") && (te != null || block.getBlock() instanceof ITileEntityProvider)) { if (te == null) { te = ((ITileEntityProvider) block.getBlock()).createNewTileEntity(FakeWorld.getFakeWorld((MovingBlock) block), block.getMetadata()); System.out.println("creating!"); } if (te != null) { te.readFromNBT(tag.getCompoundTag("data")); block.setTileEntity(te); } } ((MovingBlock) block).setRenderList(-1); } }