From 55efcc454c5d377283167b215b8b3381b5aa74ee Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:46:18 +0200 Subject: [PATCH 01/13] Update TeleportationSequence.java --- src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java index 35f0c8b6a..6be8211d7 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/TeleportationSequence.java @@ -82,7 +82,7 @@ public final class TeleportationSequence { } destination.getWorld().spawnParticle(Particle.PORTAL,new Location(destination.getWorld(), destination.getX(), destination.getY() + 1, destination.getZ()),progress * 2, 0.2F, 0.8F, 0.2F ); - destination.getWorld().playSound(destination, Sound.ENTITY_BLAZE_DEATH, 2F, 1.4F); + destination.getWorld().playSound(destination, Sound.ENTITY_BLAZE_DEATH, 1F, 1.4F); SlimefunPlugin.getUtilities().teleporterUsers.remove(uuid); } else { @@ -93,7 +93,7 @@ public final class TeleportationSequence { subtitle.send(TitleType.SUBTITLE, p); source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F); - source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1.7F, 0.6F); + source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1F, 0.6F); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> updateProgress(uuid, speed, progress + speed, source, destination, resistance), 10L); } From a30650d16d62cde236024941b22200d33962b0df Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:51:36 +0200 Subject: [PATCH 02/13] Update ArmorListener.java --- src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java index 1476ae16a..a3f596492 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ArmorListener.java @@ -59,7 +59,7 @@ public class ArmorListener implements Listener { && e.getCause() == DamageCause.FALL ) { e.setCancelled(true); - p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 2F, 2F); + p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 1F, 2F); p.setVelocity(new Vector(0.0, 0.7, 0.0)); for (Entity n: p.getNearbyEntities(4, 4, 4)) { if (n instanceof LivingEntity && !n.getUniqueId().equals(p.getUniqueId())) { From 7c8dfac1b488adc0e61c403c401390525d281f7e Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:54:11 +0200 Subject: [PATCH 03/13] Update RitualAnimation.java --- .../mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java index d7c9655b1..4d10cc5f4 100644 --- a/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java +++ b/src/me/mrCookieSlime/Slimefun/ancient_altar/RitualAnimation.java @@ -110,7 +110,7 @@ public class RitualAnimation implements Runnable { else { particles.add(pedestal.getLocation().add(0.5, 1.5, 0.5)); items.add(AncientAltarListener.fixItemStack(item.getItemStack(), item.getCustomName())); - pedestal.getWorld().playSound(pedestal.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); + pedestal.getWorld().playSound(pedestal.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1F, 2F); try { l.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE,pedestal.getLocation().add(0.5, 1.5, 0.5),16, 0.3F, 0.2F, 0.3F); @@ -132,7 +132,7 @@ public class RitualAnimation implements Runnable { // This should re-enable altar blocks on craft failure. utilities.altarinuse.remove(altar.getLocation()); - l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 5F, 1F); + l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR, 1F, 1F); itemLock.clear(); altars.remove(altar); } From 445312e31f2a14f565a5a5aa7ec519a6fbee3fd4 Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Thu, 3 Oct 2019 22:57:41 +0200 Subject: [PATCH 04/13] Update MagnetTask.java --- src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java index 0853a018d..f7a724c88 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java @@ -18,7 +18,7 @@ public class MagnetTask extends SlimefunTask { for (Entity item: Bukkit.getPlayer(uuid).getNearbyEntities(6D, 6D, 6D)) { if (item instanceof Item && !item.hasMetadata("no_pickup") && ((Item) item).getPickupDelay() <= 0) { item.teleport(Bukkit.getPlayer(uuid).getEyeLocation()); - Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5L, 2L); + Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1L, 2L); } } } From 9aab707291baed533a6f6de934c4f7f4223d3807 Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Thu, 3 Oct 2019 23:08:41 +0200 Subject: [PATCH 05/13] Update MagnetTask.java --- src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java index f7a724c88..ae2e4d11a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/tasks/MagnetTask.java @@ -18,7 +18,7 @@ public class MagnetTask extends SlimefunTask { for (Entity item: Bukkit.getPlayer(uuid).getNearbyEntities(6D, 6D, 6D)) { if (item instanceof Item && !item.hasMetadata("no_pickup") && ((Item) item).getPickupDelay() <= 0) { item.teleport(Bukkit.getPlayer(uuid).getEyeLocation()); - Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1L, 2L); + Bukkit.getPlayer(uuid).getWorld().playSound(Bukkit.getPlayer(uuid).getEyeLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1F, 2F); } } } From 5ac49207568de1a58adfd03318ccce982e03cdda Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 11:14:27 +0100 Subject: [PATCH 06/13] Some performance improvements --- .../Slimefun/GPS/GPSNetwork.java | 11 +++--- .../Objects/SlimefunItem/SlimefunItem.java | 3 +- .../Slimefun/api/BlockInfoConfig.java | 2 +- .../Slimefun/api/BlockStorage.java | 4 +-- .../Slimefun/api/TickerTask.java | 24 ++++++------- .../Slimefun/api/item_transport/CargoNet.java | 34 +++++++++---------- .../Slimefun/listeners/BackpackListener.java | 4 +-- .../Slimefun/listeners/ToolListener.java | 12 +++---- 8 files changed, 44 insertions(+), 50 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 5f66d4094..64ec53eea 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -36,14 +36,11 @@ public class GPSNetwork { private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43}; public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) { - Set set = new HashSet<>(); - if (transmitters.containsKey(uuid)) set = transmitters.get(uuid); - + Set set = transmitters.getOrDefault(uuid, new HashSet<>()); + if (status == NetworkStatus.ONLINE) { - if (!set.contains(l)) { - set.add(l); + if (set.add(l)) transmitters.put(uuid, set); - } } else { set.remove(l); @@ -215,7 +212,7 @@ public class GPSNetwork { } public Set getTransmitters(UUID uuid) { - return transmitters.containsKey(uuid) ? transmitters.get(uuid): new HashSet<>(); + return transmitters.getOrDefault(uuid, new HashSet<>()); } public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java index 2cec7abbf..7a0a9ef28 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunItem.java @@ -436,8 +436,7 @@ public class SlimefunItem { } public static Set getHandlers(String codeid) { - if (SlimefunPlugin.getUtilities().itemHandlers.containsKey(codeid)) return SlimefunPlugin.getUtilities().itemHandlers.get(codeid); - else return new HashSet<>(); + return SlimefunPlugin.getUtilities().itemHandlers.getOrDefault(codeid, new HashSet<>()); } public static void setRadioactive(ItemStack item) { diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java b/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java index 122724dc0..d0ccd73f9 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockInfoConfig.java @@ -45,7 +45,7 @@ public class BlockInfoConfig extends Config { private void checkPath(String path) { - if (path.contains(".")) { + if (path.indexOf('.') != -1) { throw new UnsupportedOperationException("BlockInfoConfig only supports Map (path: " + path + ")"); } } diff --git a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java index fac9df397..984bc4a58 100644 --- a/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java +++ b/src/me/mrCookieSlime/Slimefun/api/BlockStorage.java @@ -526,7 +526,7 @@ public class BlockStorage { } private static void refreshCache(BlockStorage storage, Location l, String key, String value, boolean updateTicker) { - Config cfg = storage.blocksCache.containsKey(key) ? storage.blocksCache.get(key): new Config(path_blocks + l.getWorld().getName() + '/' + key + ".sfb"); + Config cfg = storage.blocksCache.getOrDefault(key, new Config(path_blocks + l.getWorld().getName() + '/' + key + ".sfb")); cfg.setValue(serializeLocation(l), value); storage.blocksCache.put(key, cfg); @@ -540,7 +540,7 @@ public class BlockStorage { locations.add(l); SlimefunPlugin.getUtilities().tickingChunks.put(chunkString, locations); - if (!SlimefunPlugin.getUtilities().loadedTickers.contains(chunkString)) SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); + SlimefunPlugin.getUtilities().loadedTickers.add(chunkString); } } } diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 1f82af41d..31bbad429 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -129,18 +129,17 @@ public class TickerTask implements Runnable { else { long timestamp3 = System.currentTimeMillis(); item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l)); - - machineTimings.put(item.getID(), (machineTimings.containsKey(item.getID()) ? machineTimings.get(item.getID()): 0) + (System.currentTimeMillis() - timestamp3)); - chunkItemCount.put(c, (chunkItemCount.containsKey(c) ? chunkItemCount.get(c): 0) + 1); - machineCount.put(item.getID(), (machineCount.containsKey(item.getID()) ? machineCount.get(item.getID()): 0) + 1); + + machineTimings.merge(item.getID(), (System.currentTimeMillis() - timestamp3), Long::sum); + chunkItemCount.put(c, (chunkItemCount.getOrDefault(c, 0)) + 1); + machineCount.put(item.getID(), (machineCount.getOrDefault(item.getID(), 0)) + 1); blockTimings.put(l, System.currentTimeMillis() - timestamp3); } tickers.add(item.getBlockTicker()); } catch (Exception x) { - int errors = 0; - if (bugged.containsKey(l)) errors = bugged.get(l); + int errors = bugged.getOrDefault(l, 0); errors++; - + if (errors == 1) { // Generate a new Error-Report new ErrorReport(x, this, l, item); @@ -248,7 +247,7 @@ public class TickerTask implements Runnable { for (Map.Entry entry: chunkTimings.entrySet()) { if (!chunksSkipped.contains(entry.getKey())) { - if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.containsKey(entry.getKey()) ? chunkItemCount.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); + if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.getOrDefault(entry.getKey(), 0)) + "x &7(" + entry.getValue() + "ms)"); else hidden++; } } @@ -266,7 +265,8 @@ public class TickerTask implements Runnable { int hidden = 0; for (Map.Entry entry: chunkTimings.entrySet()) { if (!chunksSkipped.contains(entry.getKey())) { - if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.containsKey(entry.getKey()) ? chunkItemCount.get(entry.getKey()): 0) + "x &7(" + entry.getValue() + "ms)"); + if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - " + + (chunkItemCount.getOrDefault(entry.getKey(), 0)) + "x &7(" + entry.getValue() + "ms)"); else hidden++; } } @@ -275,15 +275,15 @@ public class TickerTask implements Runnable { } public long getTimings(Block b) { - return blockTimings.containsKey(b.getLocation()) ? blockTimings.get(b.getLocation()): 0L; + return blockTimings.getOrDefault(b.getLocation(), 0L); } public long getTimings(String item) { - return machineTimings.containsKey(item) ? machineTimings.get(item): 0L; + return machineTimings.getOrDefault(item, 0L); } public long getTimings(Chunk c) { - return chunkTimings.containsKey(c.toString()) ? chunkTimings.get(c.toString()): 0L; + return chunkTimings.getOrDefault(c.toString(), 0L); } public void addBlockTimings(Location l, long time) { diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index f348732e0..6c90ccab8 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -155,30 +155,30 @@ public class CargoNet extends Network { final Map> output = new HashMap<>(); + Set combinedOutputNodes = outputNodes; + outputNodes.addAll(advancedOutputNodes); - for (Location outputNode: outputNodes) { + List list = new ArrayList<>(); + int lastFrequency = -1; + for (Location outputNode: combinedOutputNodes) { Integer frequency = getFrequency(outputNode); - if (!output.containsKey(frequency)) { - output.put(frequency, new ArrayList()); + list.add(outputNode); + + if (frequency != lastFrequency) { + output.merge(frequency, list, (list1, list2) -> { list1.addAll(list2); return list1; }); + list.clear(); } - output.get(frequency).add(outputNode); - } - for (Location outputNode: advancedOutputNodes) { - Integer frequency = getFrequency(outputNode); - if (!output.containsKey(frequency)) { - output.put(frequency, new ArrayList()); - } - output.get(frequency).add(outputNode); + + lastFrequency = frequency; } //Chest Terminal Stuff final Set providers = new HashSet<>(); - final Set destinations; - if (output.containsKey(16)) { - destinations = new HashSet<>(output.get(16)); - } else { - destinations = new HashSet<>(); - } + final Set destinations = new HashSet<>(); + List output16 = output.get(16); + if (output16 != null) + destinations.addAll(output16); + for (Location inputNode: inputNodes) { int frequency = getFrequency(inputNode); if (frequency == 16) { diff --git a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java index 49eb3ce3e..618e9724f 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/BackpackListener.java @@ -57,8 +57,8 @@ public class BackpackListener implements Listener { @EventHandler public void onClick(InventoryClickEvent e) { - if (SlimefunPlugin.getUtilities().backpack.containsKey(e.getWhoClicked().getUniqueId())) { - ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId()); + ItemStack item = SlimefunPlugin.getUtilities().backpack.get(e.getWhoClicked().getUniqueId()); + if (item != null) { if (e.getClick() == ClickType.NUMBER_KEY) { ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); SlimefunItem sfItem = SlimefunItem.getByItem(hotbarItem); diff --git a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java index cb5e5e406..95693ed56 100644 --- a/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java +++ b/src/me/mrCookieSlime/Slimefun/listeners/ToolListener.java @@ -54,8 +54,8 @@ public class ToolListener implements Listener { sensitiveMaterials.add(Material.STONE_PRESSURE_PLATE); sensitiveMaterials.add(Material.LIGHT_WEIGHTED_PRESSURE_PLATE); sensitiveMaterials.add(Material.HEAVY_WEIGHTED_PRESSURE_PLATE); - Tag.SAPLINGS.getValues().forEach(sensitiveMaterials::add); - Tag.WOODEN_PRESSURE_PLATES.getValues().forEach(sensitiveMaterials::add); + sensitiveMaterials.addAll(Tag.SAPLINGS.getValues()); + sensitiveMaterials.addAll(Tag.WOODEN_PRESSURE_PLATES.getValues()); } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @@ -97,11 +97,9 @@ public class ToolListener implements Listener { public void onBlockPlace(BlockPlaceEvent e) { ItemStack item = e.getItemInHand(); - if (utilities.cancelPlace.contains(e.getPlayer().getUniqueId())) { + if (utilities.cancelPlace.remove(e.getPlayer().getUniqueId())) e.setCancelled(true); - utilities.cancelPlace.remove(e.getPlayer().getUniqueId()); - } - + if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BASIC_CIRCUIT_BOARD, true)) e.setCancelled(true); else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.ADVANCED_CIRCUIT_BOARD, true)) e.setCancelled(true); @@ -187,7 +185,7 @@ public class ToolListener implements Listener { public void onBlockBreak(BlockBreakEvent e) { boolean allow = true; List drops = new ArrayList<>(); - ItemStack item = e.getPlayer().getEquipment().getItemInMainHand(); + ItemStack item = e.getPlayer().getInventory().getItemInMainHand(); int fortune = 1; Block block2 = e.getBlock().getRelative(BlockFace.UP); From 27521167a884c31cc3009f3646ec8cd364ac6f41 Mon Sep 17 00:00:00 2001 From: J3fftw1 <44972470+J3fftw1@users.noreply.github.com> Date: Fri, 4 Oct 2019 13:02:06 +0200 Subject: [PATCH 07/13] Update InfusedHopper.java --- .../Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java index 23c35c62a..b078f0e5a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/InfusedHopper.java @@ -45,7 +45,7 @@ public class InfusedHopper extends SimpleSlimefunItem { } if (sound) { - b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 5F, 2F); + b.getWorld().playSound(b.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 1F, 2F); } } From bcb79afc9cf8d6f7c450f8050e3b37833a0cf7ee Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:27:24 +0100 Subject: [PATCH 08/13] TimerTask cleanup --- .../Slimefun/api/TickerTask.java | 109 ++++++++---------- 1 file changed, 48 insertions(+), 61 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index 31bbad429..f7205866a 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -25,24 +25,24 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker; public class TickerTask implements Runnable { private boolean halted = false; + + final Map move = new HashMap<>(); + final Map delete = new HashMap<>(); + private final Map blockTimings = new HashMap<>(); - protected Map move = new HashMap<>(); - protected Map delete = new HashMap<>(); - protected Map blockTimings = new HashMap<>(); - - private Set tickers = new HashSet<>(); + private final Set tickers = new HashSet<>(); private int skipped = 0; private int chunks = 0; private int machines = 0; private long time = 0; - private Map chunkItemCount = new HashMap<>(); - private Map machineCount = new HashMap<>(); - private Map machineTimings = new HashMap<>(); - private Map chunkTimings = new HashMap<>(); - private Set chunksSkipped = new HashSet<>(); - private Map buggedBlocks = new HashMap<>(); + private final Map chunkItemCount = new HashMap<>(); + private final Map machineCount = new HashMap<>(); + private final Map machineTimings = new HashMap<>(); + private final Map chunkTimings = new HashMap<>(); + private final Set chunksSkipped = new HashSet<>(); + private final Map buggedBlocks = new HashMap<>(); @Override public void run() { @@ -100,29 +100,8 @@ public class TickerTask implements Runnable { machineCount.put(item.getID(), (machine != null ? machine: 0) + 1); blockTimings.put(l, System.currentTimeMillis() - timestamp3); } catch (Exception x) { - int errors = 0; - if (bugged.containsKey(l)) errors = bugged.get(l); - errors++; - - if (errors == 1) { - // Generate a new Error-Report - new ErrorReport(x, this, l, item); - - buggedBlocks.put(l, errors); - } - else if (errors == 4) { - Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + '(' + item.getID() + ")"); - Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); - Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details."); - Slimefun.getLogger().log(Level.SEVERE, " "); - - BlockStorage._integrated_removeBlockInfo(l, true); - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); - } - else { - buggedBlocks.put(l, errors); - } + int errors = bugged.getOrDefault(l, 0); + reportErrors(l, item, x, errors); } }); } @@ -131,33 +110,14 @@ public class TickerTask implements Runnable { item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l)); machineTimings.merge(item.getID(), (System.currentTimeMillis() - timestamp3), Long::sum); - chunkItemCount.put(c, (chunkItemCount.getOrDefault(c, 0)) + 1); - machineCount.put(item.getID(), (machineCount.getOrDefault(item.getID(), 0)) + 1); + chunkItemCount.merge(c, 1, Integer::sum); + machineCount.merge(item.getID(), 1, Integer::sum); blockTimings.put(l, System.currentTimeMillis() - timestamp3); } tickers.add(item.getBlockTicker()); } catch (Exception x) { int errors = bugged.getOrDefault(l, 0); - errors++; - - if (errors == 1) { - // Generate a new Error-Report - new ErrorReport(x, this, l, item); - buggedBlocks.put(l, errors); - } - else if (errors == 4) { - Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + '(' + item.getID() + ")"); - Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); - Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details."); - Slimefun.getLogger().log(Level.SEVERE, " "); - - BlockStorage._integrated_removeBlockInfo(l, true); - - Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); - } - else { - buggedBlocks.put(l, errors); - } + reportErrors(l, item, x, errors); } } else skipped++; @@ -187,7 +147,31 @@ public class TickerTask implements Runnable { time = System.currentTimeMillis() - timestamp; } - + + private void reportErrors(Location l, SlimefunItem item, Exception x, int errors) { + errors++; + + if (errors == 1) { + // Generate a new Error-Report + new ErrorReport(x, this, l, item); + + buggedBlocks.put(l, errors); + } + else if (errors == 4) { + Slimefun.getLogger().log(Level.SEVERE, "X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + '(' + item.getID() + ")"); + Slimefun.getLogger().log(Level.SEVERE, "has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated."); + Slimefun.getLogger().log(Level.SEVERE, "Check your /plugins/Slimefun/error-reports/ folder for details."); + Slimefun.getLogger().log(Level.SEVERE, " "); + + BlockStorage._integrated_removeBlockInfo(l, true); + + Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> l.getBlock().setType(Material.AIR)); + } + else { + buggedBlocks.put(l, errors); + } + } + public long getTime() { return time; } @@ -211,11 +195,11 @@ public class TickerTask implements Runnable { for (Map.Entry entry: machineCount.entrySet()) { long timings = machineTimings.get(entry.getKey()); - if (timings > 0) hover.append("\n&c" + entry.getKey() + " - " + entry.getValue()+ "x &7(" + timings + "ms)"); + if (timings > 0) hover.append("\n&c").append(entry.getKey()).append(" - ").append(entry.getValue()).append("x &7(").append(timings).append("ms)"); else hidden++; } - hover.append("\n\n&c+ &4" + hidden + " Hidden"); + hover.append("\n\n&c+ &4").append(hidden).append(" Hidden"); tellraw.addHoverEvent(HoverAction.SHOW_TEXT, hover.toString()); try { @@ -247,12 +231,15 @@ public class TickerTask implements Runnable { for (Map.Entry entry: chunkTimings.entrySet()) { if (!chunksSkipped.contains(entry.getKey())) { - if (entry.getValue() > 0) hover.append("\n&c" + entry.getKey().replace("CraftChunk", "") + " - " + (chunkItemCount.getOrDefault(entry.getKey(), 0)) + "x &7(" + entry.getValue() + "ms)"); + if (entry.getValue() > 0) + hover.append("\n&c").append(entry.getKey().replace("CraftChunk", "")).append(" - ") + .append(chunkItemCount.getOrDefault(entry.getKey(), 0)) + .append("x &7(").append(entry.getValue()).append("ms)"); else hidden++; } } - hover.append("\n\n&c+ &4" + hidden + " Hidden"); + hover.append("\n\n&c+ &4").append(hidden).append(" Hidden"); tellraw.addHoverEvent(HoverAction.SHOW_TEXT, hover.toString()); try { From 8e766f644a2dcd5571d796faceb268571abb2d66 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:34:15 +0100 Subject: [PATCH 09/13] CargoNet cleanup --- .../Slimefun/api/TickerTask.java | 4 +- .../Slimefun/api/item_transport/CargoNet.java | 78 +++++++------------ 2 files changed, 32 insertions(+), 50 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java index f7205866a..cc2ec3b83 100644 --- a/src/me/mrCookieSlime/Slimefun/api/TickerTask.java +++ b/src/me/mrCookieSlime/Slimefun/api/TickerTask.java @@ -26,8 +26,8 @@ public class TickerTask implements Runnable { private boolean halted = false; - final Map move = new HashMap<>(); - final Map delete = new HashMap<>(); + protected final Map move = new HashMap<>(); + protected final Map delete = new HashMap<>(); private final Map blockTimings = new HashMap<>(); private final Set tickers = new HashSet<>(); diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 6c90ccab8..da354d553 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -165,7 +165,10 @@ public class CargoNet extends Network { list.add(outputNode); if (frequency != lastFrequency) { - output.merge(frequency, list, (list1, list2) -> { list1.addAll(list2); return list1; }); + output.merge(frequency, list, (list1, list2) -> { + list1.addAll(list2); + return list1; + }); list.clear(); } @@ -346,11 +349,7 @@ public class CargoNet extends Network { List outputlist = new ArrayList<>(output.get(frequency)); if (roundrobin) { - if (!SlimefunPlugin.getUtilities().roundRobin.containsKey(input)) { - SlimefunPlugin.getUtilities().roundRobin.put(input, 0); - } - - int cIndex = SlimefunPlugin.getUtilities().roundRobin.get(input); + int cIndex = SlimefunPlugin.getUtilities().roundRobin.getOrDefault(input, 0); if (cIndex < outputlist.size()) { for (int i = 0; i < cIndex; i++) { @@ -398,19 +397,7 @@ public class CargoNet extends Network { UniversalBlockMenu menu = storage.getUniversalInventory(target); for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) { ItemStack is = menu.getItemInSlot(slot); - if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) { - boolean add = true; - for (StoredItem item: items) { - if (SlimefunManager.isItemSimiliar(is, item.getItem(), true)) { - add = false; - item.add(is.getAmount()); - } - } - - if (add) { - items.add(new StoredItem(new CustomItem(is, 1), is.getAmount())); - } - } + filter(is, items, l); } } else if (storage.hasInventory(target.getLocation())) { @@ -435,40 +422,13 @@ public class CargoNet extends Network { } } else { - for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) { - ItemStack is = menu.getItemInSlot(slot); - if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) { - boolean add = true; - for (StoredItem item: items) { - if (SlimefunManager.isItemSimiliar(is, item.getItem(), true)) { - add = false; - item.add(is.getAmount()); - } - } - - if (add) { - items.add(new StoredItem(new CustomItem(is, 1), is.getAmount())); - } - } - } + handleWithdraw(menu, items, l); } } else if (target.getState() instanceof InventoryHolder) { Inventory inv = ((InventoryHolder) target.getState()).getInventory(); for (ItemStack is: inv.getContents()) { - if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) { - boolean add = true; - for (StoredItem item: items) { - if (SlimefunManager.isItemSimiliar(is, item.getItem(), true)) { - add = false; - item.add(is.getAmount()); - } - } - - if (add) { - items.add(new StoredItem(new CustomItem(is, 1), is.getAmount())); - } - } + filter(is, items, l); } } } @@ -539,4 +499,26 @@ public class CargoNet extends Network { return freq; } + private void handleWithdraw(BlockMenu menu, List items, Location l) { + for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) { + ItemStack is = menu.getItemInSlot(slot); + filter(is, items, l); + } + } + + private void filter(ItemStack is, List items, Location l) { + if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) { + boolean add = true; + for (StoredItem item: items) { + if (SlimefunManager.isItemSimiliar(is, item.getItem(), true)) { + add = false; + item.add(is.getAmount()); + } + } + + if (add) { + items.add(new StoredItem(new CustomItem(is, 1), is.getAmount())); + } + } + } } From fe3cdc6e8d1c59e7d624fa259081615f413c8c28 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:38:48 +0100 Subject: [PATCH 10/13] Few more things --- .../Slimefun/api/item_transport/CargoNet.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index da354d553..86171684c 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -455,17 +455,19 @@ public class CargoNet extends Network { lore.add(ChatColor.translateAlternateColorCodes('&', "&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getAmount()))); if (stack.getMaxStackSize() > 1) lore.add(ChatColor.translateAlternateColorCodes('&', "&7 stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getAmount()) + ">")); else lore.add(ChatColor.translateAlternateColorCodes('&', "&7")); + lore.add(""); - if (im.hasLore()) { - for (String line: im.getLore()) { - lore.add(line); - } + if (im.getLore() != null) { + lore.addAll(im.getLore()); } + im.setLore(lore); stack.setItemMeta(im); menu.replaceExistingItem(slot, stack); menu.addMenuClickHandler(slot, (p, sl, is, action) -> { - SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? (item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize(): item.getAmount()): 1), ItemTransportFlow.WITHDRAW)); + int amount = item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize() : item.getAmount(); + SlimefunPlugin.getUtilities().itemRequests.add(new ItemRequest(l, 44, + new CustomItem(item.getItem(), action.isRightClicked() ? amount : 1), ItemTransportFlow.WITHDRAW)); return false; }); From a0b4a32fe02e2454fb7667c019d8a2a1434ba976 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:39:42 +0100 Subject: [PATCH 11/13] fix typo --- src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java index 64ec53eea..6187a3571 100644 --- a/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java +++ b/src/me/mrCookieSlime/Slimefun/GPS/GPSNetwork.java @@ -255,7 +255,7 @@ public class GPSNetwork { } } catch (Exception x) { - Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a Teleporter Menu for Slimefun " + Slimefun.getVersion(), x); + Slimefun.getLogger().log(Level.SEVERE, "An Error occurred while creating a Teleporter Menu for Slimefun " + Slimefun.getVersion(), x); } menu.open(p); From 23c39dc81ec34440ec5bde91586e34a79ee033c4 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:40:24 +0100 Subject: [PATCH 12/13] Thanks :coookie: --- src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 86171684c..1b12fecb4 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -156,7 +156,7 @@ public class CargoNet extends Network { final Map> output = new HashMap<>(); Set combinedOutputNodes = outputNodes; - outputNodes.addAll(advancedOutputNodes); + combinedOutputNodes.addAll(advancedOutputNodes); List list = new ArrayList<>(); int lastFrequency = -1; From 5b188bcfaa198e4ae02f2c40cd0bfc2a4682a016 Mon Sep 17 00:00:00 2001 From: Daniel Walsh Date: Fri, 4 Oct 2019 12:49:23 +0100 Subject: [PATCH 13/13] Merge unmerged items and don't always merge first item --- .../Slimefun/api/item_transport/CargoNet.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java index 1b12fecb4..15afb70a0 100644 --- a/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java +++ b/src/me/mrCookieSlime/Slimefun/api/item_transport/CargoNet.java @@ -164,7 +164,7 @@ public class CargoNet extends Network { Integer frequency = getFrequency(outputNode); list.add(outputNode); - if (frequency != lastFrequency) { + if (frequency != lastFrequency && lastFrequency != -1) { output.merge(frequency, list, (list1, list2) -> { list1.addAll(list2); return list1; @@ -174,6 +174,11 @@ public class CargoNet extends Network { lastFrequency = frequency; } + if (!list.isEmpty()) + output.merge(lastFrequency, list, (list1, list2) -> { + list1.addAll(list2); + return list1; + }); //Chest Terminal Stuff final Set providers = new HashSet<>();