Files
ForestryMC/src/main/java/forestry/mail/PacketHandlerMail.java
T

118 lines
3.8 KiB
Java
Raw Normal View History

2014-05-02 21:31:20 +02:00
/*******************************************************************************
2014-08-07 08:29:25 +02:00
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
2014-08-07 02:56:58 -07:00
* http://www.gnu.org/licenses/lgpl-3.0.txt
2014-05-02 21:31:20 +02:00
*
2014-08-07 08:29:25 +02:00
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
2014-05-02 21:31:20 +02:00
******************************************************************************/
package forestry.mail;
import java.io.DataInputStream;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import forestry.core.interfaces.IPacketHandler;
import forestry.core.network.PacketIds;
import forestry.core.network.PacketUpdate;
import forestry.core.proxy.Proxies;
import forestry.mail.gui.ContainerCatalogue;
import forestry.mail.gui.ContainerLetter;
import forestry.mail.gui.ContainerTradeName;
import forestry.mail.network.PacketPOBoxInfo;
2014-09-10 03:43:16 -07:00
import forestry.mail.network.PacketLetterInfo;
2014-05-02 21:31:20 +02:00
import forestry.plugins.PluginMail;
public class PacketHandlerMail implements IPacketHandler {
@Override
public void onPacketData(int packetID, DataInputStream data, EntityPlayer player) {
try {
PacketUpdate packet;
switch (packetID) {
2014-09-10 03:43:16 -07:00
case PacketIds.LETTER_INFO:
PacketLetterInfo packetT = new PacketLetterInfo();
2014-05-02 21:31:20 +02:00
packetT.readData(data);
2014-09-10 03:43:16 -07:00
onLetterInfo(packetT);
2014-05-02 21:31:20 +02:00
break;
case PacketIds.POBOX_INFO:
PacketPOBoxInfo packetP = new PacketPOBoxInfo();
packetP.readData(data);
onPOBoxInfo(packetP);
break;
case PacketIds.LETTER_RECIPIENT:
packet = new PacketUpdate();
packet.readData(data);
onLetterRecipient(player, packet);
break;
case PacketIds.LETTER_TEXT:
packet = new PacketUpdate();
packet.readData(data);
onLetterText(player, packet);
break;
2014-08-13 23:44:36 -07:00
case PacketIds.TRADING_ADDRESS_SET:
2014-05-02 21:31:20 +02:00
packet = new PacketUpdate();
packet.readData(data);
2014-08-13 23:44:36 -07:00
onAddressSet(player, packet);
2014-05-02 21:31:20 +02:00
break;
case PacketIds.POBOX_INFO_REQUEST:
onPOBoxInfoRequest(player);
break;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
2014-09-10 03:43:16 -07:00
private void onLetterInfo(PacketLetterInfo packet) {
2014-05-02 21:31:20 +02:00
Container container = Proxies.common.getClientInstance().thePlayer.openContainer;
if (container instanceof ContainerLetter) {
2014-09-10 03:43:16 -07:00
((ContainerLetter) container).handleLetterInfoUpdate(packet);
2014-05-02 21:31:20 +02:00
} else if(container instanceof ContainerCatalogue) {
((ContainerCatalogue) container).handleTradeInfoUpdate(packet);
}
}
private void onPOBoxInfo(PacketPOBoxInfo packet) {
2014-08-11 00:31:08 -07:00
MailAddress address = new MailAddress(Proxies.common.getClientInstance().thePlayer.getGameProfile());
PluginMail.proxy.setPOBoxInfo(Proxies.common.getRenderWorld(), address, packet.poboxInfo);
2014-05-02 21:31:20 +02:00
}
2014-08-13 23:44:36 -07:00
private void onAddressSet(EntityPlayer player, PacketUpdate packet) {
2014-05-02 21:31:20 +02:00
if (!(player.openContainer instanceof ContainerTradeName))
return;
2014-08-13 23:44:36 -07:00
((ContainerTradeName) player.openContainer).handleSetAddress(packet);
2014-05-02 21:31:20 +02:00
}
private void onLetterText(EntityPlayer player, PacketUpdate packet) {
if (!(player.openContainer instanceof ContainerLetter))
return;
((ContainerLetter) player.openContainer).handleSetText(packet);
}
private void onLetterRecipient(EntityPlayer player, PacketUpdate packet) {
if (!(player.openContainer instanceof ContainerLetter))
return;
((ContainerLetter) player.openContainer).handleSetRecipient(player, packet);
}
private void onPOBoxInfoRequest(EntityPlayer player) {
2014-08-11 00:31:08 -07:00
MailAddress address = new MailAddress(player.getGameProfile());
POBox pobox = PostRegistry.getPOBox(player.worldObj, address);
2014-05-02 21:31:20 +02:00
if (pobox == null)
return;
Proxies.net.sendToPlayer(new PacketPOBoxInfo(PacketIds.POBOX_INFO, pobox.getPOBoxInfo()), player);
}
}