Fixed handling of double chests and cleaned WorldEditListener up a bit

This commit is contained in:
zml2008 2012-03-20 17:53:15 -07:00
parent 79f2d68e60
commit 86011a0d0d
2 changed files with 21 additions and 19 deletions

View File

@ -27,6 +27,7 @@ import com.sk89q.worldedit.WorldEdit;
import com.sk89q.worldedit.util.TreeGenerator; import com.sk89q.worldedit.util.TreeGenerator;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockState; import org.bukkit.block.BlockState;
import org.bukkit.block.Chest;
import org.bukkit.block.Furnace; import org.bukkit.block.Furnace;
import org.bukkit.block.CreatureSpawner; import org.bukkit.block.CreatureSpawner;
import org.bukkit.block.Sign; import org.bukkit.block.Sign;
@ -388,6 +389,9 @@ public class BukkitWorld extends LocalWorld {
org.bukkit.inventory.InventoryHolder chest = (org.bukkit.inventory.InventoryHolder) state; org.bukkit.inventory.InventoryHolder chest = (org.bukkit.inventory.InventoryHolder) state;
Inventory inven = chest.getInventory(); Inventory inven = chest.getInventory();
if (chest instanceof Chest) {
inven = ((Chest) chest).getBlockInventory();
}
inven.clear(); inven.clear();
return true; return true;
} }
@ -697,6 +701,9 @@ public class BukkitWorld extends LocalWorld {
org.bukkit.inventory.InventoryHolder container = (org.bukkit.inventory.InventoryHolder) state; org.bukkit.inventory.InventoryHolder container = (org.bukkit.inventory.InventoryHolder) state;
Inventory inven = container.getInventory(); Inventory inven = container.getInventory();
if (container instanceof Chest) {
inven = ((Chest) container).getBlockInventory();
}
int size = inven.getSize(); int size = inven.getSize();
BaseItemStack[] contents = new BaseItemStack[size]; BaseItemStack[] contents = new BaseItemStack[size];
@ -737,6 +744,9 @@ public class BukkitWorld extends LocalWorld {
org.bukkit.inventory.InventoryHolder chest = (org.bukkit.inventory.InventoryHolder) state; org.bukkit.inventory.InventoryHolder chest = (org.bukkit.inventory.InventoryHolder) state;
Inventory inven = chest.getInventory(); Inventory inven = chest.getInventory();
if (chest instanceof Chest) {
inven = ((Chest) chest).getBlockInventory();
}
int size = inven.getSize(); int size = inven.getSize();
for (int i = 0; i < size; ++i) { for (int i = 0; i < size; ++i) {

View File

@ -44,20 +44,20 @@ import java.util.regex.Pattern;
* Handles all events thrown in relation to a Player * Handles all events thrown in relation to a Player
*/ */
public class WorldEditListener implements Listener { public class WorldEditListener implements Listener {
private WorldEditPlugin plugin; private WorldEditPlugin plugin;
private boolean ignoreLeftClickAir = false; private boolean ignoreLeftClickAir = false;
private final static Pattern cuipattern = Pattern.compile("u00a74u00a75u00a73u00a74([^\\|]*)\\|?(.*)"); private final static Pattern cuipattern = Pattern.compile("u00a74u00a75u00a73u00a74([^\\|]*)\\|?(.*)");
/** /**
* Called when a player plays an animation, such as an arm swing * Called when a player plays an animation, such as an arm swing
* *
* @param event Relevant event details * @param event Relevant event details
*/ */
/** /**
* Construct the object; * Construct the object;
* *
* @param plugin * @param plugin
*/ */
public WorldEditListener(WorldEditPlugin plugin) { public WorldEditListener(WorldEditPlugin plugin) {
@ -84,19 +84,15 @@ public class WorldEditListener implements Listener {
* *
* @param event Relevant event details * @param event Relevant event details
*/ */
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
if (event.isCancelled()) {
return;
}
String[] split = event.getMessage().split(" "); String[] split = event.getMessage().split(" ");
if (split.length > 0) { if (split.length > 0) {
split = plugin.getWorldEdit().commandDetection(split); split = plugin.getWorldEdit().commandDetection(split);
split[0] = "/" + split[0]; split[0] = "/" + split[0];
} }
final String newMessage = StringUtil.joinString(split, " "); final String newMessage = StringUtil.joinString(split, " ");
if (!newMessage.equals(event.getMessage())) { if (!newMessage.equals(event.getMessage())) {
@ -104,7 +100,7 @@ public class WorldEditListener implements Listener {
plugin.getServer().getPluginManager().callEvent(event); plugin.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled()) {
if (event.getMessage().length() > 0) { if (event.getMessage().length() > 0) {
plugin.getServer().dispatchCommand(event.getPlayer(), plugin.getServer().dispatchCommand(event.getPlayer(),
event.getMessage().substring(1)); event.getMessage().substring(1));
} }
event.setCancelled(true); event.setCancelled(true);
@ -122,7 +118,7 @@ public class WorldEditListener implements Listener {
if (event.useItemInHand() == Result.DENY) { if (event.useItemInHand() == Result.DENY) {
return; return;
} }
final LocalPlayer player = plugin.wrapPlayer(event.getPlayer()); final LocalPlayer player = plugin.wrapPlayer(event.getPlayer());
final LocalWorld world = player.getWorld(); final LocalWorld world = player.getWorld();
final WorldEdit we = plugin.getWorldEdit(); final WorldEdit we = plugin.getWorldEdit();
@ -181,25 +177,21 @@ public class WorldEditListener implements Listener {
} }
} }
@EventHandler @EventHandler(ignoreCancelled = true)
public void onPlayerChat(PlayerChatEvent event) { public void onPlayerChat(PlayerChatEvent event) {
if (event.isCancelled()) {
return;
}
Matcher matcher = cuipattern.matcher(event.getMessage()); Matcher matcher = cuipattern.matcher(event.getMessage());
if (matcher.find()) { if (matcher.find()) {
String type = matcher.group(1); String type = matcher.group(1);
String args = matcher.group(2); String args = matcher.group(2);
if( type.equals("v") ) { if( type.equals("v") ) {
try { try {
plugin.getSession(event.getPlayer()).setCUIVersion(Integer.parseInt(args)); plugin.getSession(event.getPlayer()).setCUIVersion(Integer.parseInt(args));
event.setCancelled(true); event.setCancelled(true);
} catch( NumberFormatException e ) { } catch(NumberFormatException ignore) {
} }
} }
} }
} }
} }