package minefantasy.mf2.block.tileentity;
import java.util.List;
import java.util.Random;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import minefantasy.mf2.network.packet.RoadPacket;
import minefantasy.mf2.util.MFLogUtil;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.WorldServer;
public class TileEntityRoad extends TileEntity
{
public int[] surface = new int[2];
private int ticksExisted;
private Random rand = new Random();
public TileEntityRoad()
{
}
@Override
public void updateEntity()
{
super.updateEntity();
if(!worldObj.isRemote)
{
++ticksExisted;
if(ticksExisted % 20 == 0)
{
sendPacketToClients();
}
}
}
public void setSurface(Block id, int meta)
{
if(worldObj == null)
{
return;
}
if(id == Blocks.grass)
{
id = Blocks.dirt;
}
worldObj.playSoundEffect(xCoord, yCoord, zCoord, "dig.grass", 0.5F, 1.0F);
surface[0] = Block.getIdFromBlock(id);
surface[1] = meta;
refresh();
sendPacketToClients();
}
public void sendPacketToClients()
{
if(worldObj.isRemote)return;
List<EntityPlayer> players = ((WorldServer)worldObj).playerEntities;
for(int i = 0; i < players.size(); i++)
{
EntityPlayer player = players.get(i);
((WorldServer)worldObj).getEntityTracker().func_151248_b(player, new RoadPacket(this).generatePacket());
}
}
private boolean blockChange(int id, int meta)
{
if(id != surface[0])return true;
if(meta != surface[1])return true;
return false;
}
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
nbt.setIntArray("surface", surface);
}
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
surface = nbt.getIntArray("surface");
}
public int[] getSurface()
{
return surface;
}
public boolean canBuild()
{
if(worldObj == null)
{
return false;
}
return true;
}
public void refresh()
{
worldObj.scheduleBlockUpdate(xCoord, yCoord, zCoord, worldObj.getBlock(xCoord, yCoord, zCoord), 2);
}
}