package dex3r.API.chunkprotection;
import java.util.List;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ChunkCoordinates;
import dex3r.API.Colors;
import dex3r.API.shared.PowerTools;
public class CommandChunk extends CommandBase
{
public String getCommandName()
{
return "chunk";
}
public String getCommandUsage()
{
return "/" + getCommandName() + "[claim]|[unclaim]|[add]|[remove]|[clear]|[info]";
}
public List getCommandAliases()
{
return null;
}
public void processCommand(ICommandSender sender, String[] arguments)
{
String playerName = sender.getCommandSenderName();
if (arguments.length > 0)
{
if ( arguments[0].equals("claim") &&
( ChunkProtection.cfgAllPlayersCanClaim || ChunkProtection.isPlayerOp(playerName) ) )
{
if (arguments.length > 1)
{
if (ChunkProtection.isPlayerOp(playerName))
{
PowerTools.addPlayer(arguments[1]);
chunkClaim(sender, arguments[1]);
}
}
else
{
chunkClaim(sender, "");
}
}
if ( arguments[0].equals("unclaim") ) chunkUnClaim(sender);
if ( arguments[0].equals("unclaimall") ) chunkUnClaimAll(sender, arguments);
if ( arguments[0].equals("add") ) chunkAddPlayers(sender, arguments);
if ( arguments[0].equals("remove") ) chunkRemovePlayers(sender, arguments);
if ( arguments[0].equals("clear") ) chunkClearPlayers(sender);
if ( arguments[0].equals("info") ) chunkSetBorderInfo(sender, arguments);
if ( arguments[0].equals("playerinfo") ) chunkPlayerInfo(sender, arguments);
if ( arguments[0].equals("maxchunks") && ChunkProtection.isPlayerOp(playerName) ) chunkSetMaxChunks(sender, arguments);
}
else
{
EntityPlayerMP player = (EntityPlayerMP) sender;
int d = player.worldObj.provider.dimensionId;
int x = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posX);
int z = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posZ);
String owner = ChunkProtection.chunkOwner(d, x, z);
if ( !owner.equals("") )
{
sender.sendChatToPlayer(Colors.Yellow + "This chunk is claimed by: " + owner);
String players = ChunkProtection.chunkGetPlayers(d, x, z);
if ( !players.equals("") )
sender.sendChatToPlayer(Colors.Yellow + "Players allowed to build here: " + players);
}
else
{
sender.sendChatToPlayer(Colors.Yellow + "This chunk is currently not claimed");
}
String message = Colors.Yellow + "Use " + Colors.White + "/chunk ";
if ( ChunkProtection.cfgAllPlayersCanClaim || ChunkProtection.isPlayerOp(playerName) )
message += "[claim]|";
message += "[unclaim]";
sender.sendChatToPlayer(message);
sender.sendChatToPlayer(Colors.Yellow + "Or " + Colors.White + "/chunk [add]|[remove] [player1] [player2] ..");
sender.sendChatToPlayer(Colors.Yellow + "Display info at border: " + Colors.White + "/chunk info [on|off]");
if ( ChunkProtection.isPlayerOp(playerName) )
{
sender.sendChatToPlayer(Colors.Yellow + "Display player information: " + Colors.White + "/chunk playerinfo [playername]");
sender.sendChatToPlayer(Colors.Yellow + "Set maximum chunks to claim for player: " + Colors.White + "/chunk maxchunks [playername] [maxchunks]");
}
}
}
public boolean canCommandSenderUseCommand(ICommandSender sender)
{
return true;
}
public void chunkClaim(ICommandSender sender, String claimForPlayer)
{
EntityPlayer player = (EntityPlayer) sender;
int dimension = player.worldObj.provider.dimensionId;
ChunkCoordinates coordinates = sender.getPlayerCoordinates();
int x = PowerTools.toChunkCoordinate(coordinates.posX);
int z = PowerTools.toChunkCoordinate(coordinates.posZ);
String playerName = sender.getCommandSenderName();
byte b;
if (claimForPlayer.equals(""))
{
b = ChunkProtection.chunkClaim(dimension, x, z, playerName );
}
else
{
b = ChunkProtection.chunkClaim(dimension, x, z, claimForPlayer );
}
String message = Colors.Yellow + "Dim" + dimension;
if (dimension == 0) message = Colors.Yellow + "Overworld";
if (dimension == -1) message = Colors.Yellow + "Nether";
message += " x:" + x + " z:" + z;
if (b == -1)
{
ChunkProtection.chunkSetLastVisitNow(dimension, x, z);
ChunkProtection.writeChunkInfoToFile();
message += " is suColorsessfully claimed.";
if (claimForPlayer.equals(""))
{
ChunkProtection.setChunkOwnerMessage(playerName, playerName);
}
else
{
ChunkProtection.setChunkOwnerMessage(playerName, claimForPlayer);
}
}
if (b == 1 || b == 3)
{
String owner = ChunkProtection.chunkOwner(dimension, x, z);
message += " was already claimed by " + owner + ".";
}
if (b == 2) message += " was already claimed by you.";
if (b == 4) message += " can't be claimed by you. You may only claim " + ChunkProtection.getMaxChunksPerPlayer(playerName) + " chunks.";
sender.sendChatToPlayer(message);
}
public void chunkUnClaim(ICommandSender sender)
{
EntityPlayer player = (EntityPlayer) sender;
int dimension = player.worldObj.provider.dimensionId;
ChunkCoordinates coordinates = sender.getPlayerCoordinates();
int x = PowerTools.toChunkCoordinate(coordinates.posX);
int z = PowerTools.toChunkCoordinate(coordinates.posZ);
String name = sender.getCommandSenderName();
byte b = ChunkProtection.chunkUnClaim(dimension, x, z, name);
String message = Colors.Yellow + "Dim" + dimension;
if (dimension == 0) message = Colors.Yellow + "Overworld";
if (dimension == -1) message = Colors.Yellow + "Nether";
message += " x:" + x + " z:" + z;
if (b == -1)
{
ChunkProtection.writeChunkInfoToFile();
message += " is suColorsessfully unclaimed.";
ChunkProtection.setChunkOwnerMessage(name, "");
}
if (b == 1) message += " couln't be unclaimed. It wasn't claimed.";
if (b == 2)
{
String owner = ChunkProtection.chunkOwner(dimension, x, z);
message += " couln't be unclaimed. It was claimed by " + owner + ".";
}
if (b == 3)
{
ChunkProtection.writeChunkInfoToFile();
message += " is " + Colors.LightRed + "suColorsessfully unclaimed by op.";
}
sender.sendChatToPlayer(message);
}
public void chunkUnClaimAll(ICommandSender sender, String[] arguments)
{
String playerName = sender.getCommandSenderName();
if (arguments.length == 2 && ChunkProtection.isPlayerOp(playerName))
playerName = arguments[1];
ChunkProtection.chunkUnClaimAll(playerName);
sender.sendChatToPlayer(Colors.Yellow + "Unclaimed all chunks of " + playerName);
}
public void chunkAddPlayers(ICommandSender sender, String[]arguments)
{
EntityPlayerMP player = (EntityPlayerMP) sender;
int d = player.worldObj.provider.dimensionId;
int x = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posX);
int z = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posZ);
String playerName = sender.getCommandSenderName();
String owner = ChunkProtection.chunkOwner(d, x, z) ;
if ( owner.equals(playerName) || ChunkProtection.isPlayerOp(playerName) )
{
boolean b;
String message = "";
if ( ChunkProtection.isPlayerOp(playerName) ) message += Colors.LightRed + "Op ";
message += Colors.Yellow + "Added player(s): ";
for (int i=1; i<arguments.length; i++)
{
b = ChunkProtection.chunkAddPlayer(d, x, z, playerName, arguments[i]);
if (b) message += arguments[i] + ", ";
}
sender.sendChatToPlayer(message);
ChunkProtection.writeChunkInfoToFile();
}
else
{
sender.sendChatToPlayer(Colors.Yellow + "You can only add players to a chunk you own.");
}
}
public void chunkRemovePlayers(ICommandSender sender, String[]arguments)
{
EntityPlayerMP player = (EntityPlayerMP) sender;
int d = player.worldObj.provider.dimensionId;
int x = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posX);
int z = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posZ);
String playerName = sender.getCommandSenderName();
String owner = ChunkProtection.chunkOwner(d, x, z);
if ( owner.equals(playerName) || ChunkProtection.isPlayerOp(playerName) )
{
boolean b;
String message = "";
if ( ChunkProtection.isPlayerOp(playerName) ) message += Colors.LightRed + "Op ";
message += Colors.Yellow + "Removed player(s): ";
for (int i=1; i<arguments.length; i++)
{
b = ChunkProtection.chunkRemovePlayer(d, x, z, playerName, arguments[i]);
if (b) message += arguments[i] + ", ";
}
sender.sendChatToPlayer(message);
ChunkProtection.writeChunkInfoToFile();
}
else
{
sender.sendChatToPlayer(Colors.Yellow + "You can only remove players from a chunk you own.");
}
}
public void chunkClearPlayers(ICommandSender sender)
{
EntityPlayerMP player = (EntityPlayerMP) sender;
int d = player.worldObj.provider.dimensionId;
int x = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posX);
int z = PowerTools.toChunkCoordinate(player.getPlayerCoordinates().posZ);
String playerName = sender.getCommandSenderName();
String owner = ChunkProtection.chunkOwner(d, x, z);
if ( owner.equals(playerName) || ChunkProtection.isPlayerOp(playerName) )
{
boolean b = ChunkProtection.chunkClearPlayerList(d, x, z, playerName);
String message = "";
if ( ChunkProtection.isPlayerOp(playerName) ) message += Colors.LightRed + "Op ";
message += Colors.Yellow + "Cleared player list for this chunk.";
if (b) sender.sendChatToPlayer(message);
}
else
{
sender.sendChatToPlayer(Colors.Yellow + "You can only remove players from a chunk you own.");
}
}
public void chunkSetBorderInfo(ICommandSender sender, String[]arguments)
{
String playerName = sender.getCommandSenderName();
String message;
if (arguments.length > 1)
{
message = Colors.Yellow + "Border info turned: ";
if ( arguments[1].equals("on") )
{
ChunkProtection.chunkSetBorderInfo(playerName, true);
message += "on";
}
if ( arguments[1].equals("off") )
{
ChunkProtection.chunkSetBorderInfo(playerName, false);
message += "off";
}
sender.sendChatToPlayer(message);
}
else
{
boolean info = ChunkProtection.chunkGetBorderInfo(playerName);
message = Colors.Yellow + "Border info is currently set: ";
if (info)
message += "on";
else
message += "off";
sender.sendChatToPlayer(message);
}
}
public void chunkPlayerInfo(ICommandSender sender, String[] arguments)
{
String message = "";
if (arguments.length == 2)
{
String playerName = arguments[1];
int maxChunks = ChunkProtection.getMaxChunksPerPlayer(playerName);
int chunksOwned = ChunkProtection.getChunksOwned(playerName);
message = Colors.Yellow + "Info for player '" + playerName + "', maxChunksAllowed: " + maxChunks
+ ", numberOfChunksOwned: " + chunksOwned;
}
else if (arguments.length == 1)
{
String playerName = sender.getCommandSenderName();
int maxChunks = ChunkProtection.getMaxChunksPerPlayer(playerName);
int chunksOwned = ChunkProtection.getChunksOwned(playerName);
message = Colors.Yellow + "Info for player '" + playerName + "', maxChunksAllowed: " + maxChunks
+ ", numberOfChunksOwned: " + chunksOwned;
}
else
{
message = Colors.Yellow + "Use: " + Colors.White + "/chunk playerinfo [playername]";
}
sender.sendChatToPlayer(message);
}
public void chunkSetMaxChunks(ICommandSender sender, String[] arguments)
{
String message = "";
if (arguments.length == 3)
{
String playerName = arguments[1];
int maxChunks = Integer.valueOf(arguments[2]);
ChunkProtection.setMaxChunksForPlayer(playerName, maxChunks);
ChunkProtection.writePlayerChunkInfoToFile();
message = Colors.Yellow + "Player '" + playerName + "' can now claim " + Colors.White + maxChunks + Colors.Yellow + " chunks.";
}
else
{
message = Colors.Yellow + "Use: " + Colors.White + "/chunk maxchunks [playername] [maxchunks]";
}
sender.sendChatToPlayer(message);
}
}