package com.pixelutilitys.networking.networkMessages;
import com.pixelutilitys.networking.PacketHandler;
import com.pixelutilitys.tileentitys.TileEntityRadio;
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 cpw.mods.fml.relauncher.Side;
import io.netty.buffer.ByteBuf;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
public class MessageTileEntityRadio implements IMessage {
public int x, y, z;
public boolean playing = false;
public String url = "http://www.youtube.com/watch?v=4M6qAMMqFhI&hd=1";
public MessageTileEntityRadio() {
}
public MessageTileEntityRadio(int x, int y, int z, boolean playing, String url) {
this.x = x;
this.y = y;
this.z = z;
this.playing = playing;
this.url = url;
}
public MessageTileEntityRadio(TileEntityRadio radio) {
this.x = radio.xCoord;
this.y = radio.yCoord;
this.z = radio.zCoord;
this.url = radio.streamURL;
}
@Override
public void fromBytes(ByteBuf buf) {
this.x = buf.readInt();
this.y = buf.readInt();
this.z = buf.readInt();
this.playing = buf.readBoolean();
int streamLength = buf.readInt();
if (streamLength > 0)
this.url = new String(buf.readBytes(streamLength).array());
}
@Override
public void toBytes(ByteBuf buf) {
buf.writeInt(this.x);
buf.writeInt(this.y);
buf.writeInt(this.z);
buf.writeBoolean(playing);
int urlLength = this.url.length();
buf.writeInt(urlLength);
if (urlLength > 0)
buf.writeBytes(this.url.getBytes());
}
public static class Handler implements IMessageHandler<MessageTileEntityRadio, IMessage> {
@Override
public IMessage onMessage (MessageTileEntityRadio message, MessageContext context){
if (context.side == Side.SERVER) {
PacketHandler.INSTANCE.sendToAll(message);
}
TileEntity te = null;
if (context.side == Side.SERVER) {
EntityPlayerMP p = context.getServerHandler().playerEntity;
te = MinecraftServer.getServer().worldServerForDimension(p.dimension).getTileEntity(message.x, message.y, message.z);
}
if (context.side == Side.CLIENT) {
te = Minecraft.getMinecraft().theWorld.getTileEntity(message.x, message.y, message.z);
}
if (te == null) {
System.out.println("te is null D:");
System.out.println("te should be at " + message.x + " " + message.y + " " + message.z);
}
if (te instanceof TileEntityRadio) {
TileEntityRadio r = (TileEntityRadio) te;
r.streamURL = message.url;
if (context.side == Side.CLIENT)
if (message.playing && !r.isPlaying()) {
r.startStream();
} else {
r.stopStream();
}
}
return null;
}
}
}