package mcjty.rftools.items.teleportprobe;
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 mcjty.lib.varia.Coordinate;
import mcjty.rftools.blocks.teleporter.TeleportDestination;
import mcjty.rftools.blocks.teleporter.TeleportDestinationClientInfo;
import mcjty.rftools.blocks.teleporter.TeleportDestinations;
import mcjty.rftools.dimension.RfToolsDimensionManager;
import mcjty.rftools.dimension.description.DimensionDescriptor;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraftforge.common.DimensionManager;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class PacketGetAllReceivers implements IMessage, IMessageHandler<PacketGetAllReceivers, PacketAllReceiversReady> {
@Override
public void fromBytes(ByteBuf buf) {
}
@Override
public void toBytes(ByteBuf buf) {
}
public PacketGetAllReceivers() {
}
@Override
public PacketAllReceiversReady onMessage(PacketGetAllReceivers message, MessageContext ctx) {
EntityPlayer player = ctx.getServerHandler().playerEntity;
TeleportDestinations destinations = TeleportDestinations.getDestinations(player.worldObj);
List<TeleportDestinationClientInfo> destinationList = new ArrayList<TeleportDestinationClientInfo> (destinations.getValidDestinations(player.worldObj, null));
addDimensions(destinationList);
addRfToolsDimensions(player.worldObj, destinationList);
return new PacketAllReceiversReady(destinationList);
}
private void addDimensions(List<TeleportDestinationClientInfo> destinationList) {
WorldServer[] worlds = DimensionManager.getWorlds();
for (WorldServer world : worlds) {
int id = world.provider.dimensionId;
TeleportDestination destination = new TeleportDestination(new Coordinate(0, 70, 0), id);
destination.setName("Dimension: " + id);
TeleportDestinationClientInfo teleportDestinationClientInfo = new TeleportDestinationClientInfo(destination);
String dimName = world.provider.getDimensionName();
teleportDestinationClientInfo.setDimensionName(dimName);
destinationList.add(teleportDestinationClientInfo);
}
}
private void addRfToolsDimensions(World world, List<TeleportDestinationClientInfo> destinationList) {
RfToolsDimensionManager dimensionManager = RfToolsDimensionManager.getDimensionManager(world);
for (Map.Entry<Integer,DimensionDescriptor> me : dimensionManager.getDimensions().entrySet()) {
int id = me.getKey();
TeleportDestination destination = new TeleportDestination(new Coordinate(0, 70, 0), id);
destination.setName("RfTools Dim: " + id);
TeleportDestinationClientInfo teleportDestinationClientInfo = new TeleportDestinationClientInfo(destination);
destinationList.add(teleportDestinationClientInfo);
}
}
}