mirror of
https://github.com/BentoBoxWorld/Level.git
synced 2024-11-27 12:38:21 +01:00
Adds support for AdvancedChests. Requires version 14.3
https://github.com/BentoBoxWorld/Level/issues/214
This commit is contained in:
parent
311455e921
commit
12525271c8
@ -10,6 +10,7 @@ import org.bukkit.configuration.InvalidConfigurationException;
|
|||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.eclipse.jdt.annotation.NonNull;
|
import org.eclipse.jdt.annotation.NonNull;
|
||||||
import org.eclipse.jdt.annotation.Nullable;
|
import org.eclipse.jdt.annotation.Nullable;
|
||||||
|
|
||||||
@ -100,11 +101,43 @@ public class Level extends Addon implements Listener {
|
|||||||
log("Hooked into WildStackers.");
|
log("Hooked into WildStackers.");
|
||||||
}
|
}
|
||||||
// Check if AdvancedChests is enabled on the server
|
// Check if AdvancedChests is enabled on the server
|
||||||
advChestEnabled = Bukkit.getPluginManager().getPlugin("AdvancedChests") != null;
|
Plugin advChest = Bukkit.getPluginManager().getPlugin("AdvancedChests");
|
||||||
|
advChestEnabled = advChest != null;
|
||||||
if (advChestEnabled) {
|
if (advChestEnabled) {
|
||||||
|
// Check version
|
||||||
|
if (compareVersions(advChest.getDescription().getVersion(), "14.2") > 0) {
|
||||||
log("Hooked into AdvancedChests.");
|
log("Hooked into AdvancedChests.");
|
||||||
|
} else {
|
||||||
|
logError("Could not hook into AdvancedChests " + advChest.getDescription().getVersion() + " - requires version 14.3 or later");
|
||||||
|
advChestEnabled = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Compares versions
|
||||||
|
* @param version1
|
||||||
|
* @param version2
|
||||||
|
* @return <0 if version 1 is older than version 2, =0 if the same, >0 if version 1 is newer than version 2
|
||||||
|
*/
|
||||||
|
public static int compareVersions(String version1, String version2) {
|
||||||
|
int comparisonResult = 0;
|
||||||
|
|
||||||
|
String[] version1Splits = version1.split("\\.");
|
||||||
|
String[] version2Splits = version2.split("\\.");
|
||||||
|
int maxLengthOfVersionSplits = Math.max(version1Splits.length, version2Splits.length);
|
||||||
|
|
||||||
|
for (int i = 0; i < maxLengthOfVersionSplits; i++){
|
||||||
|
Integer v1 = i < version1Splits.length ? Integer.parseInt(version1Splits[i]) : 0;
|
||||||
|
Integer v2 = i < version2Splits.length ? Integer.parseInt(version2Splits[i]) : 0;
|
||||||
|
int compare = v1.compareTo(v2);
|
||||||
|
if (compare != 0) {
|
||||||
|
comparisonResult = compare;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return comparisonResult;
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBentoBoxReady(BentoBoxReadyEvent e) {
|
public void onBentoBoxReady(BentoBoxReadyEvent e) {
|
||||||
|
@ -22,7 +22,6 @@ import org.bukkit.block.BlockState;
|
|||||||
import org.bukkit.block.Container;
|
import org.bukkit.block.Container;
|
||||||
import org.bukkit.block.data.BlockData;
|
import org.bukkit.block.data.BlockData;
|
||||||
import org.bukkit.block.data.type.Slab;
|
import org.bukkit.block.data.type.Slab;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
import org.eclipse.jdt.annotation.NonNull;
|
import org.eclipse.jdt.annotation.NonNull;
|
||||||
@ -435,23 +434,24 @@ public class IslandLevelCalculator {
|
|||||||
if (bs instanceof Container) {
|
if (bs instanceof Container) {
|
||||||
if (addon.isAdvChestEnabled()) {
|
if (addon.isAdvChestEnabled()) {
|
||||||
AdvancedChest aChest = AdvancedChestsAPI.getChestManager().getAdvancedChest(bs.getLocation());
|
AdvancedChest aChest = AdvancedChestsAPI.getChestManager().getAdvancedChest(bs.getLocation());
|
||||||
aChest.getPages().stream().map(ChestPage::getInventory).forEach(this::countChestItems);
|
if (aChest != null) {
|
||||||
} else {
|
aChest.getPages().stream().map(ChestPage::getItems).forEach(c -> c.forEach(this::countItemStack));
|
||||||
countChestItems(((Container)bs).getSnapshotInventory());
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Regular chest
|
||||||
|
((Container)bs).getSnapshotInventory().forEach(this::countItemStack);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void countChestItems(Inventory inv) {
|
private void countItemStack(ItemStack i) {
|
||||||
for (ItemStack i : inv) {
|
|
||||||
if (i != null && i.getType().isBlock()) {
|
if (i != null && i.getType().isBlock()) {
|
||||||
for (int c = 0; c < i.getAmount(); c++) {
|
for (int c = 0; c < i.getAmount(); c++) {
|
||||||
checkBlock(i.getType(), false);
|
checkBlock(i.getType(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scan the chunk chests and count the blocks
|
* Scan the chunk chests and count the blocks
|
||||||
|
Loading…
Reference in New Issue
Block a user