package com.team.futurecraft.network;
import com.team.futurecraft.world.TeleportHandler;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.WorldServer;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
import net.minecraftforge.fml.relauncher.Side;
/**
* Handles teleport messages being sent to the server. And sends a big fat null to clients.
*
* @author Joseph
*/
public class TeleportMessageHandler implements IMessageHandler<TeleportMessage, IMessage>
{
public IMessage onMessage(final TeleportMessage message, MessageContext ctx) {
if (ctx.side != Side.SERVER) {
System.err.println("TeleportMessage received on wrong side:" + ctx.side);
return null;
}
final EntityPlayerMP sendingPlayer = ctx.getServerHandler().playerEntity;
if (sendingPlayer == null) {
System.err.println("EntityPlayerMP was null when TeleportMessage was received");
return null;
}
final WorldServer playerWorldServer = sendingPlayer.getServerForPlayer();
playerWorldServer.addScheduledTask(new Runnable() {
public void run() {
processMessage(message, sendingPlayer);
}
});
return null;
}
void processMessage(TeleportMessage message, EntityPlayerMP player)
{
int dim = message.getDimension();
if (player.dimension == dim) System.out.println("attempted to teleport in a dimension that you ar allready in!");
else {
MinecraftServer mServer = MinecraftServer.getServer();
player.mcServer.getConfigurationManager().transferPlayerToDimension(player, dim, new TeleportHandler(mServer.worldServerForDimension(dim)));
}
}
}