Compare commits

...

25 Commits
v2.16 ... v2.18

Author SHA1 Message Date
a2a6e39db9 Minor changes, added /creative -a, formatting fixes, updated version number 2013-06-10 08:24:53 +02:00
c6ca262472 Merge pull request #39 from WickedGamingUK/patch-5
Fixed survival -a
2013-06-09 13:29:41 -07:00
c96bdea066 Fixed survival -a
I was a numpty and forgot to change the gamemode it changed people to.
2013-06-09 22:26:06 +02:00
893c7c2991 Merge pull request #38 from WickedGamingUK/patch-4
Added survival -a
2013-06-09 12:59:56 -07:00
201d27e070 Added survival -a (Allman Style) 2013-06-09 21:52:13 +02:00
36ceb7007a Added Disaster839 as a developer. 2013-06-09 14:11:22 +03:00
6519ead121 Added Acidic, Wild and Hex to the developer list 2013-06-03 23:08:31 +02:00
95805dd9c1 Merge pull request #30 from Wild1145/patch-7
Added blocks to /wildcard
2013-06-02 13:03:27 -07:00
6768854eda Added new blocked wildcards
This is to stop people from being able to abuse admin or going rogue as easily
2013-06-02 18:17:33 +02:00
83176ba0b9 Merge pull request #26 from Wilee999/pull2
Added /rb (/rollback alias)
2013-06-01 14:39:30 -07:00
4a2b58bf97 Merge pull request #28 from Wilee999/pull4
/nuke will now tempban you.
2013-06-01 14:38:12 -07:00
79fc01eae7 /nuke will now tempban you. 2013-05-31 19:54:36 -06:00
d1d220f618 Added /rb (/rollback alias) 2013-05-30 16:38:27 -06:00
f6943b9754 This /stop message works better. 2013-05-29 20:57:01 -06:00
2977167bd3 Merge pull request #24 from Wilee999/master
Fixed /blockcmd in /purgeall
2013-05-28 23:03:29 -07:00
ad9e901aa0 Fixed /blockcmd in /purgeall 2013-05-27 19:57:53 -07:00
4f6e4e2e87 Merge pull request #23 from Wild1145/patch-6
Blocked /clearhistory
2013-05-26 11:32:53 -07:00
d8ae364300 Patched exploit found in commands
This will fix the issue with world edit history erasing, please push and compile ASAP as Mark would like this patched :)
2013-05-26 14:18:16 +02:00
7f9661ec11 Merge pull request #14 from Wild1145/patch-1
Blocked /rl
2013-05-22 07:40:51 -07:00
8d59ba59f4 Prepend Rollback entries, this ensures the last entries get restored first, instead of last 2013-05-20 15:40:04 +02:00
6a7e866a53 Merge pull request #19 from Wild1145/patch-5
Fixed /gtfo
2013-05-19 14:30:56 -07:00
63508addf4 /Gtfo bug fix 2013-05-19 23:28:57 +02:00
b8ab56bed5 Incremented version number 2013-05-17 23:00:27 +02:00
4853cc439b Added /rollback 2013-05-17 22:58:03 +02:00
47dec49381 added /rl as a blocked command
Just because it buggs me ALOT!
2013-05-15 21:13:36 +02:00
19 changed files with 351 additions and 35 deletions

View File

@ -1,5 +1,5 @@
#Wed, 15 May 2013 15:22:48 +0200
#Mon, 03 Jun 2013 23:08:42 +0200
program.VERSION=2.16
program.BUILDNUM=190
program.BUILDDATE=05/15/2013 03\:22 PM
program.VERSION=2.18
program.BUILDNUM=216
program.BUILDDATE=06/03/2013 11\:08 PM

View File

@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
#Wed May 15 15:22:48 CEST 2013
build.number=191
#Mon Jun 03 23:08:42 CEST 2013
build.number=217

View File

@ -1,4 +1,4 @@
# TotalFreedomMod v2.16 Configuration
# TotalFreedomMod v2.18 Configuration
# by Madgeek1450 and DarthSalamon
# Block placement prevention:

View File

@ -1,6 +1,8 @@
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.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@ -29,23 +31,39 @@ public class Command_creative extends TFM_Command
}
else
{
if (senderIsConsole || TFM_SuperadminList.isUserSuperadmin(sender))
if (args[0].equalsIgnoreCase("-a"))
{
try
if (!TFM_SuperadminList.isUserSuperadmin(sender))
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
for (Player player : server.getOnlinePlayers())
{
p = getPlayer(args[0]);
}
catch (CantFindPlayerException ex)
{
sender.sendMessage(ex.getMessage());
return true;
player.setGameMode(GameMode.CREATIVE);
}
TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to creative", false);
return true;
}
else
if (!(senderIsConsole || TFM_SuperadminList.isUserSuperadmin(sender)))
{
playerMsg("Only superadmins can change other user's gamemode.");
return true;
}
try
{
p = getPlayer(args[0]);
}
catch (CantFindPlayerException ex)
{
sender.sendMessage(ex.getMessage());
return true;
}
}
playerMsg("Setting " + p.getName() + " to game mode 'Creative'.");

