mirror of
https://github.com/BG-Software-LLC/WildLoaders.git
synced 2024-11-24 12:15:28 +01:00
Added support for EpicSpawners 7 (#32)
This commit is contained in:
parent
927a01722f
commit
699d5eb4f7
@ -1,4 +1,4 @@
|
|||||||
group 'Hook_EpicSpawners'
|
group 'Hook_EpicSpawners6'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly "com.songoda:EpicSpawners-6:latest"
|
compileOnly "com.songoda:EpicSpawners-6:latest"
|
||||||
@ -7,7 +7,7 @@ dependencies {
|
|||||||
compileOnly parent
|
compileOnly parent
|
||||||
}
|
}
|
||||||
|
|
||||||
if (project.hasProperty('hook.compile_epicspawners') &&
|
if (project.hasProperty('hook.compile_epicspawners6') &&
|
||||||
!Boolean.valueOf(project.findProperty("hook.compile_epicspawners").toString())) {
|
!Boolean.valueOf(project.findProperty("hook.compile_epicspawners6").toString())) {
|
||||||
project.tasks.all { task -> task.enabled = false }
|
project.tasks.all { task -> task.enabled = false }
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ import java.util.Map;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public final class TickableProvider_EpicSpawners implements TickableProvider {
|
public final class TickableProvider_EpicSpawners6 implements TickableProvider {
|
||||||
|
|
||||||
private final Map<Location, TickDelay> spawnerDelays = new HashMap<>();
|
private final Map<Location, TickDelay> spawnerDelays = new HashMap<>();
|
||||||
|
|
13
Hook_EpicSpawners7/build.gradle
Normal file
13
Hook_EpicSpawners7/build.gradle
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
group 'Hook_EpicSpawners6'
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compileOnly "com.songoda:EpicSpawners-7:latest"
|
||||||
|
compileOnly "org.spigotmc:v1_8_R3-Taco:latest"
|
||||||
|
compileOnly project(":API")
|
||||||
|
compileOnly parent
|
||||||
|
}
|
||||||
|
|
||||||
|
if (project.hasProperty('hook.compile_epicspawners7') &&
|
||||||
|
!Boolean.valueOf(project.findProperty("hook.compile_epicspawners7").toString())) {
|
||||||
|
project.tasks.all { task -> task.enabled = false }
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.bgsoftware.wildloaders.hooks;
|
||||||
|
|
||||||
|
import com.bgsoftware.wildloaders.api.hooks.TickableProvider;
|
||||||
|
import com.songoda.epicspawners.EpicSpawners;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.Location;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
public final class TickableProvider_EpicSpawners7 implements TickableProvider {
|
||||||
|
|
||||||
|
private final Map<Location, TickDelay> spawnerDelays = new HashMap<>();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void tick(Chunk[] chunks) {
|
||||||
|
if (EpicSpawners.getInstance().getSpawnerManager() == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
List<Long> chunkList = Stream.of(chunks).map(chunk -> pair(chunk.getX(), chunk.getZ())).collect(Collectors.toList());
|
||||||
|
|
||||||
|
EpicSpawners.getInstance().getSpawnerManager().getSpawners().stream()
|
||||||
|
.filter(spawner -> chunkList.contains(pair(spawner.getX() >> 4, spawner.getZ() >> 4)))
|
||||||
|
.forEach(spawner -> {
|
||||||
|
Location location = spawner.getLocation();
|
||||||
|
TickDelay tickDelay = spawnerDelays.get(location);
|
||||||
|
|
||||||
|
if (tickDelay == null) {
|
||||||
|
spawnerDelays.put(location, new TickDelay(spawner.updateDelay()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tickDelay.delay -= 1;
|
||||||
|
|
||||||
|
if (tickDelay.delay <= 0) {
|
||||||
|
spawner.spawn();
|
||||||
|
spawnerDelays.remove(location);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private long pair(int x, int z) {
|
||||||
|
return (x & 0xFFFFFFFFL) | (z & 0xFFFFFFFFL) << 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class TickDelay {
|
||||||
|
|
||||||
|
private int delay;
|
||||||
|
|
||||||
|
TickDelay(int delay) {
|
||||||
|
this.delay = delay;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,7 +11,8 @@ nms.compile_v1_15=true
|
|||||||
nms.compile_v1_16=true
|
nms.compile_v1_16=true
|
||||||
nms.compile_v1_17=true
|
nms.compile_v1_17=true
|
||||||
nms.compile_v1_18=true
|
nms.compile_v1_18=true
|
||||||
hook.compile_epicspawners=true
|
hook.compile_epicspawners6=true
|
||||||
|
hook.compile_epicspawners7=true
|
||||||
hook.compile_factionsuuid=true
|
hook.compile_factionsuuid=true
|
||||||
hook.compile_factionsx=true
|
hook.compile_factionsx=true
|
||||||
hook.compile_massivefactions=true
|
hook.compile_massivefactions=true
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
rootProject.name = 'WildLoaders'
|
rootProject.name = 'WildLoaders'
|
||||||
include 'API'
|
include 'API'
|
||||||
include 'Hook_EpicSpawners'
|
include 'Hook_EpicSpawners6'
|
||||||
|
include 'Hook_EpicSpawners7'
|
||||||
include 'Hook_FactionsUUID'
|
include 'Hook_FactionsUUID'
|
||||||
include 'Hook_FactionsX'
|
include 'Hook_FactionsX'
|
||||||
include 'Hook_MassiveFactions'
|
include 'Hook_MassiveFactions'
|
||||||
@ -12,4 +13,5 @@ include 'v1_15_R1'
|
|||||||
include 'v1_16_R3'
|
include 'v1_16_R3'
|
||||||
include 'v1_17_R1'
|
include 'v1_17_R1'
|
||||||
include 'v1_18_R1'
|
include 'v1_18_R1'
|
||||||
|
include 'Hook_EpicSpawners7'
|
||||||
|
|
||||||
|
@ -7,6 +7,7 @@ import com.bgsoftware.wildloaders.api.managers.ProvidersManager;
|
|||||||
import com.bgsoftware.wildloaders.utils.threads.Executor;
|
import com.bgsoftware.wildloaders.utils.threads.Executor;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Chunk;
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@ -36,8 +37,7 @@ public final class ProvidersHandler implements ProvidersManager {
|
|||||||
if (Bukkit.getPluginManager().getPlugin("Factions").getDescription().getAuthors().contains("drtshock")) {
|
if (Bukkit.getPluginManager().getPlugin("Factions").getDescription().getAuthors().contains("drtshock")) {
|
||||||
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_FactionsUUID");
|
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_FactionsUUID");
|
||||||
claimsProvider.ifPresent(this::addClaimsProvider);
|
claimsProvider.ifPresent(this::addClaimsProvider);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_MassiveFactions");
|
Optional<ClaimsProvider> claimsProvider = createInstance("ClaimsProvider_MassiveFactions");
|
||||||
claimsProvider.ifPresent(this::addClaimsProvider);
|
claimsProvider.ifPresent(this::addClaimsProvider);
|
||||||
}
|
}
|
||||||
@ -55,8 +55,14 @@ public final class ProvidersHandler implements ProvidersManager {
|
|||||||
private void loadTickableProviders() {
|
private void loadTickableProviders() {
|
||||||
// Loading the tickable providers
|
// Loading the tickable providers
|
||||||
if (Bukkit.getPluginManager().isPluginEnabled("EpicSpawners")) {
|
if (Bukkit.getPluginManager().isPluginEnabled("EpicSpawners")) {
|
||||||
Optional<TickableProvider> tickableProvider = createInstance("TickableProvider_EpicSpawners");
|
Plugin epicSpawners = Bukkit.getPluginManager().getPlugin("EpicSpawners");
|
||||||
tickableProvider.ifPresent(this::addTickableProvider);
|
if (epicSpawners.getDescription().getVersion().startsWith("6")) {
|
||||||
|
Optional<TickableProvider> tickableProvider = createInstance("TickableProvider_EpicSpawners6");
|
||||||
|
tickableProvider.ifPresent(this::addTickableProvider);
|
||||||
|
} else {
|
||||||
|
Optional<TickableProvider> tickableProvider = createInstance("TickableProvider_EpicSpawners7");
|
||||||
|
tickableProvider.ifPresent(this::addTickableProvider);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user