diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 7a8662ab8..fa198fe45 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.UUID; import mineplex.core.common.Rank; import mineplex.core.common.util.C; @@ -23,7 +24,6 @@ import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilWorld; import mineplex.core.explosion.ExplosionEvent; -import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -1137,7 +1137,7 @@ public class Bridge extends TeamGame implements OreObsfucation // Reveal ore that are inside the explosion _ore.Explosion(event); - NautHashMap lootDrops = new NautHashMap(); + NautHashMap> lootDrops = new NautHashMap>(); // Handle block ownership for explosion if (event.getOwner() != null) @@ -1152,16 +1152,9 @@ public class Bridge extends TeamGame implements OreObsfucation cur.getType() == Material.DIAMOND_ORE) { event.GetBlocks().remove(cur); - - switch (cur.getType()) - { - case DIAMOND_ORE: - lootDrops.put(cur, Material.DIAMOND); - case COAL_ORE: - lootDrops.put(cur, Material.COAL); - default: - lootDrops.put(cur, cur.getType()); - } + lootDrops.put(cur, new HashSet()); + + lootDrops.get(cur).addAll(cur.getDrops()); } } } @@ -1176,22 +1169,16 @@ public class Bridge extends TeamGame implements OreObsfucation block.setType(Material.AIR); Location drop = block.getLocation().clone().add(.5, .5, .5); - Item item = block.getWorld().dropItem(drop, new ItemStack(lootDrops.remove(block))); - item.setMetadata("owner", new FixedMetadataValue(Manager.getPlugin(), event.getOwner().getUniqueId())); + for (ItemStack stack : lootDrops.remove(block)) + { + Item item = block.getWorld().dropItem(drop, stack); + item.setMetadata("owner", new FixedMetadataValue(Manager.getPlugin(), event.getOwner().getUniqueId())); + } } } }, 1); } - @EventHandler(priority = EventPriority.MONITOR) - public void OreReveal(BlockBreakEvent event) - { - if (event.isCancelled()) - return; - - _ore.BlockBreak(event); - } - @EventHandler(priority = EventPriority.LOW) public void BlockPlace(BlockPlaceEvent event) { @@ -1314,7 +1301,6 @@ public class Bridge extends TeamGame implements OreObsfucation } } - @SuppressWarnings("deprecation") @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void dropItem(BlockBreakEvent event) { @@ -1329,29 +1315,30 @@ public class Bridge extends TeamGame implements OreObsfucation if (event.getPlayer().getGameMode() == GameMode.CREATIVE) return; - Material drop = null; - byte data = (byte) 0; - + List drops = new ArrayList(); + for (Material mat : PLAYER_DROP_DELAY_MATERIALS) { if (event.getBlock().getType() == mat) { - drop = mat; - data = event.getBlock().getData(); + drops.addAll(event.getBlock().getDrops()); break; } } - if (drop == null) + if (drops.isEmpty()) return; - + event.setCancelled(true); event.getBlock().setType(Material.AIR); Location loc = event.getBlock().getLocation().clone().add(.5, .5, .5); - Item item = loc.getWorld().dropItem(loc, new ItemBuilder(drop, data).build()); - item.setMetadata("owner", new FixedMetadataValue(Manager.getPlugin(), event.getPlayer().getUniqueId())); + for (ItemStack item : drops) + { + Item drop = loc.getWorld().dropItem(loc, item); + drop.setMetadata("owner", new FixedMetadataValue(Manager.getPlugin(), event.getPlayer().getUniqueId())); + } } @EventHandler