View File

@ -43,7 +43,7 @@ public class Command_gtfo extends TFM_Command
//rollback
server.dispatchCommand(sender, "rollback " + p.getName() + " all");
server.dispatchCommand(sender, "rollback " + p.getName());
// deop

View File

@ -72,7 +72,7 @@ public class Command_list extends TFM_Command
prefix = (ChatColor.GOLD + "[SA]");
}
if (p.getName().equalsIgnoreCase("madgeek1450") || p.getName().equalsIgnoreCase("darthsalamon"))
if (TFM_Util.DEVELOPERS.contains(p.getName()))
{
prefix = (ChatColor.DARK_PURPLE + "[Dev]");
}

View File

@ -17,7 +17,7 @@ public class Command_purgeall extends TFM_Command
server.dispatchCommand(sender, "mute purge");
server.dispatchCommand(sender, "fr purge");
server.dispatchCommand(sender, "mp");
server.dispatchCommand(sender, "blockcmd");
server.dispatchCommand(sender, "blockcmd purge");
server.dispatchCommand(sender, "halt purge");
//If I'm missing any, lemme know. Or just add it yourself.

View File

@ -0,0 +1,88 @@
package me.StevenLawson.TotalFreedomMod.Commands;
import me.StevenLawson.TotalFreedomMod.TFM_RollbackManager;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.SUPER, source = SourceType.BOTH, block_host_console = true)
@CommandParameters(description = "Issues a rollback on a player", usage = "/<command> <[partialname] | purge [partialname] | purgeall>", aliases = "rb")
public class Command_rollback extends TFM_Command {
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length > 2)
{
return false;
}
if (args.length == 1 && args[0].equalsIgnoreCase("purgeall"))
{
TFM_Util.adminAction(sender.getName(), "Puring all rollback data", false);
playerMsg("Purged entries for " + TFM_RollbackManager.purgeEntries() + " players.");
return true;
}
if (args.length == 2 && args[0].equalsIgnoreCase("purge"))
{
OfflinePlayer p;
try
{
p = getPlayer(args[1]);
}
catch (CantFindPlayerException ex)
{
p = server.getOfflinePlayer(args[1]);
if (!p.hasPlayedBefore())
{
playerMsg("Player is not online, or never joined the server.", ChatColor.RED);
return true;
}
}
if (!TFM_RollbackManager.canRollback(p.getName()))
{
playerMsg("No rollback data found for that player", ChatColor.RED);
} else {
playerMsg("Purged " + TFM_RollbackManager.purgeEntries(p.getName()) + " entries.");
return true;
}
}
if (args.length != 1)
{
return false;
}
OfflinePlayer p;
try
{
p = getPlayer(args[0]);
}
catch (CantFindPlayerException ex)
{
p = server.getOfflinePlayer(args[0]);
if (!p.hasPlayedBefore())
{
playerMsg("Player is not online, or never joined the server.", ChatColor.RED);
return true;
}
}
if (!TFM_RollbackManager.canRollback(p.getName()))
{
playerMsg("Player has no rollback data set.", ChatColor.RED);
return true;
}
TFM_Util.adminAction(sender.getName(), "Rolling back player: " + p.getName(), false);
playerMsg("Rolled back " + TFM_RollbackManager.rollback(p) + " blocks");
return true;
}
}

View File

@ -17,7 +17,7 @@ public class Command_stop extends TFM_Command
for (Player p : server.getOnlinePlayers())
{
p.kickPlayer("Server is going offline, come back in a few minutes.");
p.kickPlayer("Server is going offline, come back in about 20 seconds.");
}
server.shutdown();

View File

