diff --git a/.gitignore b/.gitignore index 3910da63..b7fb9a96 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/build.xml b/build.xml index 41876061..27eaefae 100644 --- a/build.xml +++ b/build.xml @@ -73,11 +73,11 @@ --> - + - - + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 947ef47f..932e837d 100644 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -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 diff --git a/nbproject/project.properties b/nbproject/project.properties index 276473c3..629deeea 100644 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -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}:\ diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_cage.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_cage.java index d4cc4d6f..967c851d 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_cage.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_cage.java @@ -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; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_explosives.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_explosives.java index 78ca75cc..5c6f9758 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_explosives.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_explosives.java @@ -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; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java index 499d680f..9964c705 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_gadmin.java @@ -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")) { diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_list.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_list.java index 0677f6c8..2b50f9e3 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_list.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_list.java @@ -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 { diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_orbit.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_orbit.java index 40ef23af..4e4301be 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_orbit.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_orbit.java @@ -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; } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_permban.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_permban.java index 4fa56b33..9502c8f8 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_permban.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_permban.java @@ -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)); } } } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qdeop.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qdeop.java index f794caf4..fdeb6ebc 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qdeop.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_qdeop.java @@ -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) { diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rank.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rank.java index 7f4711df..e8a4e218 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rank.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rank.java @@ -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; } diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rd.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rd.java index 4516992b..4f86e4d8 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rd.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_rd.java @@ -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."); diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ro.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ro.java new file mode 100644 index 00000000..480d4f22 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_ro.java @@ -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; + } +} \ No newline at end of file diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stop.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stop.java index 10163dd2..90c31021 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stop.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_stop.java @@ -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()) { diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_Command.java b/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_Command.java index e5ead5f3..d17670df 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_Command.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/TFM_Command.java @@ -108,6 +108,13 @@ public class TFM_Command List 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 diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java index 02da3da7..2ee41149 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_PlayerListener.java @@ -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)) { diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_ProtectedArea.java b/src/me/StevenLawson/TotalFreedomMod/TFM_ProtectedArea.java index a49e6dcd..9c1b1ed6 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_ProtectedArea.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_ProtectedArea.java @@ -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 protectedAreas = new HashMap(); private final SerializableLocation center_location; diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java index be8a351b..f2e1f3e6 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_UserInfo.java @@ -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; + } } diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 2009a1ee..623bb486 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -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 + "."; } } } diff --git a/src/plugin.yml b/src/plugin.yml index bdd5ab5c..4896985c 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -162,8 +162,11 @@ commands: description: Owner Command - Broadcasts the given message with no extra formatting. usage: / 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: / + ro: + description: Superadmin Command - Remove all blocks of a certain type in the radius of certain players. + usage: / [radius (default=50)] [player] saconfig: description: Owner command - Manage superadmins. usage: / >