mirror of
https://github.com/BG-Software-LLC/WildLoaders.git
synced 2024-11-25 12:25:18 +01:00
Adds support to BentoBox (#110)
This commit is contained in:
parent
96281d7531
commit
307c181552
25
Hooks/BentoBox/build.gradle
Normal file
25
Hooks/BentoBox/build.gradle
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
group 'Hooks:BentoBox'
|
||||||
|
|
||||||
|
java {
|
||||||
|
toolchain {
|
||||||
|
languageVersion.set(JavaLanguageVersion.of(16))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenCentral()
|
||||||
|
maven { url "https://repo.codemc.org/repository/maven-public/" }
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly "world.bentobox:bentobox:2.6.0-SNAPSHOT"
|
||||||
|
compileOnly "world.bentobox:bskyblock:1.18.1-SNAPSHOT"
|
||||||
|
compileOnly "org.spigotmc:v1_8_R3-Taco:latest"
|
||||||
|
compileOnly project(":API")
|
||||||
|
compileOnly rootProject
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.hasProperty('hook.compile_bentobox') &&
|
||||||
|
!Boolean.valueOf(project.findProperty("hook.compile_bentobox").toString())) {
|
||||||
|
project.tasks.all { task -> task.enabled = false }
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
package com.bgsoftware.wildloaders.hooks;
|
||||||
|
|
||||||
|
import com.bgsoftware.wildloaders.api.hooks.ClaimsProvider;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
import world.bentobox.bentobox.BentoBox;
|
||||||
|
import world.bentobox.bentobox.api.user.User;
|
||||||
|
import world.bentobox.bentobox.database.objects.Island;
|
||||||
|
import world.bentobox.bentobox.lists.Flags;
|
||||||
|
import world.bentobox.bentobox.managers.IslandsManager;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public final class ClaimsProvider_BentoBox implements ClaimsProvider {
|
||||||
|
|
||||||
|
private final IslandsManager islandsManager;
|
||||||
|
|
||||||
|
public ClaimsProvider_BentoBox() {
|
||||||
|
this.islandsManager = BentoBox.getInstance().getIslands();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasClaimAccess(UUID player, Chunk chunk) {
|
||||||
|
User bentoPlayer = BentoBox.getInstance().getPlayersManager().getUser(player);
|
||||||
|
|
||||||
|
// There is no API method to get island at a specific chunk.
|
||||||
|
// Therefore we need to check for islands in each corner of the chunk.
|
||||||
|
|
||||||
|
Location cornerLocation = new Location(chunk.getWorld(), chunk.getX() << 4, 100, chunk.getZ() << 4);
|
||||||
|
|
||||||
|
IslandAccess islandAccess = IslandAccess.WILDERNESS;
|
||||||
|
|
||||||
|
// Min x, Min z
|
||||||
|
if ((islandAccess = islandAccess.and(checkIslandAccess(bentoPlayer, cornerLocation))) == IslandAccess.DENIED)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Max x, Min z
|
||||||
|
cornerLocation.add(15, 0, 0);
|
||||||
|
if ((islandAccess = islandAccess.and(checkIslandAccess(bentoPlayer, cornerLocation))) == IslandAccess.DENIED)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Max x, Max z
|
||||||
|
cornerLocation.add(0, 0, 15);
|
||||||
|
if ((islandAccess = islandAccess.and(checkIslandAccess(bentoPlayer, cornerLocation))) == IslandAccess.DENIED)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// Min x, Max z
|
||||||
|
cornerLocation.add(-15, 0, 0);
|
||||||
|
if ((islandAccess = islandAccess.and(checkIslandAccess(bentoPlayer, cornerLocation))) == IslandAccess.DENIED)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// We only return true if one of the corners were inside an actual island.
|
||||||
|
return islandAccess == IslandAccess.ALLOWED;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IslandAccess checkIslandAccess(User bentoPlayer, Location location) {
|
||||||
|
Island island = this.islandsManager.getIslandAt(location).orElse(null);
|
||||||
|
if (island == null)
|
||||||
|
return IslandAccess.WILDERNESS;
|
||||||
|
|
||||||
|
return island.isAllowed(bentoPlayer, Flags.PLACE_BLOCKS) ? IslandAccess.ALLOWED : IslandAccess.DENIED;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum IslandAccess {
|
||||||
|
|
||||||
|
WILDERNESS,
|
||||||
|
ALLOWED,
|
||||||
|
DENIED;
|
||||||
|
|
||||||
|
public IslandAccess and(IslandAccess other) {
|
||||||
|
return other.ordinal() > this.ordinal() ? other : this;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,6 +11,7 @@ nms.compile_v1_20=true
|
|||||||
nms.compile_v1_21=true
|
nms.compile_v1_21=true
|
||||||
hook.compile_advancedslimepaper=true
|
hook.compile_advancedslimepaper=true
|
||||||
hook.compile_advancedslimeworldmanager=true
|
hook.compile_advancedslimeworldmanager=true
|
||||||
|
hook.compile_bentobox=true
|
||||||
hook.compile_epicspawners6=true
|
hook.compile_epicspawners6=true
|
||||||
hook.compile_epicspawners7=true
|
hook.compile_epicspawners7=true
|
||||||
hook.compile_factionsuuid=true
|
hook.compile_factionsuuid=true
|
||||||
|
@ -11,6 +11,7 @@ include 'API'
|
|||||||
include 'Hooks'
|
include 'Hooks'
|
||||||
include 'Hooks:AdvancedSlimePaper'
|
include 'Hooks:AdvancedSlimePaper'
|
||||||
include 'Hooks:AdvancedSlimeWorldManager'
|
include 'Hooks:AdvancedSlimeWorldManager'
|
||||||
|
include 'Hooks:BentoBox'
|
||||||
include 'Hooks:EpicSpawners6'
|
include 'Hooks:EpicSpawners6'
|
||||||
include 'Hooks:EpicSpawners7'
|
include 'Hooks:EpicSpawners7'
|
||||||
include 'Hooks:EpicSpawners8'
|
include 'Hooks:EpicSpawners8'
|
||||||
|
@ -60,6 +60,10 @@ public final class ProvidersHandler implements ProvidersManager {
|
|||||||
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_Lands");
|
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_Lands");
|
||||||
claimsProvider.ifPresent(this::addClaimsProvider);
|
claimsProvider.ifPresent(this::addClaimsProvider);
|
||||||
}
|
}
|
||||||
|
if (Bukkit.getPluginManager().isPluginEnabled("BentoBox")) {
|
||||||
|
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_BentoBox");
|
||||||
|
claimsProvider.ifPresent(this::addClaimsProvider);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadTickableProviders() {
|
private void loadTickableProviders() {
|
||||||
|
Loading…
Reference in New Issue
Block a user