package com.w67clement.mineapi.system.messaging.defaults;
import com.w67clement.mineapi.MineAPI;
import com.w67clement.mineapi.system.messaging.MessagingPacket;
import com.w67clement.mineapi.system.messaging.PacketBuffer;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
/**
* Created by w67clement on 21/02/2016.
* <p>
* Class of project: MineAPI
*/
public class DispatchCommandPacket extends MessagingPacket
{
private String server;
private String command;
private boolean bungeeCmd;
private String sender;
public DispatchCommandPacket()
{
}
public DispatchCommandPacket(String server, String command, boolean bungeeCmd, String sender)
{
this.server = server;
this.command = command;
this.bungeeCmd = bungeeCmd;
this.sender = sender;
}
public String getServer()
{
return server;
}
public void setServer(String server)
{
this.server = server;
}
public String getCommand()
{
return command;
}
public void setCommand(String command)
{
this.command = command;
}
public boolean isBungeeCmd()
{
return bungeeCmd;
}
public void setBungeeCmd(boolean bungeeCmd)
{
this.bungeeCmd = bungeeCmd;
}
public String getSender()
{
return sender;
}
public void setSender(String sender)
{
this.sender = sender;
}
@Override
public void encode(PacketBuffer buffer)
{
if (this.server.length() > 256)
this.server = this.server.substring(0, 256);
if (this.command.length() > 256)
this.command = this.command.substring(0, 256);
if (this.sender.length() > 16)
this.sender = this.sender.substring(1, 16);
buffer.writeString(this.server);
buffer.writeString(this.command);
buffer.writeBoolean(this.bungeeCmd);
buffer.writeString(this.sender);
}
@Override
public void decode(PacketBuffer buffer)
{
this.server = buffer.readStringFromBuffer(256);
this.command = buffer.readStringFromBuffer(256);
this.bungeeCmd = buffer.readBoolean();
this.sender = buffer.readStringFromBuffer(16);
}
@Override
public void handle()
{
if (this.sender.equals("CONSOLE"))
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), this.command);
else
{
Player player = Bukkit.getPlayerExact(this.sender);
if (player == null)
{
MineAPI.sendMessageToConsole("&7[&2PluginMessaging&7]&4[Error] &cReceived packet '" + this.getClass().getSimpleName() + "'. Error code: 404");
MineAPI.sendMessageToConsole("&7[&2PluginMessaging&7]&4[Error] &cPlayer '" + this.sender + "' cannot be found.");
return;
}
Bukkit.dispatchCommand(player, this.command);
}
}
@Override
public String toString()
{
return "DispatchCommandPacket[Server:'" + server + "',Command:'" + command + "',BungeeCMD:" + bungeeCmd + ",Sender:'" + sender + "',toString:'" + super.toString() + "']";
}
}