@ -1,6 +1,9 @@
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.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
@ -8,7 +11,7 @@ import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/<command> [partialname]")
@CommandParameters(description = "Quickly change your own gamemode to survival, or define someone's username to change theirs.", usage = "/<command> <[partialname] | -a>")
public class Command_survival extends TFM_Command
{
@Override
@ -24,12 +27,30 @@ public class Command_survival extends TFM_Command
}
Player p;
if (args.length == 0)
{
p = sender_p;
}
else
{
if (args[0].equalsIgnoreCase("-a"))
{
if (!TFM_SuperadminList.isUserSuperadmin(sender) || senderIsConsole)
{
sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
for (Player player : server.getOnlinePlayers())
{
player.setGameMode(GameMode.SURVIVAL);
}
TFM_Util.adminAction(sender.getName(), "Changing everyone's gamemode to survival", false);
return true;
}
if (senderIsConsole || TFM_SuperadminList.isUserSuperadmin(sender))
{
try

View File

@ -18,6 +18,21 @@ public class Command_wildcard extends TFM_Command
playerMsg("What the hell are you trying to do, you stupid idiot...", ChatColor.RED);
return true;
}
if (args[0].equals("gtfo"))
{
playerMsg("Nice try", ChatColor.RED);
return true;
}
if (args[0].equals("doom"))
{
playerMsg("Look, we all hate people, but this is not the way to deal with it, doom is evil enough!", ChatColor.RED);
return true;
}
if (args[0].equals("saconfig"))
{
playerMsg("WOA, WTF are you trying to do???", ChatColor.RED);
return true;
}
String base_command = StringUtils.join(args, " ");

View File

@ -3,12 +3,15 @@ package me.StevenLawson.TotalFreedomMod.Listener;
import me.StevenLawson.TotalFreedomMod.TFM_Log;
import me.StevenLawson.TotalFreedomMod.TFM_PlayerData;
import me.StevenLawson.TotalFreedomMod.TFM_ProtectedArea;
import me.StevenLawson.TotalFreedomMod.TFM_RollbackEntry;
import me.StevenLawson.TotalFreedomMod.TFM_RollbackManager;
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
import me.StevenLawson.TotalFreedomMod.TFM_Util;
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@ -24,7 +27,6 @@ public class TFM_BlockListener implements Listener
if (!TotalFreedomMod.allowFireSpread)
{
event.setCancelled(true);
return;
}
}
@ -34,7 +36,6 @@ public class TFM_BlockListener implements Listener
if (!TotalFreedomMod.allowFirePlace)
{
event.setCancelled(true);
return;
}
}
@ -95,7 +96,6 @@ public class TFM_BlockListener implements Listener
if (TFM_ProtectedArea.isInProtectedArea(block_pos))
{
event.setCancelled(true);
return;
}
}
}
@ -180,7 +180,6 @@ public class TFM_BlockListener implements Listener
p.sendMessage(ChatColor.GRAY + "Lava placement is currently disabled.");
event.setCancelled(true);
return;
}
break;
}
@ -199,7 +198,6 @@ public class TFM_BlockListener implements Listener
p.sendMessage(ChatColor.GRAY + "Water placement is currently disabled.");
event.setCancelled(true);
return;
}
break;
}
@ -217,7 +215,6 @@ public class TFM_BlockListener implements Listener
p.sendMessage(ChatColor.GRAY + "Fire placement is currently disabled.");
event.setCancelled(true);
return;
}
break;
}
@ -235,7 +232,6 @@ public class TFM_BlockListener implements Listener
p.sendMessage(ChatColor.GRAY + "TNT is currently disabled.");
event.setCancelled(true);
return;
}
break;
}
@ -250,6 +246,22 @@ public class TFM_BlockListener implements Listener
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onBlockPlaceRollback(BlockPlaceEvent event)
{
TFM_RollbackEntry entry = new TFM_RollbackEntry();
entry.setLocation(event.getBlock().getLocation());
entry.setMaterial(Material.AIR);
TFM_RollbackManager.blockUpdate(event.getPlayer(), entry);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreakRollback(BlockBreakEvent event)
{
TFM_RollbackManager.blockUpdate(event.getPlayer(), event.getBlock());
}
// @EventHandler(priority = EventPriority.NORMAL)
// public void onCommandBlockChangeEvent(CommandBlockChangeEvent event)
// {

View File

@ -55,7 +55,6 @@ public class TFM_PlayerListener implements Listener
player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.COOKIE, 1));
player.sendMessage(ChatColor.GRAY + "Lava buckets are currently disabled.");
event.setCancelled(true);
return;
}
case POTION:
{
@ -81,7 +80,6 @@ public class TFM_PlayerListener implements Listener
playerdata.enqueueMob(rezzed_mob);
event.setCancelled(true);
return;
}
break;
}
@ -491,6 +489,20 @@ public class TFM_PlayerListener implements Listener
block_command = true;
}
}
else if (Pattern.compile("^/nuke").matcher(command).find())
{
if (!TFM_SuperadminList.isUserSuperadmin(p))
{
block_command = true;
}
}
else if (Pattern.compile("^/rl").matcher(command).find())
{
if (!TFM_SuperadminList.isUserSuperadmin(p))
{
block_command = true;
}
}
else if (Pattern.compile("^/save-").matcher(command).find())
{
if (!TFM_SuperadminList.isUserSuperadmin(p))
@ -498,6 +510,13 @@ public class TFM_PlayerListener implements Listener
block_command = true;
}
}
else if (Pattern.compile("^/clearhistory").matcher(command).find())
{
if (!TFM_SuperadminList.isUserSuperadmin(p))
{
block_command = true;
}
}
if (block_command)
{

View File

@ -0,0 +1,54 @@
package me.StevenLawson.TotalFreedomMod;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
public class TFM_RollbackEntry
{
private Location location;
private Material material;
private byte data;
public TFM_RollbackEntry()
{
}
public TFM_RollbackEntry(Block block)
{
location = block.getLocation();
material = block.getType();
data = block.getData();
}
public void setBlock(Block block)
{
location = block.getLocation();
material = block.getType();
data = block.getData();
}
public void setLocation(Location location)
{
this.location = location;
}
public void setMaterial(Material material)
{
this.material = material;
}
public void setData(byte data)
{
this.data = data;
}
public void restore()
{
Block b = location.getWorld().getBlockAt(location);
b.setType(material);
b.setData(data);
}
}

View File

@ -0,0 +1,86 @@
package me.StevenLawson.TotalFreedomMod;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.Block;
public class TFM_RollbackManager
{
public static Map<String, List<TFM_RollbackEntry>> entries = new HashMap<String, List<TFM_RollbackEntry>>();
public static void blockUpdate(OfflinePlayer player, Block block)
{
List <TFM_RollbackEntry> e;
if (entries.containsKey(player.getName()))
{
e = entries.get(player.getName());
}
else
{
e = new ArrayList<TFM_RollbackEntry>();
}
e.add(0, new TFM_RollbackEntry(block));
entries.put(player.getName(), e);
}
public static void blockUpdate(OfflinePlayer player, TFM_RollbackEntry entry)
{
List <TFM_RollbackEntry> e;
if (entries.containsKey(player.getName()))
{
e = entries.get(player.getName());
}
else
{
e = new ArrayList<TFM_RollbackEntry>();
}
e.add(entry);
entries.put(player.getName(), e);
}
public static int rollback(OfflinePlayer player)
{
if (!canRollback(player.getName()))
{
TFM_Log.severe("Could not rollback player: " + player.getName() + "! No entries are set");
return 0;
}
List<TFM_RollbackEntry> e = entries.get(player.getName());
int counter = 0;
for (TFM_RollbackEntry entry : e)
{
entry.restore();
counter++;
}
entries.remove(player.getName());
return counter;
}
public static boolean canRollback(String player)
{
return entries.containsKey(player);
}
public static int purgeEntries()
{
int counter = entries.size();
entries.clear();
return counter;
}
public static int purgeEntries(String player)
{
if (!canRollback(player))
{
return 0;
}
int counter = entries.get(player).size();
entries.remove(player);
return counter;
}
}

View File

@ -27,6 +27,7 @@ public class TFM_Util
private static final Map<String, Integer> eject_tracker = new HashMap<String, Integer>();
public static final Map<String, EntityType> mobtypes = new HashMap<String, EntityType>();
public static final List<String> STOP_COMMANDS = Arrays.asList("stop", "off", "end", "halt", "die");
public static final List<String> DEVELOPERS = Arrays.asList("Madgeek1540", "DarthSalamon", "AcidicCyanide", "wild1145", "HeXeRei452", "Disaster839");
static
{
@ -979,7 +980,9 @@ public class TFM_Util
String prefix;
if (senderIsConsole) {
prefix = ChatColor.BLUE + "(Console)";
} else {
}
else
{
if (TFM_SuperadminList.isSeniorAdmin(sender))
{
prefix = ChatColor.LIGHT_PURPLE + "(SrA)";
@ -987,8 +990,7 @@ public class TFM_Util
{
prefix = ChatColor.GOLD + "(SA)";
}
if (sender.getName().equalsIgnoreCase("Madgeek1450")
|| sender.getName().equalsIgnoreCase("DarthSalamon"))
if (DEVELOPERS.contains(sender.getName()))
{
prefix = ChatColor.DARK_PURPLE + "(Dev)";
}

View File

@ -7,3 +7,4 @@ badplayer1:
- 321.321.321.321
badplayer2:
- 111.111.111.111
badplayer3: []

View File

@ -1,6 +1,6 @@
name: TotalFreedomMod
main: me.StevenLawson.TotalFreedomMod.TotalFreedomMod
version: 2.16
version: 2.18
description: Plugin for the Total Freedom server.
authors: [StevenLawson / Madgeek1450, JeromSar / DarthSalamon]

View File

@ -15,7 +15,7 @@ superadmins:
- 127.0.0.1
- 8.8.8.8
last_login: Sun, 11 Nov 2012 01:09:14 -0500
custom_login_message: the &5Chief-Developer&b and &6Master-ass-kicker&b.
custom_login_message: the &4Co-Founder&b and &6Master-ass-kicker&b.
is_senior_admin: true
console_aliases:
- madgeek