diff --git a/pom.xml b/pom.xml
index abde9c7..8c8f5a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -149,6 +149,11 @@
rosewood-repo
https://repo.rosewooddev.io/repository/public/
+
+
+ songoda-public
+ https://repo.songoda.com/repository/public/
+
@@ -234,6 +239,12 @@
1.3.0
provided
+
+ com.songoda
+ UltimateStacker
+ 2.3.3
+ provided
+
diff --git a/src/main/java/world/bentobox/level/Level.java b/src/main/java/world/bentobox/level/Level.java
index 78c2a5b..61789e5 100644
--- a/src/main/java/world/bentobox/level/Level.java
+++ b/src/main/java/world/bentobox/level/Level.java
@@ -58,6 +58,7 @@ public class Level extends Addon {
private boolean stackersEnabled;
private boolean advChestEnabled;
private boolean roseStackersEnabled;
+ private boolean ultimateStackerEnabled;
private final List registeredGameModes = new ArrayList<>();
/**
@@ -146,6 +147,12 @@ public class Level extends Addon {
if (roseStackersEnabled) {
log("Hooked into RoseStackers.");
}
+
+ // Check if UltimateStacker is enabled
+ ultimateStackerEnabled = Bukkit.getPluginManager().isPluginEnabled("UltimateStacker");
+ if (ultimateStackerEnabled) {
+ log("Hooked into UltimateStacker.");
+ }
}
@Override
@@ -403,6 +410,13 @@ public class Level extends Addon {
return roseStackersEnabled;
}
+ /**
+ * @return the ultimateStackerEnabled
+ */
+ public boolean isUltimateStackerEnabled() {
+ return ultimateStackerEnabled;
+ }
+
/**
* Method Level#getVisitHook returns the visitHook of this object.
*
diff --git a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java
index 9d36dc8..9c2a6cf 100644
--- a/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java
+++ b/src/main/java/world/bentobox/level/calculators/IslandLevelCalculator.java
@@ -16,6 +16,9 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ConcurrentLinkedQueue;
+import com.songoda.ultimatestacker.UltimateStacker;
+import com.songoda.ultimatestacker.core.compatibility.CompatibleMaterial;
+import com.songoda.ultimatestacker.stackable.block.BlockStack;
import org.bukkit.Bukkit;
import org.bukkit.Chunk;
import org.bukkit.ChunkSnapshot;
@@ -524,6 +527,25 @@ public class IslandLevelCalculator {
if (addon.isStackersEnabled() && (blockData.getMaterial().equals(Material.CAULDRON) || blockData.getMaterial().equals(Material.SPAWNER))) {
stackedBlocks.add(new Location(cp.world, (double)x + cp.chunkSnapshot.getX() * 16, y, (double)z + cp.chunkSnapshot.getZ() * 16));
}
+
+ Block block = cp.chunk.getBlock(x, y, z);
+
+ if (addon.isUltimateStackerEnabled()) {
+ if (!blockData.getMaterial().equals(Material.AIR)) {
+ BlockStack stack = UltimateStacker.getInstance().getBlockStackManager().getBlock(block, CompatibleMaterial.getMaterial(block));
+ if (stack != null) {
+ int value = limitCount(blockData.getMaterial());
+ if (belowSeaLevel) {
+ results.underWaterBlockCount.addAndGet((long) stack.getAmount() * value);
+ results.uwCount.add(blockData.getMaterial());
+ } else {
+ results.rawBlockCount.addAndGet((long) stack.getAmount() * value);
+ results.mdCount.add(blockData.getMaterial());
+ }
+ }
+ }
+ }
+
// Scan chests
if (addon.getSettings().isIncludeChests() && CHESTS.contains(blockData.getMaterial())) {
chestBlocks.add(cp.chunk);