Code:java Chest c = (Chest) loc.getBlock().getState(); for(ItemStack i : event.getDrops()){ c.getBlockInventory().addItem(i); } loc.getBlock().getRelative(BlockFace.NORTH).setType(Material.CHEST); Chest c2 = (Chest) loc.getBlock().getRelative(BlockFace.NORTH); for(ItemStack i : event.getDrops()){ c2.getBlockInventory().addItem(i); } } } Im trying to put Code:java event.getDrops(); but it only fills into one part of chest and rest goes on floor, how can i split the items into a double chest
MCMatters addItem(ItemStack...stacks) returns a Map<Integer, ItemStack> which will contain entries when the stack didn't fit. Something like the following pseudocode snippet should automatically attempt to dump the overflow in the second inventory. While not as efficient as you might want it to be, it will at least attempt to use all the space available. Code: foreach(ItemStack stack in drops) { Map<Integer, ItemStack> overflow = inv.addItem(stack); if(overflow is not empty) { foreach ostack in overflow inv2.addItem(ostack) } }
MCMatters Don't you know the 'foreach loop' or whether a Map 'is not empty'? Some languages use foreach, Java uses Code:java // Iteratable<E> is a Collection (List/Set) or E[]// Plus any class that manually implements Iteratablefor(E element : Iteratable<E>) is not empty is just the negation of is empty, which has a simple boolean method you can find in the Map javadocs
Code:java for(ItemStack i : event.getDrops()){Map<Integer, ItemStack> overflow = ?!;//What Here} how do i see if a inv has slots? EDIT by Moderator: merged posts, please use the edit button instead of double posting.
MCMatters addItems(i) will return the overflow Map. Then check if it's not empty, and finally loop over the values in the Map, adding them to the second inventory. All of this is simple logic / googling for the appropiate methods. Map#isEmpty() Map#values() Inventory#addItems(ItemStack...stacks)
i dont know what ur talking about! fireblast709 How do i get the items that arent able to to in the first chest ? EDIT by Moderator: merged posts, please use the edit button instead of double posting.
AdamQpzm how do i foreach ostack in overflow AdamQpzm for(ItemStack i2 : overflow.values()){ c2.getBlockInventory().addItem(i2); } fireblast709 EDIT by Moderator: merged posts, please use the edit button instead of double posting.
MCMatters A for loop is pretty simple Java, and is something that's already been answered on this thread. I'd recommend you first you learn the Java basics before trying to work with plugins. You should get a good Java book, and read the whole thing at least
MCMatters he is, don't mind him on that. Though I understand his concerns, since I had to explain it thrice. That last snippet you posted does indeed equal Code: foreach ostack in overflow { inv2.addItem(ostack) } AdamQpzmDon't worry Adam, I still love you c:
MCMatters Be fair. You asked the question, I clicked the alert, the page loaded, and then you posted your for loop. I hadn't seen it. Good to know that you ask questions which you immediately solve (meaning you probably didn't put in much effort in the first place) and then insult the people trying to help you. fireblast709 <3
Code:java int x = player.getLocation().getBlockX(); int y = player.getLocation().getBlockY(); int z = player.getLocation().getBlockZ(); World w = player.getWorld(); Location loc = new Location(w, x, y, z); Chest c = (Chest) loc.getBlock().getState(); loc.getBlock().getRelative(BlockFace.NORTH).setType(Material.CHEST); Chest c2 = (Chest) loc.getBlock().getRelative(BlockFace.NORTH); for(ItemStack i : event.getDrops()){ c.getBlockInventory().addItem(i); Map<Integer, ItemStack> overflow = c.getBlockInventory().addItem(i); if(!overflow.isEmpty()){ for(ItemStack i2 : overflow.values()){ c2.getBlockInventory().addItem(i2); } } } AdamQpzm fireblast709 that dont work, no error i just fills half the chest and the rest fall on floor EDIT by Moderator: merged posts, please use the edit button instead of double posting.
MCMatters after you have attempted to store the items in the chests. So below the Code:java for(ItemStack i : event.getDrops()){ Map<Integer, ItemStack> overflow = c.getBlockInventory().addItem(i); if(!overflow.isEmpty()) { for(ItemStack i2 : overflow.values()) { c2.getBlockInventory().addItem(i2); } }} (Also note that I removed one of the two addItem(i) calls, since this would be duplicating your items )
fireblast709 Error: Code:error [04:55:59 INFO]: nerdtron123 issued server command: /kill[04:55:59 ERROR]: Could not pass event PlayerDeathEvent to DeathChests v1.0org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:379) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.EntityPlayer.die(EntityPlayer.java:369) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:85) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.command.defaults.KillCommand.execute(KillCommand.java:33) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R4.block.CraftBlock cannot be cast to org.bukkit.block.Chest at com.enduniverse.deaths.Deaths.death(Deaths.java:34) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_11] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_11] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_11] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] ... 20 more[04:55:59 INFO]: nerdtron123 died[04:56:06 INFO]: nerdtron123 has just earned the achievement [Taking Inventory][04:57:34 INFO]: nerdtron123 issued server command: /kill[04:57:34 ERROR]: Could not pass event PlayerDeathEvent to DeathChests v1.0org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:379) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.EntityPlayer.die(EntityPlayer.java:369) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.entity.CraftLivingEntity.setHealth(CraftLivingEntity.java:85) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.command.defaults.KillCommand.execute(KillCommand.java:33) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R4.block.CraftBlock cannot be cast to org.bukkit.block.Chest at com.enduniverse.deaths.Deaths.death(Deaths.java:34) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_11] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_11] at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_11] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks] ... 20 more[04:57:34 INFO]: nerdtron123 died[04:57:53 WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 16431ms behind, skipping 328 tick(s)[04:59:06 INFO]: Stopping serverlogout [Process completed]