/*
* Copyright (c) CovertJaguar, 2014 http://railcraft.info
*
* This code is the property of CovertJaguar
* and may only be used with explicit written
* permission unless otherwise specified on the
* license page at http://railcraft.info/wiki/info:license.
*/
package mods.railcraft.common.util.network;
import net.minecraft.world.WorldServer;
import mods.railcraft.api.signals.AbstractPair;
import mods.railcraft.api.signals.ISignalPacketBuilder;
import mods.railcraft.common.blocks.RailcraftTileEntity;
import mods.railcraft.common.util.network.PacketKeyPress.EnumKeyBinding;
import net.minecraft.entity.player.EntityPlayerMP;
/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class PacketBuilder implements ISignalPacketBuilder {
private static PacketBuilder instance;
public static PacketBuilder instance() {
if (instance == null)
instance = new PacketBuilder();
return instance;
}
private PacketBuilder() {
}
public void sendTileEntityPacket(RailcraftTileEntity tile) {
if (tile.getWorldObj() instanceof WorldServer) {
WorldServer world = (WorldServer) tile.getWorldObj();
PacketTileEntity pkt = new PacketTileEntity(tile);
PacketDispatcher.sendToWatchers(pkt, world, tile.xCoord, tile.zCoord);
}
}
@Override
public void sendPairPacketUpdate(AbstractPair pairing) {
PacketPairUpdate pkt = new PacketPairUpdate(pairing);
PacketDispatcher.sendToDimension(pkt, pairing.getTile().getWorldObj().provider.dimensionId);
}
@Override
public void sendPairPacketRequest(AbstractPair pairing) {
PacketPairRequest pkt = new PacketPairRequest(pairing);
PacketDispatcher.sendToServer(pkt);
}
public void sendGuiReturnPacket(IGuiReturnHandler handler) {
PacketGuiReturn pkt = new PacketGuiReturn(handler);
PacketDispatcher.sendToServer(pkt);
}
public void sendGuiReturnPacket(IGuiReturnHandler handler, byte[] extraData) {
PacketGuiReturn pkt = new PacketGuiReturn(handler, extraData);
PacketDispatcher.sendToServer(pkt);
}
public void sendKeyPressPacket(EnumKeyBinding keyPress) {
PacketKeyPress pkt = new PacketKeyPress(keyPress);
PacketDispatcher.sendToServer(pkt);
}
public void sendGuiIntegerPacket(EntityPlayerMP player, int windowId, int key, int value) {
PacketGuiInteger pkt = new PacketGuiInteger(windowId, key, value);
PacketDispatcher.sendToPlayer(pkt, player);
}
public void sendGuiStringPacket(EntityPlayerMP player, int windowId, int key, String value) {
PacketGuiString pkt = new PacketGuiString(windowId, key, value);
PacketDispatcher.sendToPlayer(pkt, player);
}
public void sendGuiWidgetPacket(EntityPlayerMP player, int windowId, int widgetId, byte[] data) {
PacketGuiWidget pkt = new PacketGuiWidget(windowId, widgetId, data);
PacketDispatcher.sendToPlayer(pkt, player);
}
public void sendGoldenTicketGuiPacket(EntityPlayerMP player) {
PacketTicketGui pkt = new PacketTicketGui();
PacketDispatcher.sendToPlayer(pkt, player);
}
}