diff --git a/pom.xml b/pom.xml
index a14db4a..ada667e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2,7 +2,7 @@
com.songoda
EpicFurnaces
4.0.0
- 4.7.1
+ 4.7.2
clean install
EpicFurnaces-${project.version}
@@ -41,7 +41,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.1.0
+ 3.3.0-SNAPSHOT
shaded
@@ -79,6 +79,12 @@
+
+
+ apache.snapshots
+ https://repository.apache.org/snapshots/
+
+
public
@@ -89,7 +95,7 @@
org.spigotmc
spigot
- 1.16.1
+ 1.17
com.songoda
diff --git a/src/main/java/com/songoda/epicfurnaces/EpicFurnaces.java b/src/main/java/com/songoda/epicfurnaces/EpicFurnaces.java
index 6de341f..4d2ea96 100644
--- a/src/main/java/com/songoda/epicfurnaces/EpicFurnaces.java
+++ b/src/main/java/com/songoda/epicfurnaces/EpicFurnaces.java
@@ -56,6 +56,8 @@ import org.bukkit.plugin.PluginManager;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@@ -63,7 +65,7 @@ import java.util.Map;
import java.util.UUID;
import java.util.stream.Collectors;
-public class EpicFurnaces extends SongodaPlugin {
+public class EpicFurnaces extends SongodaPlugin {
private static EpicFurnaces INSTANCE;
@@ -247,14 +249,6 @@ public class EpicFurnaces extends SongodaPlugin {
@Override
public void onDataLoad() {
- // Register Hologram Plugin
-
- if (Settings.HOLOGRAMS.getBoolean()) {
- for (Furnace furnace : getFurnaceManager().getFurnaces().values()) {
- if (furnace.getLocation() == null || furnace.getLocation().getWorld() == null)
- continue;
- }
- }
}
@Override
@@ -267,67 +261,70 @@ public class EpicFurnaces extends SongodaPlugin {
@Override
public List getExtraConfig() {
- return Arrays.asList(levelsFile);
+ return Collections.singletonList(levelsFile);
}
public void clearHologram(Furnace furnace) {
HologramManager.removeHologram(furnace.getLocation().add(0, .15, 0));
}
- public void updateHologram(Furnace furnace) {
+ public void updateHolograms(Collection furnaces) {
// are holograms enabled?
if (!Settings.HOLOGRAMS.getBoolean() || !HologramManager.getManager().isEnabled()) return;
- // don't try to load furnaces in chunks that aren't loaded
- if (!furnace.isInLoadedChunk()) return;
- BlockState state = furnace.getLocation().getBlock().getState();
+ Map> holograms = new HashMap<>(furnaces.size());
- // verify that this is a furnace
- if (!(state instanceof org.bukkit.block.Furnace)) return;
+ for (Furnace furnace : furnaces) {
+ // don't try to load furnaces in chunks that aren't loaded
+ if (!furnace.isInLoadedChunk()) continue;
- org.bukkit.block.Furnace furnaceBlock = ((org.bukkit.block.Furnace) state);
+ BlockState state = furnace.getLocation().getBlock().getState();
- int performance = (furnaceBlock.getCookTime() - furnace.getPerformanceTotal(furnaceBlock.getType())) <= 0 ? 0 : furnace.getPerformanceTotal(furnaceBlock.getType());
+ // verify that this is a furnace
+ if (!(state instanceof org.bukkit.block.Furnace)) continue;
- float percent = (float) (furnaceBlock.getCookTime() - performance) / (200 - performance);
+ org.bukkit.block.Furnace furnaceBlock = ((org.bukkit.block.Furnace) state);
- int progressBars = (int) (6 * percent) + (percent == 0 ? 0 : 1);
- int leftOver = (6 - progressBars);
+ int performance = (furnaceBlock.getCookTime() - furnace.getPerformanceTotal(furnaceBlock.getType())) <= 0 ? 0 : furnace.getPerformanceTotal(furnaceBlock.getType());
+ float percent = (float) (furnaceBlock.getCookTime() - performance) / (200 - performance);
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < progressBars; i++) {
- sb.append("&a=");
- }
- for (int i = 0; i < leftOver; i++) {
- sb.append("&c=");
+ int progressBars = (int) (6 * percent) + (percent == 0 ? 0 : 1);
+ int leftOver = (6 - progressBars);
+
+ String progress;
+
+ if (furnaceBlock.getInventory().getFuel() != null) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < progressBars; i++) {
+ sb.append("&a=");
+ }
+ for (int i = 0; i < leftOver; i++) {
+ sb.append("&c=");
+ }
+
+ progress = Methods.formatText(sb.toString());
+ } else {
+ progress = getLocale().getMessage("general.hologram.outoffuel").getMessage();
+ }
+
+ int inAmt = 0;
+ int outAmt = 0;
+ if (furnaceBlock.getInventory().getSmelting() != null) {
+ inAmt = furnaceBlock.getInventory().getSmelting().getAmount();
+ }
+ if (furnaceBlock.getInventory().getResult() != null) {
+ outAmt = furnaceBlock.getInventory().getResult().getAmount();
+ }
+
+ String stats = getLocale().getMessage("general.hologram.stats")
+ .processPlaceholder("in", inAmt)
+ .processPlaceholder("out", Math.min(outAmt, 64)).getMessage();
+
+ holograms.put(furnace.getLocation().add(0, .15, 0), Arrays.asList(progress, stats));
}
- ArrayList lines = new ArrayList<>();
-
- String progress = Methods.formatText(sb.toString());
-
- if (furnaceBlock.getInventory().getFuel() == null) {
- progress = getLocale().getMessage("general.hologram.outoffuel").getMessage();
- }
-
- int inAmt = 0;
- int outAmt = 0;
- if (furnaceBlock.getInventory().getSmelting() != null) {
- inAmt = furnaceBlock.getInventory().getSmelting().getAmount();
- }
- if (furnaceBlock.getInventory().getResult() != null) {
- outAmt = furnaceBlock.getInventory().getResult().getAmount();
- }
-
- String stats = getLocale().getMessage("general.hologram.stats")
- .processPlaceholder("in", inAmt)
- .processPlaceholder("out", Math.min(outAmt, 64)).getMessage();
-
- lines.add(progress);
- lines.add(stats);
-
- // create the hologram
- HologramManager.updateHologram(furnace.getLocation().add(0, .15, 0), lines);
+ // Update holograms
+ HologramManager.bulkUpdateHolograms(holograms);
}
private void loadLevelManager() {
@@ -424,7 +421,7 @@ public class EpicFurnaces extends SongodaPlugin {
// Legacy trash.
if (item.getItemMeta().getDisplayName().contains(":")) {
- String arr[] = (item.getItemMeta().getDisplayName().replace("§", "")).split(":");
+ String[] arr = (item.getItemMeta().getDisplayName().replace("§", "")).split(":");
return Integer.parseInt(arr[0]);
} else {
return 1;
@@ -440,7 +437,7 @@ public class EpicFurnaces extends SongodaPlugin {
// Legacy trash.
if (item.getItemMeta().getDisplayName().contains(":")) {
- String arr[] = (item.getItemMeta().getDisplayName().replace("§", "")).split(":");
+ String[] arr = (item.getItemMeta().getDisplayName().replace("§", "")).split(":");
return Integer.parseInt(arr[1]);
} else {
return 0;
diff --git a/src/main/java/com/songoda/epicfurnaces/furnace/Furnace.java b/src/main/java/com/songoda/epicfurnaces/furnace/Furnace.java
index 18a3956..6826844 100644
--- a/src/main/java/com/songoda/epicfurnaces/furnace/Furnace.java
+++ b/src/main/java/com/songoda/epicfurnaces/furnace/Furnace.java
@@ -4,6 +4,7 @@ import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.compatibility.ServerVersion;
import com.songoda.core.gui.GuiManager;
import com.songoda.core.hooks.EconomyManager;
+import com.songoda.core.math.MathUtils;
import com.songoda.core.hooks.ProtectionManager;
import com.songoda.epicfurnaces.EpicFurnaces;
import com.songoda.epicfurnaces.boost.BoostData;
@@ -25,9 +26,6 @@ import org.bukkit.event.inventory.FurnaceSmeltEvent;
import org.bukkit.inventory.FurnaceInventory;
import org.bukkit.inventory.InventoryHolder;
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import javax.script.ScriptException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -56,7 +54,6 @@ public class Furnace {
private final List radiusOverheat = new ArrayList<>();
private final List radiusFuelshare = new ArrayList<>();
private final List accessList = new ArrayList<>();
- private final Map cache = new HashMap<>();
public Furnace(Location location) {
this.location = location;
@@ -244,20 +241,7 @@ public class Furnace {
public int getPerformanceTotal(Material material) {
String cap = (material.name().contains("BLAST") || material.name().contains("SMOKER") ? "100" : "200");
String equation = "(" + level.getPerformance() + " / 100) * " + cap;
- try {
- if (!cache.containsKey(equation)) {
- ScriptEngineManager mgr = new ScriptEngineManager(null);
- ScriptEngine engine = mgr.getEngineByName("JavaScript");
- int num = (int) Math.round(Double.parseDouble(engine.eval("(" + level.getPerformance() + " / 100) * " + cap).toString()));
- cache.put(equation, num);
- return num;
- } else {
- return cache.get(equation);
- }
- } catch (ScriptException e) {
- e.printStackTrace();
- }
- return 0;
+ return (int) MathUtils.eval(equation);
}
public boolean addToAccessList(OfflinePlayer player) {
diff --git a/src/main/java/com/songoda/epicfurnaces/gui/GUIOverview.java b/src/main/java/com/songoda/epicfurnaces/gui/GUIOverview.java
index a3c21da..5109154 100644
--- a/src/main/java/com/songoda/epicfurnaces/gui/GUIOverview.java
+++ b/src/main/java/com/songoda/epicfurnaces/gui/GUIOverview.java
@@ -2,7 +2,6 @@ package com.songoda.epicfurnaces.gui;
import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.gui.CustomizableGui;
-import com.songoda.core.gui.Gui;
import com.songoda.core.gui.GuiUtils;
import com.songoda.core.input.ChatPrompt;
import com.songoda.epicfurnaces.EpicFurnaces;
diff --git a/src/main/java/com/songoda/epicfurnaces/gui/GUIRemoteAccess.java b/src/main/java/com/songoda/epicfurnaces/gui/GUIRemoteAccess.java
index 82b5501..53efa9b 100644
--- a/src/main/java/com/songoda/epicfurnaces/gui/GUIRemoteAccess.java
+++ b/src/main/java/com/songoda/epicfurnaces/gui/GUIRemoteAccess.java
@@ -16,7 +16,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
-import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
diff --git a/src/main/java/com/songoda/epicfurnaces/listeners/BlockListeners.java b/src/main/java/com/songoda/epicfurnaces/listeners/BlockListeners.java
index b84e9b4..b2cc32b 100644
--- a/src/main/java/com/songoda/epicfurnaces/listeners/BlockListeners.java
+++ b/src/main/java/com/songoda/epicfurnaces/listeners/BlockListeners.java
@@ -16,6 +16,7 @@ import org.bukkit.event.block.BlockFormEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
+import java.util.Collections;
import java.util.List;
/**
@@ -46,14 +47,13 @@ public class BlockListeners implements Listener {
return;
}
}
-
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(BlockPlaceEvent event) {
if (plugin.getBlacklistHandler().isBlacklisted(event.getPlayer().getWorld())
- || !event.getBlock().getType().name().contains("FURNACE") && !event.getBlock().getType().name().contains("SMOKER"))
+ || !event.getBlock().getType().name().contains("FURNACE") && !event.getBlock().getType().name().contains("SMOKER"))
return;
ItemStack item = event.getItemInHand();
@@ -74,7 +74,7 @@ public class BlockListeners implements Listener {
plugin.getFurnaceManager().addFurnace(furnace);
plugin.getDataManager().createFurnace(furnace);
- plugin.updateHologram(furnace);
+ plugin.updateHolograms(Collections.singleton(furnace));
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
diff --git a/src/main/java/com/songoda/epicfurnaces/listeners/InventoryListeners.java b/src/main/java/com/songoda/epicfurnaces/listeners/InventoryListeners.java
index e209784..971a767 100644
--- a/src/main/java/com/songoda/epicfurnaces/listeners/InventoryListeners.java
+++ b/src/main/java/com/songoda/epicfurnaces/listeners/InventoryListeners.java
@@ -36,7 +36,6 @@ public class InventoryListeners implements Listener {
furnace.updateCook();
}
- @SuppressWarnings("unchecked")
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
if (event.getSlot() != 64537) {
diff --git a/src/main/java/com/songoda/epicfurnaces/settings/Settings.java b/src/main/java/com/songoda/epicfurnaces/settings/Settings.java
index fd3f41c..712a95b 100644
--- a/src/main/java/com/songoda/epicfurnaces/settings/Settings.java
+++ b/src/main/java/com/songoda/epicfurnaces/settings/Settings.java
@@ -5,11 +5,8 @@ import com.songoda.core.configuration.Config;
import com.songoda.core.configuration.ConfigSetting;
import com.songoda.core.hooks.EconomyManager;
import com.songoda.core.hooks.HologramManager;
-import com.songoda.core.hooks.ProtectionManager;
import com.songoda.epicfurnaces.EpicFurnaces;
-import java.util.stream.Collectors;
-
public class Settings {
static final Config config = EpicFurnaces.getInstance().getCoreConfig();
@@ -44,8 +41,7 @@ public class Settings {
public static final ConfigSetting HOLOGRAM_PLUGIN = new ConfigSetting(config, "Main.Hologram",
HologramManager.getHolograms() == null ? "HolographicDisplays" : HologramManager.getHolograms().getName(),
"Which hologram plugin should be used?",
- "You can choose from \"" + HologramManager.getManager().getRegisteredPlugins().stream().collect(Collectors.joining(", ")) + "\".");
-
+ "You can choose from \"" + String.join(", ", HologramManager.getManager().getRegisteredPlugins()) + "\".");
public static final ConfigSetting HOLOGRAMS = new ConfigSetting(config, "Main.Furnaces Have Holograms", true);
@@ -68,7 +64,7 @@ public class Settings {
public static final ConfigSetting ECONOMY_PLUGIN = new ConfigSetting(config, "Main.Economy", EconomyManager.getEconomy() == null ? "Vault" : EconomyManager.getEconomy().getName(),
"Which economy plugin should be used?",
- "Supported plugins you have installed: \"" + EconomyManager.getManager().getRegisteredPlugins().stream().collect(Collectors.joining("\", \"")) + "\".");
+ "Supported plugins you have installed: \"" + String.join("\", \"", EconomyManager.getManager().getRegisteredPlugins()) + "\".");
public static final ConfigSetting REWARD_ICON = new ConfigSetting(config, "Interfaces.Reward Icon", "GOLDEN_APPLE");
public static final ConfigSetting PERFORMANCE_ICON = new ConfigSetting(config, "Interfaces.Performance Icon", "REDSTONE");
diff --git a/src/main/java/com/songoda/epicfurnaces/tasks/FurnaceTask.java b/src/main/java/com/songoda/epicfurnaces/tasks/FurnaceTask.java
index 6d9bbdd..7aafc62 100644
--- a/src/main/java/com/songoda/epicfurnaces/tasks/FurnaceTask.java
+++ b/src/main/java/com/songoda/epicfurnaces/tasks/FurnaceTask.java
@@ -19,7 +19,7 @@ public class FurnaceTask extends BukkitRunnable {
private static FurnaceTask instance;
private final EpicFurnaces plugin;
- final HashSet toRemove = new HashSet();
+ final HashSet toRemove = new HashSet<>();
boolean doParticles;
private FurnaceTask(EpicFurnaces plugin) {
@@ -56,7 +56,7 @@ public class FurnaceTask extends BukkitRunnable {
}
});
if (!toRemove.isEmpty()) {
- toRemove.stream().forEach(l -> plugin.getFurnaceManager().removeFurnace(l));
+ toRemove.forEach(l -> plugin.getFurnaceManager().removeFurnace(l));
toRemove.clear();
}
}
@@ -81,7 +81,7 @@ public class FurnaceTask extends BukkitRunnable {
else if (block.getType() == Material.ICE || block.getType() == Material.PACKED_ICE)
block.setType(Material.WATER);
else
- continue;
+ continue;
if (doParticles) {
float xx = (float) (0 + (Math.random() * .75));
diff --git a/src/main/java/com/songoda/epicfurnaces/tasks/HologramTask.java b/src/main/java/com/songoda/epicfurnaces/tasks/HologramTask.java
index 4cd5c85..009d06b 100644
--- a/src/main/java/com/songoda/epicfurnaces/tasks/HologramTask.java
+++ b/src/main/java/com/songoda/epicfurnaces/tasks/HologramTask.java
@@ -2,7 +2,6 @@ package com.songoda.epicfurnaces.tasks;
import com.songoda.core.hooks.HologramManager;
import com.songoda.epicfurnaces.EpicFurnaces;
-import com.songoda.epicfurnaces.furnace.Furnace;
import org.bukkit.scheduler.BukkitRunnable;
public class HologramTask extends BukkitRunnable {
@@ -28,8 +27,6 @@ public class HologramTask extends BukkitRunnable {
public void run() {
if (!HologramManager.getManager().isEnabled()) return;
- for (Furnace furnace : plugin.getFurnaceManager().getFurnaces().values()) {
- plugin.updateHologram(furnace);
- }
+ plugin.updateHolograms(plugin.getFurnaceManager().getFurnaces().values());
}
}
\ No newline at end of file
diff --git a/src/main/java/com/songoda/epicfurnaces/utils/Methods.java b/src/main/java/com/songoda/epicfurnaces/utils/Methods.java
index 562065d..89bfd66 100644
--- a/src/main/java/com/songoda/epicfurnaces/utils/Methods.java
+++ b/src/main/java/com/songoda/epicfurnaces/utils/Methods.java
@@ -6,7 +6,6 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
-import org.bukkit.block.Block;
import java.text.DecimalFormat;
import java.util.Arrays;
@@ -52,7 +51,8 @@ public class Methods {
str = str.replace(".0", "").replace("/", "");
return str;
}
- private static Map serializeCache = new HashMap<>();
+
+ private static final Map serializeCache = new HashMap<>();
/**
* Deserializes a location from the string.