forked from LogBlock/LogBlock
Added listener for bans to ask for rollbacks
This commit is contained in:
@@ -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)
|
||||
|
@@ -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) {}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user