package com.bioxx.tfc2.networking.server; import io.netty.buffer.ByteBuf; import net.minecraft.util.IThreadListener; 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 com.bioxx.jmapgen.IslandMap; import com.bioxx.tfc2.TFC; import com.bioxx.tfc2.networking.client.CMapPacket; import com.bioxx.tfc2.world.WorldGen; public class SMapRequestPacket implements IMessage { public int islandX; public int islandZ; public SMapRequestPacket() { } public SMapRequestPacket(int iX, int iZ) { islandX = iX; islandZ = iZ; } @Override public void toBytes(ByteBuf buffer) { buffer.writeInt(islandX); buffer.writeInt(islandZ); } @Override public void fromBytes(ByteBuf buffer) { this.islandX = buffer.readInt(); this.islandZ = buffer.readInt(); } public static class Handler implements IMessageHandler<SMapRequestPacket, IMessage> { @Override public IMessage onMessage(final SMapRequestPacket message, final MessageContext ctx) { IThreadListener mainThread = (WorldServer) ctx.getServerHandler().playerEntity.worldObj; // or Minecraft.getMinecraft() on the client mainThread.addScheduledTask(new Runnable() { @Override public void run() { int j; IslandMap map = WorldGen.getInstance().getIslandMap(message.islandX, message.islandZ); TFC.network.sendTo(new CMapPacket(message.islandX, message.islandZ, map.seed), ctx.getServerHandler().playerEntity); } }); return null; // no response in this case } } }