diff --git a/TwosideKeeper.jar b/TwosideKeeper.jar index 2f1fd99..9ed8932 100644 Binary files a/TwosideKeeper.jar and b/TwosideKeeper.jar differ diff --git a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java index 44f9c1d..d415e19 100644 --- a/src/sig/plugin/TwosideKeeper/TwosideKeeper.java +++ b/src/sig/plugin/TwosideKeeper/TwosideKeeper.java @@ -22,6 +22,7 @@ import org.bukkit.WorldCreator; import org.bukkit.attribute.Attribute; import org.bukkit.block.Block; import org.bukkit.block.Chest; +import org.bukkit.block.DoubleChest; import org.bukkit.block.Sign; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -1507,13 +1508,15 @@ public class TwosideKeeper extends JavaPlugin implements Listener { } } } else - if (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && !GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType())) { + if (ev.getPlayer().isSneaking() && ev.getAction()==Action.RIGHT_CLICK_BLOCK && GenericFunctions.isDumpableContainer(ev.getClickedBlock().getType())) { //This is an attempt to insert an item cube into a container. See what item cube we're holding. - ev.setCancelled(true); if (ev.getPlayer().getInventory().getItemInMainHand().hasItemMeta() && ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().hasLore() && ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().getLore().size()==4 && ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().getLore().get(3).contains(ChatColor.DARK_PURPLE+"ID#")) { + + ev.setCancelled(true); + ev.getPlayer().updateInventory(); int itemcube_id=Integer.parseInt(ev.getPlayer().getInventory().getItemInMainHand().getItemMeta().getLore().get(3).split("#")[1]); int size=0; if (ev.getPlayer().getInventory().getItemInMainHand().getType()==Material.CHEST) { @@ -1524,7 +1527,62 @@ public class TwosideKeeper extends JavaPlugin implements Listener { //Now that we have the item cube. Dump whatever contents we can into the container. //Get the inventory of the chest we are inserting into. - //Chest c = (Chest)ev.getClickedBlock().getState(); + Chest c = (Chest)ev.getClickedBlock().getState(); + Inventory chest_inventory = c.getBlockInventory(); + if (c.getInventory().getHolder() instanceof DoubleChest) { + chest_inventory = ((DoubleChest)c.getInventory().getHolder()).getInventory(); + + log("This is a double chest",5); + } + + //Get the inventory we are dumping out. + Inventory virtualinventory = ItemCube.getViewingItemCubeInventory(itemcube_id, ev.getPlayer()); + if (virtualinventory==null) { + //Then we will make one. + virtualinventory = Bukkit.createInventory(ev.getPlayer(), size); + //Load up this inventory. + List items = itemCube_loadConfig(itemcube_id); + for (int i=0;i save_items = new ArrayList(); + + for (int i=0;i0) { + save_items.set(i,(ItemStack)result.get(0)); + fit=false; + log("This item "+(ItemStack)result.get(0)+" (slot "+i+") could not fit!",4); + } else { + count++; + } + } + } + + //The rest of the hashmap goes back in the original inventory. + if (!fit) { + ev.getPlayer().sendMessage(ChatColor.RED+"Attempted to store your items, not all of them could fit!"+ChatColor.WHITE+" Stored "+ChatColor.AQUA+count+ChatColor.WHITE+" items."); + } else { + ev.getPlayer().sendMessage("Stored "+ChatColor.AQUA+count+ChatColor.WHITE+" items inside the chest."); + } + virtualinventory.clear(); + + + //Save the Item Cube. + itemCube_saveConfig(itemcube_id,save_items); } } if (b!=null && (b.getType() == Material.SIGN ||