package com.dynious.biota.network.message; import com.dynious.biota.biosystem.BioSystem; import com.dynious.biota.biosystem.ClientBioSystem; import com.dynious.biota.biosystem.ClientBioSystemHandler; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.world.chunk.Chunk; public class MessageBioSystemUpdate implements IMessage, IMessageHandler<MessageBioSystemUpdate, IMessage> { int dimensionId, x, z; float phosphorus, potassium, nitrogen; public MessageBioSystemUpdate() { } public MessageBioSystemUpdate(BioSystem bioSystem) { Chunk chunk = bioSystem.chunkReference.get(); if (chunk != null) { dimensionId = chunk.worldObj.provider.dimensionId; x = chunk.xPosition; z = chunk.zPosition; phosphorus = bioSystem.getPhosphorus(); potassium = bioSystem.getPotassium(); nitrogen = bioSystem.getNitrogen(); } } @Override public void fromBytes(ByteBuf buf) { dimensionId = buf.readInt(); x = buf.readInt(); z = buf.readInt(); phosphorus = buf.readFloat(); potassium = buf.readFloat(); nitrogen = buf.readFloat(); } @Override public void toBytes(ByteBuf buf) { buf.writeInt(dimensionId); buf.writeInt(x); buf.writeInt(z); buf.writeFloat(phosphorus); buf.writeFloat(potassium); buf.writeFloat(nitrogen); } @Override public IMessage onMessage(MessageBioSystemUpdate message, MessageContext ctx) { //World world = DimensionManager.getWorld(message.dimensionId); Chunk chunk = Minecraft.getMinecraft().theWorld.getChunkFromChunkCoords(message.x, message.z); ClientBioSystem bioSystem = new ClientBioSystem(message.phosphorus, message.potassium, message.nitrogen); ClientBioSystemHandler.bioSystemMap.put(chunk, bioSystem); //Re-render whole chunk to update colors Minecraft.getMinecraft().theWorld.markBlockRangeForRenderUpdate((message.x << 4) + 1, 0, (message.z << 4) + 1, (message.x << 4) + 14, 256, (message.z << 4) + 14); return null; } }