forked from LogBlock/LogBlock
Added dynamic tools
This commit is contained in:
@@ -135,24 +135,26 @@ public class CommandsHandler implements CommandExecutor
|
||||
msg += ", Chat";
|
||||
sender.sendMessage(ChatColor.GOLD + msg.substring(2));
|
||||
}
|
||||
} else if (command.equals("tool") || command.equals("t")) {
|
||||
} else if (config.toolsByName.get(command) != null) {
|
||||
if (sender instanceof Player) {
|
||||
final Player player = (Player)sender;
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
final Tool tool = config.toolsByName.get(command);
|
||||
final ToolData toolData = session.toolData.get(tool);
|
||||
if (args.length == 1) {
|
||||
if (logblock.hasPermission(player, "logblock.tool")) {
|
||||
giveTool(player, config.toolID);
|
||||
logblock.getSession(player.getName()).toolEnabled = true;
|
||||
if (logblock.hasPermission(player, "logblock.tools." + tool.name)) {
|
||||
giveTool(player, tool.item);
|
||||
session.toolData.get(tool).enabled = true;
|
||||
} else
|
||||
sender.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
|
||||
} else if (args[1].equalsIgnoreCase("enable") || args[1].equalsIgnoreCase("on")) {
|
||||
logblock.getSession(player.getName()).toolEnabled = true;
|
||||
toolData.enabled = true;
|
||||
player.sendMessage(ChatColor.GREEN + "Tool enabled.");
|
||||
} else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) {
|
||||
logblock.getSession(player.getName()).toolEnabled = false;
|
||||
player.getInventory().removeItem(new ItemStack(config.toolID, 1));
|
||||
toolData.enabled = false;
|
||||
player.getInventory().removeItem(new ItemStack(tool.item, 1));
|
||||
player.sendMessage(ChatColor.GREEN + "Tool disabled.");
|
||||
} else if (args[1].equalsIgnoreCase("mode")) {
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
if (args.length == 3) {
|
||||
final ToolMode mode;
|
||||
try {
|
||||
@@ -162,22 +164,21 @@ public class CommandsHandler implements CommandExecutor
|
||||
return true;
|
||||
}
|
||||
if (logblock.hasPermission(player, mode.getPermission())) {
|
||||
session.toolMode = mode;
|
||||
toolData.mode = mode;
|
||||
sender.sendMessage(ChatColor.GREEN + "Tool mode set to " + args[2]);
|
||||
} else
|
||||
sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]);
|
||||
} else
|
||||
player.sendMessage(ChatColor.RED + "No mode specified");
|
||||
} else if (args[1].equalsIgnoreCase("default")) {
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
session.toolQuery = config.toolQuery.clone();
|
||||
session.toolMode = ToolMode.LOOKUP;
|
||||
toolData.params = tool.params.clone();
|
||||
toolData.mode = tool.mode;
|
||||
sender.sendMessage(ChatColor.GREEN + "Tool set to default.");
|
||||
} else if (logblock.hasPermission(player, "logblock.lookup"))
|
||||
try {
|
||||
final QueryParams params = config.toolQuery.clone();
|
||||
final QueryParams params = tool.params.clone();
|
||||
params.parseArgs(sender, argsToList(args, 1));
|
||||
logblock.getSession(player.getName()).toolQuery = params;
|
||||
toolData.params = params;
|
||||
sender.sendMessage(ChatColor.GREEN + "Set tool query to: " + params.getTitle());
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
@@ -186,57 +187,6 @@ public class CommandsHandler implements CommandExecutor
|
||||
sender.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
|
||||
} else
|
||||
sender.sendMessage(ChatColor.RED + "You have to be a player.");
|
||||
} else if (command.equals("toolblock") || command.equals("tb")) {
|
||||
if (sender instanceof Player) {
|
||||
final Player player = (Player)sender;
|
||||
if (args.length == 1) {
|
||||
if (logblock.hasPermission(player, "logblock.toolblock")) {
|
||||
giveTool(player, config.toolblockID);
|
||||
logblock.getSession(player.getName()).toolBlockEnabled = true;
|
||||
} else
|
||||
player.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
|
||||
} else if (args[1].equalsIgnoreCase("enable") || args[1].equalsIgnoreCase("on")) {
|
||||
logblock.getSession(player.getName()).toolBlockEnabled = true;
|
||||
player.sendMessage(ChatColor.GREEN + "Tool block enabled.");
|
||||
} else if (args[1].equalsIgnoreCase("disable") || args[1].equalsIgnoreCase("off")) {
|
||||
logblock.getSession(player.getName()).toolBlockEnabled = false;
|
||||
player.getInventory().removeItem(new ItemStack(config.toolblockID, 1));
|
||||
player.sendMessage(ChatColor.GREEN + "Tool block disabled.");
|
||||
} else if (args[1].equalsIgnoreCase("mode")) {
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
if (args.length == 3) {
|
||||
final ToolMode mode;
|
||||
try {
|
||||
mode = ToolMode.valueOf(args[2].toUpperCase());
|
||||
} catch (final IllegalArgumentException ex) {
|
||||
sender.sendMessage(ChatColor.RED + "Can't find mode " + args[2]);
|
||||
return true;
|
||||
}
|
||||
if (logblock.hasPermission(player, mode.getPermission())) {
|
||||
session.toolBlockMode = mode;
|
||||
sender.sendMessage(ChatColor.GREEN + "Toolblock mode set to " + args[2]);
|
||||
} else
|
||||
sender.sendMessage(ChatColor.RED + "You aren't allowed to use mode " + args[2]);
|
||||
} else
|
||||
player.sendMessage(ChatColor.RED + "No mode specified");
|
||||
} else if (args[1].equalsIgnoreCase("default")) {
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
session.toolBlockQuery = config.toolBlockQuery.clone();
|
||||
session.toolBlockMode = ToolMode.LOOKUP;
|
||||
sender.sendMessage(ChatColor.GREEN + "Toolblock set to default.");
|
||||
} else if (logblock.hasPermission(player, "logblock.lookup"))
|
||||
try {
|
||||
final QueryParams params = config.toolBlockQuery.clone();
|
||||
params.parseArgs(sender, argsToList(args, 1));
|
||||
logblock.getSession(player.getName()).toolBlockQuery = params;
|
||||
sender.sendMessage(ChatColor.GREEN + "Set tool block query to: " + params.getTitle());
|
||||
} catch (final Exception ex) {
|
||||
sender.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
else
|
||||
sender.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
|
||||
} else
|
||||
sender.sendMessage(ChatColor.RED + "You have to be a player.");
|
||||
} else if (command.equals("hide")) {
|
||||
if (sender instanceof Player) {
|
||||
if (logblock.hasPermission(sender, "logblock.hide")) {
|
||||
|
@@ -30,10 +30,10 @@ public class Config
|
||||
public final LogKillsLevel logKillsLevel;
|
||||
public final Set<Integer> dontRollback, replaceAnyway;
|
||||
public final int rollbackMaxTime, rollbackMaxArea;
|
||||
public final QueryParams toolQuery, toolBlockQuery;
|
||||
public final HashMap<String, Tool> toolsByName;
|
||||
public final HashMap<Integer, Tool> toolsByType;
|
||||
public final int defaultDist, defaultTime;
|
||||
public final int linesPerPage, linesLimit;
|
||||
public final int toolID, toolblockID;
|
||||
public final boolean askRollbacks, askRedos, askClearLogs, askClearLogAfterRollback, askRollbackAfterBan;
|
||||
public final String banPermission;
|
||||
public final Set<Integer> hiddenPlayers, hiddenBlocks;
|
||||
@@ -43,7 +43,7 @@ public class Config
|
||||
}
|
||||
|
||||
Config(LogBlock logblock) throws DataFormatException, IOException {
|
||||
final Map<String, Object> def = new HashMap<String, Object>();
|
||||
final Map<String, Object> def = new HashMap<String, Object>(), tooldef = new HashMap<String, Object>(), tbdef = new HashMap<String, Object>(), tdef = new HashMap<String, Object>();
|
||||
def.put("version", logblock.getDescription().getVersion());
|
||||
def.put("loggedWorlds", Arrays.asList("world", "world_nether"));
|
||||
def.put("mysql.host", "localhost");
|
||||
@@ -67,10 +67,6 @@ public class Config
|
||||
def.put("rollback.maxArea", 50);
|
||||
def.put("lookup.defaultDist", 20);
|
||||
def.put("lookup.defaultTime", "30 minutes");
|
||||
def.put("lookup.toolID", 270);
|
||||
def.put("lookup.toolblockID", 7);
|
||||
def.put("lookup.toolQuery", "area 0 all sum none limit 15 desc silent");
|
||||
def.put("lookup.toolBlockQuery", "area 0 all sum none limit 15 desc silent");
|
||||
def.put("lookup.linesPerPage", 15);
|
||||
def.put("lookup.linesLimit", 1500);
|
||||
def.put("questioner.askRollbacks", true);
|
||||
@@ -79,6 +75,23 @@ public class Config
|
||||
def.put("questioner.askClearLogAfterRollback", true);
|
||||
def.put("questioner.askRollbackAfterBan", false);
|
||||
def.put("questioner.banPermission", "mcbans.ban.local");
|
||||
tdef.put("aliases", Arrays.asList("t"));
|
||||
tdef.put("leftClickBehavior", "NONE");
|
||||
tdef.put("rightClickBehavior", "TOOL");
|
||||
tdef.put("defaultEnabled", true);
|
||||
tdef.put("item", 270);
|
||||
tdef.put("params", "area 0 all sum none limit 15 desc silent");
|
||||
tdef.put("mode", "LOOKUP");
|
||||
tbdef.put("aliases", Arrays.asList("tb"));
|
||||
tbdef.put("leftClickBehavior", "TOOL");
|
||||
tbdef.put("rightClickBehavior", "BLOCK");
|
||||
tbdef.put("defaultEnabled", true);
|
||||
tbdef.put("item", 7);
|
||||
tbdef.put("params", "area 0 all sum none limit 15 desc silent");
|
||||
tbdef.put("mode", "LOOKUP");
|
||||
tooldef.put("tool", tdef);
|
||||
tooldef.put("toolblock", tbdef);
|
||||
def.put("tools", tooldef);
|
||||
final Configuration config = logblock.getConfiguration();
|
||||
config.load();
|
||||
for (final Entry<String, Object> e : def.entrySet())
|
||||
@@ -118,28 +131,8 @@ public class Config
|
||||
replaceAnyway = new HashSet<Integer>(config.getIntList("rollback.replaceAnyway", null));
|
||||
rollbackMaxTime = parseTimeSpec(config.getString("rollback.maxTime").split(" "));
|
||||
rollbackMaxArea = config.getInt("rollback.maxArea", 50);
|
||||
try {
|
||||
toolQuery = new QueryParams(logblock);
|
||||
toolQuery.prepareToolQuery = true;
|
||||
toolQuery.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString("lookup.toolQuery").split(" ")));
|
||||
} catch (final IllegalArgumentException ex) {
|
||||
throw new DataFormatException("Error at lookup.toolQuery: " + ex.getMessage());
|
||||
}
|
||||
try {
|
||||
toolBlockQuery = new QueryParams(logblock);
|
||||
toolBlockQuery.prepareToolQuery = true;
|
||||
toolBlockQuery.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString("lookup.toolBlockQuery").split(" ")));
|
||||
} catch (final IllegalArgumentException ex) {
|
||||
throw new DataFormatException("Error at lookup.toolBlockQuery: " + ex.getMessage());
|
||||
}
|
||||
defaultDist = config.getInt("lookup.defaultDist", 20);
|
||||
defaultTime = parseTimeSpec(config.getString("lookup.defaultTime").split(" "));
|
||||
toolID = config.getInt("lookup.toolID", 270);
|
||||
if (Material.getMaterial(toolID) == null || Material.getMaterial(toolID).isBlock())
|
||||
throw new DataFormatException("lookup.toolID doesn't appear to be a valid item id");
|
||||
toolblockID = config.getInt("lookup.toolblockID", 7);
|
||||
if (Material.getMaterial(toolblockID) == null || !Material.getMaterial(toolblockID).isBlock() || toolblockID == 0)
|
||||
throw new DataFormatException("lookup.toolblockID doesn't appear to be a valid block id");
|
||||
linesPerPage = config.getInt("lookup.linesPerPage", 15);
|
||||
linesLimit = config.getInt("lookup.linesLimit", 1500);
|
||||
askRollbacks = config.getBoolean("questioner.askRollbacks", true);
|
||||
@@ -148,6 +141,33 @@ public class Config
|
||||
askClearLogAfterRollback = config.getBoolean("questioner.askClearLogAfterRollback", true);
|
||||
askRollbackAfterBan = config.getBoolean("questioner.askRollbackAfterBan", false);
|
||||
banPermission = config.getString("questioner.banPermission");
|
||||
final List<String> toolNames = config.getKeys("tools");
|
||||
System.out.println(toolNames.size());
|
||||
final List<Tool> tools = new ArrayList<Tool>();
|
||||
for (final String toolName : toolNames)
|
||||
try {
|
||||
final List<String> aliases = config.getStringList("tools." + toolName + ".aliases", null);
|
||||
final ToolBehavior leftClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".leftClickBehavior"));
|
||||
final ToolBehavior rightClickBehavior = ToolBehavior.valueOf(config.getString("tools." + toolName + ".rightClickBehavior"));
|
||||
final boolean defaultEnabled = config.getBoolean("tools." + toolName + ".defaultEnabled", false);
|
||||
final int item = config.getInt("tools." + toolName + ".item", 0);
|
||||
final QueryParams params = new QueryParams(logblock);
|
||||
params.prepareToolQuery = true;
|
||||
params.parseArgs(new ConsoleCommandSender(logblock.getServer()), Arrays.asList(config.getString("tools." + toolName + ".params").split(" ")));
|
||||
final ToolMode mode = ToolMode.valueOf(config.getString("tools." + toolName + ".mode"));
|
||||
tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode));
|
||||
} catch (final Exception ex) {
|
||||
ex.printStackTrace();
|
||||
throw new DataFormatException("Error at parsing tool '" + toolName + "': " + ex.getMessage());
|
||||
}
|
||||
toolsByName = new HashMap<String, Tool>();
|
||||
toolsByType = new HashMap<Integer, Tool>();
|
||||
for (final Tool tool : tools) {
|
||||
toolsByType.put(tool.item, tool);
|
||||
toolsByName.put(tool.name, tool);
|
||||
for (final String alias : tool.aliases)
|
||||
toolsByName.put(alias, tool);
|
||||
}
|
||||
final List<String> worldNames = config.getStringList("loggedWorlds", null);
|
||||
worlds = new HashMap<Integer, WorldConfig>();
|
||||
if (worldNames == null || worldNames.size() == 0)
|
||||
|
@@ -16,16 +16,14 @@ class LBToolListener extends PlayerListener
|
||||
{
|
||||
private final CommandsHandler handler;
|
||||
private final LogBlock logblock;
|
||||
private final int toolID;
|
||||
private final int toolblockID;
|
||||
private final Map<Integer, Tool> toolsByType;
|
||||
private final Map<Integer, WorldConfig> worlds;
|
||||
|
||||
LBToolListener(LogBlock logblock) {
|
||||
this.logblock = logblock;
|
||||
handler = logblock.getCommandsHandler();
|
||||
toolID = logblock.getConfig().toolID;
|
||||
toolblockID = logblock.getConfig().toolblockID;
|
||||
worlds = logblock.getConfig().worlds;
|
||||
toolsByType = logblock.getConfig().toolsByType;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -33,45 +31,43 @@ class LBToolListener extends PlayerListener
|
||||
if (!event.isCancelled() && event.getMaterial() != null) {
|
||||
final Action action = event.getAction();
|
||||
final int type = event.getMaterial().getId();
|
||||
if (type == toolID && action == Action.RIGHT_CLICK_BLOCK || type == toolblockID && (action == Action.LEFT_CLICK_BLOCK || action == Action.RIGHT_CLICK_BLOCK)) {
|
||||
final Player player = event.getPlayer();
|
||||
final Session session = logblock.getSession(player.getName());
|
||||
if (type == toolID && session.toolEnabled && logblock.hasPermission(player, "logblock.tool") || type == toolblockID && session.toolBlockEnabled && logblock.hasPermission(player, "logblock.toolblock"))
|
||||
if (worlds.get(player.getWorld().getName().hashCode()) != null) {
|
||||
final Block block = event.getClickedBlock();
|
||||
if (!(type == toolID && block.getTypeId() == 26))
|
||||
event.setCancelled(true);
|
||||
final QueryParams params = type == toolID ? session.toolQuery : session.toolBlockQuery;
|
||||
final ToolMode mode = type == toolID ? session.toolMode : session.toolBlockMode;
|
||||
params.loc = null;
|
||||
params.sel = null;
|
||||
if (type == toolblockID && action == Action.RIGHT_CLICK_BLOCK)
|
||||
params.setLocation(block.getRelative(event.getBlockFace()).getLocation());
|
||||
else if (block.getTypeId() != 54 || params.radius != 0)
|
||||
final Tool tool = toolsByType.get(type);
|
||||
final Player player = event.getPlayer();
|
||||
if (tool != null && (action == Action.RIGHT_CLICK_BLOCK || action == Action.LEFT_CLICK_BLOCK) && worlds.containsKey(player.getWorld().getName().hashCode()) && logblock.hasPermission(player, "logblock.tools." + tool.name)) {
|
||||
final ToolBehavior behavior = action == Action.RIGHT_CLICK_BLOCK ? tool.rightClickBehavior : tool.leftClickBehavior;
|
||||
final ToolData toolData = logblock.getSession(player.getName()).toolData.get(tool);
|
||||
if (behavior != ToolBehavior.NONE && toolData.enabled) {
|
||||
final Block block = event.getClickedBlock();
|
||||
final QueryParams params = toolData.params;
|
||||
params.loc = null;
|
||||
params.sel = null;
|
||||
if (behavior == ToolBehavior.BLOCK)
|
||||
params.setLocation(block.getRelative(event.getBlockFace()).getLocation());
|
||||
else if (block.getTypeId() != 54 || tool.params.radius != 0)
|
||||
params.setLocation(block.getLocation());
|
||||
else {
|
||||
for (final BlockFace face : new BlockFace[]{BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST})
|
||||
if (block.getRelative(face).getTypeId() == 54)
|
||||
params.setSelection(new CuboidSelection(event.getPlayer().getWorld(), block.getLocation(), block.getRelative(face).getLocation()));
|
||||
|
||||
if (params.sel == null)
|
||||
params.setLocation(block.getLocation());
|
||||
else {
|
||||
for (final BlockFace face : new BlockFace[]{BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST, BlockFace.WEST})
|
||||
if (block.getRelative(face).getTypeId() == 54)
|
||||
params.setSelection(new CuboidSelection(player.getWorld(), block.getLocation(), block.getRelative(face).getLocation()));
|
||||
if (params.sel == null)
|
||||
params.setLocation(block.getLocation());
|
||||
}
|
||||
try {
|
||||
if (mode == ToolMode.ROLLBACK)
|
||||
handler.new CommandRollback(player, params, true);
|
||||
else if (mode == ToolMode.REDO)
|
||||
handler.new CommandRedo(player, params, true);
|
||||
else if (mode == ToolMode.CLEARLOG)
|
||||
handler.new CommandClearLog(player, params, true);
|
||||
else if (mode == ToolMode.WRITELOGFILE)
|
||||
handler.new CommandWriteLogFile(player, params, true);
|
||||
else
|
||||
handler.new CommandLookup(player, params, true);
|
||||
} catch (final Exception ex) {
|
||||
player.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
} else
|
||||
player.sendMessage("This world isn't logged");
|
||||
}
|
||||
try {
|
||||
if (toolData.mode == ToolMode.ROLLBACK)
|
||||
handler.new CommandRollback(player, params, true);
|
||||
else if (toolData.mode == ToolMode.REDO)
|
||||
handler.new CommandRedo(player, params, true);
|
||||
else if (toolData.mode == ToolMode.CLEARLOG)
|
||||
handler.new CommandClearLog(player, params, true);
|
||||
else if (toolData.mode == ToolMode.WRITELOGFILE)
|
||||
handler.new CommandWriteLogFile(player, params, true);
|
||||
else
|
||||
handler.new CommandLookup(player, params, true);
|
||||
} catch (final Exception ex) {
|
||||
player.sendMessage(ChatColor.RED + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -1,19 +1,31 @@
|
||||
package de.diddiz.LogBlock;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Session
|
||||
{
|
||||
public QueryParams lastQuery = null;
|
||||
public boolean toolEnabled = true;
|
||||
public QueryParams toolQuery;
|
||||
public ToolMode toolMode;
|
||||
public boolean toolBlockEnabled = true;
|
||||
public QueryParams toolBlockQuery;
|
||||
public ToolMode toolBlockMode;
|
||||
public LookupCacheElement[] lookupCache = null;
|
||||
public int page = 1;
|
||||
public Map<Tool, ToolData> toolData;
|
||||
|
||||
Session(LogBlock logblock) {
|
||||
toolQuery = logblock.getConfig().toolQuery.clone();
|
||||
toolBlockQuery = logblock.getConfig().toolBlockQuery.clone();
|
||||
toolData = new HashMap<Tool, ToolData>();
|
||||
for (final Tool tool : logblock.getConfig().toolsByType.values())
|
||||
toolData.put(tool, new ToolData(tool));
|
||||
}
|
||||
}
|
||||
|
||||
class ToolData
|
||||
{
|
||||
boolean enabled;
|
||||
QueryParams params;
|
||||
ToolMode mode;
|
||||
|
||||
ToolData(Tool tool) {
|
||||
enabled = tool.defaultEnabled;
|
||||
params = tool.params.clone();
|
||||
mode = tool.mode;
|
||||
}
|
||||
}
|
||||
|
29
src/de/diddiz/LogBlock/Tool.java
Normal file
29
src/de/diddiz/LogBlock/Tool.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package de.diddiz.LogBlock;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Tool
|
||||
{
|
||||
public final String name;
|
||||
public final List<String> aliases;
|
||||
public final ToolBehavior leftClickBehavior, rightClickBehavior;
|
||||
public final boolean defaultEnabled;
|
||||
public final int item;
|
||||
public final QueryParams params;
|
||||
public final ToolMode mode;
|
||||
|
||||
public Tool(String name, List<String> aliases, ToolBehavior leftClickBehavior, ToolBehavior rightClickBehavior, boolean defaultEnabled, int item, QueryParams params, ToolMode mode) {
|
||||
this.name = name;
|
||||
this.aliases = aliases;
|
||||
this.leftClickBehavior = leftClickBehavior;
|
||||
this.rightClickBehavior = rightClickBehavior;
|
||||
this.defaultEnabled = defaultEnabled;
|
||||
this.item = item;
|
||||
this.params = params;
|
||||
this.mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
enum ToolBehavior {
|
||||
TOOL, BLOCK, NONE
|
||||
}
|
@@ -184,17 +184,17 @@ public class BukkitUtils
|
||||
return y;
|
||||
}
|
||||
|
||||
public static int modifyContainer(BlockState b, ItemStack item) throws Exception {
|
||||
if (!(b instanceof ContainerBlock))
|
||||
throw new Exception("No container");
|
||||
final Inventory inv = ((ContainerBlock)b).getInventory();
|
||||
if (item.getAmount() < 0) {
|
||||
item.setAmount(-item.getAmount());
|
||||
final ItemStack tmp = inv.removeItem(item).get(0);
|
||||
return tmp != null ? tmp.getAmount() : 0;
|
||||
} else if (item.getAmount() > 0) {
|
||||
final ItemStack tmp = inv.addItem(item).get(0);
|
||||
return tmp != null ? tmp.getAmount() : 0;
|
||||
public static int modifyContainer(BlockState b, ItemStack item) {
|
||||
if (b instanceof ContainerBlock) {
|
||||
final Inventory inv = ((ContainerBlock)b).getInventory();
|
||||
if (item.getAmount() < 0) {
|
||||
item.setAmount(-item.getAmount());
|
||||
final ItemStack tmp = inv.removeItem(item).get(0);
|
||||
return tmp != null ? tmp.getAmount() : 0;
|
||||
} else if (item.getAmount() > 0) {
|
||||
final ItemStack tmp = inv.addItem(item).get(0);
|
||||
return tmp != null ? tmp.getAmount() : 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user