This commit is contained in:
Steven Lawson 2012-12-01 14:11:47 -05:00
commit 079fe2cb4e
21 changed files with 193 additions and 50 deletions

7
.gitignore vendored
View File

@ -1,11 +1,12 @@
# netbeans excludes (StevenLawson)
# netbeans excludes - StevenLawson & JeromSar
/nbproject/private/
/dist/
/build/
appinfo.properties
buildnumber.properties
appinfo.properties
manifest.mf
# eclipse excludes (JeromSar)
# eclipse excludes - JeromSar (old)
.project
.classpath
/bin/

View File

@ -1,6 +1,6 @@
build.xml.data.CRC32=7bf70ec5
build.xml.script.CRC32=b1031e10
build.xml.stylesheet.CRC32=28e38971@1.44.1.45
build.xml.stylesheet.CRC32=28e38971@1.53.1.46
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=7bf70ec5

View File

@ -4,7 +4,7 @@ annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=TotalFreedomMod
application.vendor=Michael
application.vendor=Madgeek1450/DarthSalamon
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
@ -32,8 +32,8 @@ jar.archive.disabled=${jnlp.enabled}
jar.compress=false
jar.index=${jnlp.enabled}
javac.classpath=\
\# Space-separated list of extra javac options:\
${libs.CraftBukkit.classpath}
# Space-separated list of extra javac options
javac.compilerargs=-Xlint:unchecked -Xlint:deprecation
javac.deprecation=false
javac.processorpath=\
@ -65,7 +65,7 @@ jnlp.signed=false
jnlp.signing=
jnlp.signing.alias=
jnlp.signing.keystore=
main.class=totalfreedommod.TotalFreedomMod
main.class=
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
@ -73,9 +73,9 @@ platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
# Space-separated list of JVM arguments used when running the project.
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\

View File

@ -40,6 +40,7 @@ public class Command_cage extends TFM_Command
{
if (TFM_Util.isStopCommand(args[1]))
{
TFM_Util.adminAction(sender.getName(), "Uncaging " + p.getName(), true);
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
@ -50,6 +51,15 @@ public class Command_cage extends TFM_Command
{
cage_material_outer = Material.matchMaterial(args[1]);
if (cage_material_outer == null)
{
TFM_Util.adminAction(sender.getName(), "Uncaging " + p.getName(), true);
playerdata.setCaged(false);
playerdata.regenerateHistory();
playerdata.clearHistory();
sender.sendMessage(ChatColor.GREEN + p.getName() + " uncaged.");
return true;
}
else
{
cage_material_outer = Material.GLASS;
}
@ -75,11 +85,8 @@ public class Command_cage extends TFM_Command
TFM_Util.buildHistory(target_pos, 2, playerdata);
TFM_Util.generateCube(target_pos, 2, playerdata.getCageMaterial(TFM_UserInfo.CageLayer.OUTER));
TFM_Util.generateCube(target_pos, 1, playerdata.getCageMaterial(TFM_UserInfo.CageLayer.INNER));
p.setGameMode(GameMode.SURVIVAL);
TFM_Util.bcastMsg(sender.getName() + " caged " + p.getName() + "!", ChatColor.YELLOW);
TFM_Util.adminAction(sender.getName(), "Caging " + p.getName(), true);
return true;
}
}

View File

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -24,6 +25,8 @@ public class Command_explosives extends TFM_Command
}
catch (NumberFormatException nfex)
{
TFM_Util.playerMsg(sender, nfex.getMessage());
return true;
}
}

View File

