Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<powermock.version>2.0.9</powermock.version>
<!-- More visible way how to change dependency versions -->
<spigot.version>1.21.3-R0.1-SNAPSHOT</spigot.version>
<bentobox.version>3.2.4-SNAPSHOT</bentobox.version>
<bentobox.version>3.2.5-SNAPSHOT</bentobox.version>
<!-- Warps addon version -->
<warps.version>1.12.0</warps.version>
<!-- Visit addon version -->
Expand All @@ -67,7 +67,7 @@
<!-- Do not change unless you want different name for local builds. -->
<build.number>-LOCAL</build.number>
<!-- This allows to change between versions. -->
<build.version>2.18.0</build.version>
<build.version>2.19.0</build.version>
<sonar.projectKey>BentoBoxWorld_Level</sonar.projectKey>
<sonar.organization>bentobox-world</sonar.organization>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
Expand Down Expand Up @@ -158,6 +158,11 @@
<id>songoda-plugins</id>
<url>https://repo.songoda.com/repository/minecraft-plugins/</url>
</repository>
<!-- ItemsAdder API repo-->
<repository>
<id>matteodev</id>
<url>https://maven.devs.beer/</url>
</repository>
</repositories>

<dependencies>
Expand Down Expand Up @@ -245,6 +250,13 @@
<version>1.0.0-20240329.173606-35</version>
<scope>provided</scope>
</dependency>
<!-- ItemsAdder -->
<dependency>
<groupId>dev.lone</groupId>
<artifactId>api-itemsadder</artifactId>
<version>4.0.2-beta-release-11</version>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
Expand Down
169 changes: 96 additions & 73 deletions src/main/java/world/bentobox/level/Level.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,79 +98,98 @@ private boolean loadSettings() {

@Override
public void onEnable() {
loadBlockSettings();
// Start pipeline
pipeliner = new Pipeliner(this);
// Start Manager
manager = new LevelsManager(this);
// Register listeners
this.registerListener(new IslandActivitiesListeners(this));
this.registerListener(new JoinLeaveListener(this));
this.registerListener(new MigrationListener(this));

// Register commands for GameModes
registeredGameModes.clear();
getPlugin().getAddonsManager().getGameModeAddons().stream()
.filter(gm -> !settings.getGameModes().contains(gm.getDescription().getName())).forEach(gm -> {
log("Level hooking into " + gm.getDescription().getName());
registerCommands(gm);
new PlaceholderManager(this).registerPlaceholders(gm);
registeredGameModes.add(gm);
});
// Register request handlers
registerRequestHandler(new LevelRequestHandler(this));
registerRequestHandler(new TopTenRequestHandler(this));

// Check if WildStackers is enabled on the server
// I only added support for counting blocks into the island level
// Someone else can PR if they want spawners added to the Leveling system :)
if (!settings.getDisabledPluginHooks().contains("WildStacker")) {
stackersEnabled = Bukkit.getPluginManager().isPluginEnabled("WildStacker");
if (stackersEnabled) {
log("Hooked into WildStackers.");
}
}

// Check if AdvancedChests is enabled on the server
if (!settings.getDisabledPluginHooks().contains("AdvancedChests")) {
Plugin advChest = Bukkit.getPluginManager().getPlugin("AdvancedChests");
advChestEnabled = advChest != null;
if (advChestEnabled) {
// Check version
if (compareVersions(advChest.getDescription().getVersion(), "23.0") > 0) {
log("Hooked into AdvancedChests.");
} else {
logError("Could not hook into AdvancedChests " + advChest.getDescription().getVersion()
+ " - requires version 23.0 or later");
advChestEnabled = false;
}
}
}

// Check if RoseStackers is enabled
if (!settings.getDisabledPluginHooks().contains("RoseStacker")) {
roseStackersEnabled = Bukkit.getPluginManager().isPluginEnabled("RoseStacker");
if (roseStackersEnabled) {
log("Hooked into RoseStackers.");
}
}

// Check if UltimateStacker is enabled
if (!settings.getDisabledPluginHooks().contains("UltimateStacker")) {
ultimateStackerEnabled = Bukkit.getPluginManager().isPluginEnabled("UltimateStacker");
if (ultimateStackerEnabled) {
log("Hooked into UltimateStacker.");
}
}
}

@Override
public void allLoaded() {
super.allLoaded();

if (this.isEnabled()) {
this.hookExtensions();
}
// Everything waits until allLoaded
}

@Override
public void allLoaded() {
super.allLoaded();
loadBlockSettings();
initializePipelineAndManager();
registerAllListeners();
registerGameModeCommands();
registerRequestHandlers();
hookPlugin("WildStacker", this::hookWildStackers);
hookAdvancedChests();
hookPlugin("RoseStacker", this::hookRoseStackers);
hookPlugin("UltimateStacker", this::hookUltimateStacker);

if (this.isEnabled()) {
hookExtensions();
}
}

private void initializePipelineAndManager() {
pipeliner = new Pipeliner(this);
manager = new LevelsManager(this);
}

private void registerAllListeners() {
registerListener(new IslandActivitiesListeners(this));
registerListener(new JoinLeaveListener(this));
registerListener(new MigrationListener(this));
}

private void registerGameModeCommands() {
registeredGameModes.clear();
getPlugin().getAddonsManager().getGameModeAddons().stream()
.filter(gm -> !settings.getGameModes().contains(gm.getDescription().getName())).forEach(gm -> {
log("Level hooking into " + gm.getDescription().getName());
registerCommands(gm);
new PlaceholderManager(this).registerPlaceholders(gm);
registeredGameModes.add(gm);
});
}

private void registerRequestHandlers() {
registerRequestHandler(new LevelRequestHandler(this));
registerRequestHandler(new TopTenRequestHandler(this));
}

/**
* A helper that only executes the provided hookAction if the plugin is not disabled.
*/
private void hookPlugin(String pluginName, Runnable hookAction) {
if (!settings.getDisabledPluginHooks().contains(pluginName)) {
hookAction.run();
}
}

private void hookWildStackers() {
stackersEnabled = Bukkit.getPluginManager().isPluginEnabled("WildStacker");
if (stackersEnabled) {
log("Hooked into WildStackers.");
}
}

private void hookAdvancedChests() {
if (!settings.getDisabledPluginHooks().contains("AdvancedChests")) {
Plugin advChest = Bukkit.getPluginManager().getPlugin("AdvancedChests");
advChestEnabled = advChest != null;
if (advChestEnabled) {
if (compareVersions(advChest.getDescription().getVersion(), "23.0") > 0) {
log("Hooked into AdvancedChests.");
} else {
logError("Could not hook into AdvancedChests " + advChest.getDescription().getVersion()
+ " - requires version 23.0 or later");
advChestEnabled = false;
}
}
}
}

private void hookRoseStackers() {
roseStackersEnabled = Bukkit.getPluginManager().isPluginEnabled("RoseStacker");
if (roseStackersEnabled) {
log("Hooked into RoseStackers.");
}
}

private void hookUltimateStacker() {
ultimateStackerEnabled = Bukkit.getPluginManager().isPluginEnabled("UltimateStacker");
if (ultimateStackerEnabled) {
log("Hooked into UltimateStacker.");
}
}

/**
Expand Down Expand Up @@ -448,4 +467,8 @@ public Warp getWarpHook() {
return this.warpHook;
}

public boolean isItemsAdder() {
return getPlugin().getHooks().getHook("ItemsAdder").isPresent();
}

}
Loading