Added listener for bans to ask for rollbacks

This commit is contained in:
Robin Kupper
2011-08-26 14:15:31 +02:00
parent ede8ae51c8
commit 9829a76824
3 changed files with 35 additions and 2 deletions

View File

@@ -34,7 +34,8 @@ public class Config
public final int defaultDist, defaultTime;
public final int linesPerPage, linesLimit;
public final int toolID, toolblockID;
public final boolean askRollbacks, askRedos, askClearLogs, askClearLogAfterRollback;
public final boolean askRollbacks, askRedos, askClearLogs, askClearLogAfterRollback, askRollbackAfterBan;
public final String banPermission;
public final Set<Integer> hiddenPlayers, hiddenBlocks;
public static enum LogKillsLevel {
@@ -76,6 +77,8 @@ public class Config
def.put("questioner.askRedos", true);
def.put("questioner.askClearLogs", true);
def.put("questioner.askClearLogAfterRollback", true);
def.put("questioner.askRollbackAfterBan", false);
def.put("questioner.banPermission", "mcbans.ban.local");
final Configuration config = logblock.getConfiguration();
config.load();
for (final Entry<String, Object> e : def.entrySet())
@@ -143,6 +146,8 @@ public class Config
askRedos = config.getBoolean("questioner.askRedos", true);
askClearLogs = config.getBoolean("questioner.askClearLogs", true);
askClearLogAfterRollback = config.getBoolean("questioner.askClearLogAfterRollback", true);
askRollbackAfterBan = config.getBoolean("questioner.askRollbackAfterBan", false);
banPermission = config.getString("questioner.banPermission");
final List<String> worldNames = config.getStringList("loggedWorlds", null);
worlds = new HashMap<Integer, WorldConfig>();
if (worldNames == null || worldNames.size() == 0)

View File

@@ -2,10 +2,12 @@ package de.diddiz.LogBlock;
import java.util.Map;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerListener;
import com.sk89q.worldedit.bukkit.selections.CuboidSelection;
@@ -73,4 +75,27 @@ class LBToolListener extends PlayerListener
}
}
}
@Override
public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent event) {
final String[] split = event.getMessage().split(" ");
if (split.length > 1 && split[0].equalsIgnoreCase("/ban") && logblock.hasPermission(event.getPlayer(), logblock.getConfig().banPermission)) {
final QueryParams p = new QueryParams(logblock);
p.setPlayer(split[1].equalsIgnoreCase("g") ? split[2] : split[1]);
p.minutes = 0;
p.silent = false;
logblock.getServer().getScheduler().scheduleAsyncDelayedTask(logblock, new Runnable() {
@Override
public void run() {
for (final World world : logblock.getServer().getWorlds())
if (logblock.getConfig().worlds.get(world.getName().hashCode()) != null) {
p.world = world;
try {
handler.new CommandRollback(event.getPlayer(), p, false);
} catch (final Exception ex) {}
}
}
});
}
}
}

View File

@@ -172,7 +172,10 @@ public class LogBlock extends JavaPlugin
final LBBlockListener lbBlockListener = new LBBlockListener(this);
final LBPlayerListener lbPlayerListener = new LBPlayerListener(this);
final LBEntityListener lbEntityListener = new LBEntityListener(this);
pm.registerEvent(Type.PLAYER_INTERACT, new LBToolListener(this), Priority.Normal, this);
final LBToolListener lbToolListener = new LBToolListener(this);
pm.registerEvent(Type.PLAYER_INTERACT, lbToolListener, Priority.Normal, this);
if (config.askRollbackAfterBan)
pm.registerEvent(Type.PLAYER_COMMAND_PREPROCESS, lbToolListener, Priority.Normal, this);
if (config.logBlockPlacings) {
pm.registerEvent(Type.BLOCK_PLACE, lbBlockListener, Priority.Monitor, this);
pm.registerEvent(Type.PLAYER_BUCKET_EMPTY, lbPlayerListener, Priority.Monitor, this);