@ -40,7 +40,9 @@ public class Command_gadmin extends TFM_Command
{
if (mode.equals("kick"))
{
TFM_Util.adminAction(sender.getName(), "Kicking " + p.getName(), true);
p.kickPlayer("Kicked by Administrator");
}
else if (mode.equals("nameban"))
{

View File

@ -34,9 +34,9 @@ public class Command_list extends TFM_Command
{
if (TFM_SuperadminList.isUserSuperadmin(p))
{
if (p.isOp())
if(TFM_SuperadminList.isSeniorAdmin(p))
{
prefix = (ChatColor.GOLD + "[SA+OP]");
prefix = (ChatColor.LIGHT_PURPLE + "[SrA]");
}
else
{

View File

@ -2,6 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_UserInfo;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
@ -48,8 +49,10 @@ public class Command_orbit extends TFM_Command
{
strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1])));
}
catch (NumberFormatException nfex)
catch (NumberFormatException ex)
{
sender.sendMessage(ex.getMessage());
return true;
}
}
@ -57,8 +60,7 @@ public class Command_orbit extends TFM_Command
playerdata.startOrbiting(strength);
p.setVelocity(new Vector(0, strength, 0));
sender.sendMessage(ChatColor.GRAY + "Orbiting " + p.getName());
TFM_Util.adminAction(sender.getName(), "Orbiting " + p.getName(), true);
return true;
}

View File

@ -45,10 +45,7 @@ public class Command_permban extends TFM_Command
else
{
TFM_Util.playerMsg(sender, TotalFreedomMod.permbanned_players.size() + " permanently banned players:");
for (String player_name : TotalFreedomMod.permbanned_players)
{
TFM_Util.playerMsg(sender, "- " + player_name);
}
TFM_Util.playerMsg(sender, ChatColor.GRAY + TFM_Util.implodeStringList(", ", TotalFreedomMod.permbanned_players));
}
if (TotalFreedomMod.permbanned_ips.isEmpty())
@ -58,10 +55,7 @@ public class Command_permban extends TFM_Command
else
{
TFM_Util.playerMsg(sender, TotalFreedomMod.permbanned_ips.size() + " permanently banned IPs:");
for (String ip_address : TotalFreedomMod.permbanned_ips)
{
TFM_Util.playerMsg(sender, "- " + ip_address);
}
TFM_Util.playerMsg(sender, ChatColor.GRAY + TFM_Util.implodeStringList(", ", TotalFreedomMod.permbanned_ips));
}
}
}

View File

@ -1,5 +1,6 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.command.Command;
@ -16,7 +17,6 @@ public class Command_qdeop extends TFM_Command
{
return false;
}
boolean silent = false;
if (args.length == 2)
{

View File

@ -28,7 +28,7 @@ public class Command_rank extends TFM_Command
if (args.length == 0)
{
TFM_Util.playerMsg(sender, sender.getName() + " is " + TFM_Util.getRank(sender), ChatColor.AQUA);
TFM_Util.bcastMsg(sender.getName() + " is " + TFM_Util.getRank(sender), ChatColor.AQUA);
return true;
}

View File

@ -12,7 +12,8 @@ public class Command_rd extends TFM_Command
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
//This terminology is wrong, this doesn't remove *all* entities, by far. - Madgeek
// This terminology is wrong, this doesn't remove *all* entities, by far. - Madgeek
// Back when I was just a player, I didn't even know what "entity" meant... :P - Darth
TFM_Util.adminAction(sender.getName(), "Removing all server entities.", false);
sender.sendMessage(ChatColor.GRAY + String.valueOf(TFM_Util.wipeEntities(true, true)) + " enties removed.");

View File

@ -0,0 +1,81 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = ADMIN_LEVEL.SUPER, source = SOURCE_TYPE_ALLOWED.BOTH, block_web_console = false, ignore_permissions = false)
public class Command_ro extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if(args.length < 1 || args.length > 3) {
return false;
}
int radius = 50;
Player target_player = null;
Material target_block = Material.matchMaterial(args[0]);
if (target_block == null)
{
TFM_Util.playerMsg(sender, "Invalid block!");
return true;
}
if(args.length >= 2)
{
try
{
radius = Integer.parseInt(args[1]);
}
catch(NumberFormatException nfex)
{
TFM_Util.playerMsg(sender, nfex.getMessage());
return true;
}
if(radius > 3000)
{
TFM_Util.playerMsg(sender, "What the hell are you trying to do, you stupid idiot!", ChatColor.RED);
return true;
}
}
if(args.length == 3)
{
try
{
target_player = getPlayer(args[2]);
}
catch (CantFindPlayerException ex)
{
sender.sendMessage(ex.getMessage());
return true;
}
}
if(target_player == null)
{
for(Player p : server.getOnlinePlayers())
{
boolean is_Op = p.isOp();
p.setOp(true);
server.dispatchCommand(p, "/removenear " + target_block.getId() + " " + radius);
p.setOp(is_Op);
}
}
else
{
boolean is_Op = target_player.isOp();
target_player.setOp(true);
server.dispatchCommand(target_player, "/removenear " + target_block.getId() + " " + radius);
target_player.setOp(is_Op);
}
return true;
}
}

View File

@ -12,7 +12,8 @@ public class Command_stop extends TFM_Command
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
TFM_Util.bcastMsg("Server is going offline.", ChatColor.GRAY);
TFM_Util.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE);
for (Player p : server.getOnlinePlayers())
{

View File

@ -108,6 +108,13 @@ public class TFM_Command
List<Player> matches = server.matchPlayer(partialname);
if (matches.isEmpty())
{
for(Player p : server.getOnlinePlayers())
{
if(p.getDisplayName().toLowerCase().indexOf(partialname) != -1)
{
return p;
}
}
throw new CantFindPlayerException(partialname);
}
else

View File

@ -101,7 +101,6 @@ public class TFM_PlayerListener implements Listener
}
event.setCancelled(true);
return;
}
break;
}
@ -109,7 +108,7 @@ public class TFM_PlayerListener implements Listener
{
if (TotalFreedomMod.allowExplosions && TFM_SuperadminList.isSeniorAdmin(player))
{
Block target_block = null;
Block target_block;
if (event.getAction().equals(Action.LEFT_CLICK_AIR))
{
@ -131,7 +130,6 @@ public class TFM_PlayerListener implements Listener
}
event.setCancelled(true);
return;
}
break;
@ -211,7 +209,7 @@ public class TFM_PlayerListener implements Listener
{
Location target_pos = p.getLocation().add(0, 1, 0);
boolean out_of_cage = false;
boolean out_of_cage;
if (!target_pos.getWorld().equals(playerdata.getCagePos().getWorld()))
{
out_of_cage = true;
@ -290,10 +288,22 @@ public class TFM_PlayerListener implements Listener
try
{
final Player p = event.getPlayer();
String message = event.getMessage().trim();
TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p);
playerdata.incrementMsgCount();
// check for message repeat
if(playerdata.getLastMessage().equalsIgnoreCase(message))
{
TFM_Util.playerMsg(p, "Please do not repeat messages.");
event.setCancelled(true);
playerdata.setLastMessage(message);
return;
}
playerdata.setLastMessage(message);
// check for spam
if (playerdata.getMsgCount() > 10)
{
@ -321,8 +331,6 @@ public class TFM_PlayerListener implements Listener
}
}
String message = event.getMessage().trim();
// strip color from messages
message = ChatColor.stripColor(message);
@ -333,21 +341,33 @@ public class TFM_PlayerListener implements Listener
TFM_Util.playerMsg(p, "Message was shortened because it was too long to send.");
}
// check for caps
// check for caps and exclamation marks
if (message.length() >= 6)
{
int caps = 0;
int excl = 0;
for (char c : message.toCharArray())
{
if (Character.isUpperCase(c))
{
caps++;
}
if(c == '!')
{
excl++;
}
if (((float) caps / (float) message.length()) > 0.75) //Compute a ratio so that longer sentences can have more caps.
}
if (caps > 6 || caps > 3 && ((float) caps / (float) message.length()) > 0.55)
{
message = message.toLowerCase();
}
if(excl++ > 3)
{
message = message.replaceAll("!", "") + '!';
}
}
// finally, set message
@ -472,6 +492,18 @@ public class TFM_PlayerListener implements Listener
{
block_command = true;
}
else if (Pattern.compile("^/clear").matcher(command).find())
{
block_command = true;
}
else if (!TFM_SuperadminList.isUserSuperadmin(p) && Pattern.compile("^/socialspy").matcher(command).find())
{
block_command = true;
}
else if (!TFM_SuperadminList.isUserSuperadmin(p) && Pattern.compile("^/packet").matcher(command).find())
{
block_command = true;
}
}
if (block_command)
@ -481,7 +513,7 @@ public class TFM_PlayerListener implements Listener
return;
}
if (playerdata.isMuted())
// block muted commands
{
if (!TFM_SuperadminList.isUserSuperadmin(p))
{

View File

@ -15,6 +15,8 @@ import org.bukkit.World;
public class TFM_ProtectedArea implements Serializable
{
private static final long serialVersionUID = -3270338811000937254L;
public static final double MAX_RADIUS = 50.0D;
private static Map<String, TFM_ProtectedArea> protectedAreas = new HashMap<String, TFM_ProtectedArea>();
private final SerializableLocation center_location;

View File

@ -45,6 +45,7 @@ public class TFM_UserInfo
private boolean mp44_armed = false;
private boolean mp44_firing = false;
private int lockup_schedule_id = -1;
private String last_message = "";
public TFM_UserInfo(Player player)
{
@ -406,4 +407,14 @@ public class TFM_UserInfo
{
this.lockup_schedule_id = lockup_schedule_id;
}
public void setLastMessage(String last_message)
{
this.last_message = last_message;
}
public String getLastMessage()
{
return this.last_message;
}
}

View File

@ -68,19 +68,16 @@ public class TFM_Util
TFM_Util.bcastMsg(message, null);
}
//JeromSar
public static void playerMsg(CommandSender sender, String message, ChatColor color)
{
sender.sendMessage(color + message);
}
//JeromSar
public static void playerMsg(CommandSender sender, String message)
{
TFM_Util.playerMsg(sender, message, ChatColor.GRAY);
}
//JeromSar
public static void adminAction(String adminName, String action, boolean isRed)
{
TFM_Util.bcastMsg(adminName + " - " + action, (isRed ? ChatColor.RED : ChatColor.AQUA));
@ -545,7 +542,6 @@ public class TFM_Util
return TFM_SuperadminList.isSuperadminImpostor(user);
}
//JeromSar
public static String getRank(CommandSender sender)
{
if (TFM_SuperadminList.isSuperadminImpostor(sender))
@ -571,11 +567,11 @@ public class TFM_Util
if (admin_entry.isSeniorAdmin())
{
return "a " + ChatColor.GOLD + "senior admin" + ChatColor.AQUA + ".";
return "a " + ChatColor.LIGHT_PURPLE + "Senior Admin" + ChatColor.AQUA + ".";
}
else
{
return "an " + ChatColor.RED + "admin" + ChatColor.AQUA + ".";
return "a " + ChatColor.GOLD + "Super Admin" + ChatColor.AQUA + ".";
}
}
}

View File

@ -162,8 +162,11 @@ commands:
description: Owner Command - Broadcasts the given message with no extra formatting.
usage: /<command> <message>
rd:
description: Remove all projectiles, dropped items, experience orbs, primed explosives, and minecarts. Minecarts are optional, based on if "carts" is included after the command.
description: Superadmin command - Remove all projectiles, dropped items, experience orbs, primed explosives, and minecarts. Minecarts are optional, based on if "carts" is included after the command.
usage: /<command> <carts>
ro:
description: Superadmin Command - Remove all blocks of a certain type in the radius of certain players.
usage: /<command> <block> [radius (default=50)] [player]
saconfig:
description: Owner command - Manage superadmins.
usage: /<command> <list | clean | <add|delete> <username>>