From 4a471f0a93188070189af2f0aad4a2175ecc10e7 Mon Sep 17 00:00:00 2001
From: Josh Roy <10731363+JRoy@users.noreply.github.com>
Date: Wed, 24 Jun 2020 17:00:59 -0400
Subject: [PATCH] Provider Rework (#3407)
Moved providers around, made them make sense, profit
---
Essentials/pom.xml | 24 +++----
.../com/earth2me/essentials/Essentials.java | 70 +++++++++++--------
.../com/earth2me/essentials/IEssentials.java | 5 +-
.../essentials/craftbukkit/ServerState.java | 67 ------------------
Essentials/src/net/ess3/api/IEssentials.java | 4 +-
nms/LegacyProvider/pom.xml | 22 ------
.../nms/legacy/LegacySpawnerProvider.java | 24 -------
.../src/net/ess3/nms/PotionMetaProvider.java | 19 -----
.../src/net/ess3/nms/SpawnEggProvider.java | 23 ------
.../net/ess3/providers/ProviderFactory.java | 35 ----------
.../net/ess3/nms/refl/NMSVersionTest.java | 51 --------------
nms/UpdatedMetaProvider/pom.xml | 22 ------
pom.xml | 8 +--
.../BaseProviders}/pom.xml | 4 +-
.../net/ess3/provider/PotionMetaProvider.java | 8 +++
.../src/net/ess3/provider}/Provider.java | 4 +-
.../ess3/provider/ServerStateProvider.java | 5 ++
.../net/ess3/provider/SpawnEggProvider.java | 10 +++
.../net/ess3/provider}/SpawnerProvider.java | 39 +++--------
.../providers}/BasePotionDataProvider.java | 22 +++---
.../providers}/BlockMetaSpawnerProvider.java | 12 ++--
.../providers}/FlatSpawnEggProvider.java | 14 ++--
.../providers}/LegacyPotionMetaProvider.java | 8 +--
.../providers}/LegacySpawnEggProvider.java | 11 ++-
.../NMSReflectionProvider}/pom.xml | 6 +-
.../src/net/ess3/nms/refl/ReflUtil.java | 17 ++---
.../src/net/ess3/nms/refl/SpawnEggRefl.java | 8 +--
.../providers/ReflServerStateProvider.java | 45 ++++++++++++
.../refl/providers}/ReflSpawnEggProvider.java | 16 ++---
.../PaperProvider}/pom.xml | 18 ++++-
.../providers/PaperServerStateProvider.java | 16 +++++
31 files changed, 220 insertions(+), 417 deletions(-)
delete mode 100644 Essentials/src/com/earth2me/essentials/craftbukkit/ServerState.java
delete mode 100644 nms/LegacyProvider/pom.xml
delete mode 100644 nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnerProvider.java
delete mode 100644 nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java
delete mode 100644 nms/NMSProvider/src/net/ess3/nms/SpawnEggProvider.java
delete mode 100644 nms/NMSProvider/src/net/ess3/providers/ProviderFactory.java
delete mode 100644 nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java
delete mode 100644 nms/UpdatedMetaProvider/pom.xml
rename {nms/NMSProvider => providers/BaseProviders}/pom.xml (90%)
create mode 100644 providers/BaseProviders/src/net/ess3/provider/PotionMetaProvider.java
rename {nms/NMSProvider/src/net/ess3/providers => providers/BaseProviders/src/net/ess3/provider}/Provider.java (51%)
create mode 100644 providers/BaseProviders/src/net/ess3/provider/ServerStateProvider.java
create mode 100644 providers/BaseProviders/src/net/ess3/provider/SpawnEggProvider.java
rename {nms/NMSProvider/src/net/ess3/nms => providers/BaseProviders/src/net/ess3/provider}/SpawnerProvider.java (52%)
rename {nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta => providers/BaseProviders/src/net/ess3/provider/providers}/BasePotionDataProvider.java (75%)
rename {nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta => providers/BaseProviders/src/net/ess3/provider/providers}/BlockMetaSpawnerProvider.java (72%)
rename {nms/FlattenedProvider/src/net/ess3/nms/flattened => providers/BaseProviders/src/net/ess3/provider/providers}/FlatSpawnEggProvider.java (62%)
rename {nms/LegacyProvider/src/net/ess3/nms/legacy => providers/BaseProviders/src/net/ess3/provider/providers}/LegacyPotionMetaProvider.java (65%)
rename {nms/LegacyProvider/src/net/ess3/nms/legacy => providers/BaseProviders/src/net/ess3/provider/providers}/LegacySpawnEggProvider.java (71%)
rename {nms/ReflectionProvider => providers/NMSReflectionProvider}/pom.xml (87%)
rename {nms/ReflectionProvider => providers/NMSReflectionProvider}/src/net/ess3/nms/refl/ReflUtil.java (91%)
rename {nms/ReflectionProvider => providers/NMSReflectionProvider}/src/net/ess3/nms/refl/SpawnEggRefl.java (96%)
create mode 100644 providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflServerStateProvider.java
rename {nms/ReflectionProvider/src/net/ess3/nms/refl => providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers}/ReflSpawnEggProvider.java (60%)
rename {nms/FlattenedProvider => providers/PaperProvider}/pom.xml (57%)
create mode 100644 providers/PaperProvider/src/net/ess3/provider/providers/PaperServerStateProvider.java
diff --git a/Essentials/pom.xml b/Essentials/pom.xml
index 34eb443d2..5bfda19c7 100644
--- a/Essentials/pom.xml
+++ b/Essentials/pom.xml
@@ -68,32 +68,26 @@
net.ess3
- NMSProvider
+ BaseProviders
2.17.2
compile
net.ess3
- UpdatedMetaProvider
+ NMSReflectionProvider
2.17.2
compile
net.ess3
- LegacyProvider
- 2.17.2
- compile
-
-
- net.ess3
- ReflectionProvider
- 2.17.2
- compile
-
-
- net.ess3
- FlattenedProvider
+ PaperProvider
2.17.2
+
+
+ com.destroystokyo.paper
+ paper-api
+
+
compile
diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java
index 952844186..bc9327bbd 100644
--- a/Essentials/src/com/earth2me/essentials/Essentials.java
+++ b/Essentials/src/com/earth2me/essentials/Essentials.java
@@ -18,7 +18,6 @@
package com.earth2me.essentials;
import com.earth2me.essentials.commands.*;
-import com.earth2me.essentials.craftbukkit.ServerState;
import com.earth2me.essentials.items.AbstractItemDb;
import com.earth2me.essentials.items.CustomItemResolver;
import com.earth2me.essentials.items.FlatItemDb;
@@ -35,20 +34,17 @@ import com.earth2me.essentials.textreader.SimpleTextInput;
import com.earth2me.essentials.utils.DateUtil;
import com.earth2me.essentials.utils.VersionUtil;
import com.google.common.base.Throwables;
+import io.papermc.lib.PaperLib;
import net.ess3.api.IEssentials;
import net.ess3.api.ISettings;
import net.ess3.api.*;
-import net.ess3.nms.PotionMetaProvider;
-import net.ess3.nms.SpawnEggProvider;
-import net.ess3.nms.SpawnerProvider;
-import net.ess3.nms.flattened.FlatSpawnEggProvider;
-import net.ess3.nms.legacy.LegacyPotionMetaProvider;
-import net.ess3.nms.legacy.LegacySpawnEggProvider;
-import net.ess3.nms.legacy.LegacySpawnerProvider;
-import net.ess3.nms.refl.ReflSpawnEggProvider;
-import net.ess3.nms.updatedmeta.BasePotionDataProvider;
-import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider;
-import net.ess3.providers.ProviderFactory;
+import net.ess3.nms.refl.providers.ReflServerStateProvider;
+import net.ess3.nms.refl.providers.ReflSpawnEggProvider;
+import net.ess3.provider.PotionMetaProvider;
+import net.ess3.provider.ServerStateProvider;
+import net.ess3.provider.SpawnEggProvider;
+import net.ess3.provider.SpawnerProvider;
+import net.ess3.provider.providers.*;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.World;
@@ -111,6 +107,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
private transient SpawnerProvider spawnerProvider;
private transient SpawnEggProvider spawnEggProvider;
private transient PotionMetaProvider potionMetaProvider;
+ private transient ServerStateProvider serverStateProvider;
private transient Kits kits;
public Essentials() {
@@ -246,22 +243,32 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
confList.add(jails);
execTimer.mark("Init(Jails)");
- spawnerProvider = new ProviderFactory<>(getLogger(),
- Arrays.asList(
- BlockMetaSpawnerProvider.class,
- LegacySpawnerProvider.class
- ), "mob spawner").getProvider();
- spawnEggProvider = new ProviderFactory<>(getLogger(),
- Arrays.asList(
- FlatSpawnEggProvider.class,
- ReflSpawnEggProvider.class,
- LegacySpawnEggProvider.class
- ), "spawn egg").getProvider();
- potionMetaProvider = new ProviderFactory<>(getLogger(),
- Arrays.asList(
- BasePotionDataProvider.class,
- LegacyPotionMetaProvider.class
- ), "potion meta").getProvider();
+ //Spawner provider only uses one but it's here for legacy...
+ spawnerProvider = new BlockMetaSpawnerProvider();
+
+ //Spawn Egg Providers
+ if (VersionUtil.getServerBukkitVersion().isLowerThanOrEqualTo(VersionUtil.v1_8_8_R01)) {
+ spawnEggProvider = new LegacySpawnEggProvider();
+ } else if (VersionUtil.getServerBukkitVersion().isLowerThanOrEqualTo(VersionUtil.v1_12_2_R01)) {
+ spawnEggProvider = new ReflSpawnEggProvider();
+ } else {
+ spawnEggProvider = new FlatSpawnEggProvider();
+ }
+
+ //Potion Meta Provider
+ if (VersionUtil.getServerBukkitVersion().isLowerThanOrEqualTo(VersionUtil.v1_8_8_R01)) {
+ potionMetaProvider = new LegacyPotionMetaProvider();
+ } else {
+ potionMetaProvider = new BasePotionDataProvider();
+ }
+
+ //Server State Provider
+ if (PaperLib.isPaper() && VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_15_2_R01)) {
+ serverStateProvider = new PaperServerStateProvider();
+ } else {
+ serverStateProvider = new ReflServerStateProvider(getLogger());
+ }
+
execTimer.mark("Init(Providers)");
reload();
@@ -360,7 +367,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
@Override
public void onDisable() {
- boolean stopping = ServerState.isStopping();
+ boolean stopping = getServerStateProvider().isStopping();
if (!stopping) {
LOGGER.log(Level.SEVERE, tl("serverReloading"));
}
@@ -949,6 +956,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials {
return customItemResolver;
}
+ @Override
+ public ServerStateProvider getServerStateProvider() {
+ return serverStateProvider;
+ }
+
private static void addDefaultBackPermissionsToWorld(World w) {
String permName = "essentials.back.into." + w.getName();
diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java
index 7c34c1698..acc061e6d 100644
--- a/Essentials/src/com/earth2me/essentials/IEssentials.java
+++ b/Essentials/src/com/earth2me/essentials/IEssentials.java
@@ -6,7 +6,8 @@ import com.earth2me.essentials.api.IWarps;
import com.earth2me.essentials.metrics.Metrics;
import com.earth2me.essentials.perm.PermissionsHandler;
import com.earth2me.essentials.register.payment.Methods;
-import net.ess3.nms.SpawnerProvider;
+import net.ess3.provider.ServerStateProvider;
+import net.ess3.provider.SpawnerProvider;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -106,4 +107,6 @@ public interface IEssentials extends Plugin {
Iterable getOnlineUsers();
SpawnerProvider getSpawnerProvider();
+
+ ServerStateProvider getServerStateProvider();
}
diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/ServerState.java b/Essentials/src/com/earth2me/essentials/craftbukkit/ServerState.java
deleted file mode 100644
index c8febbb6c..000000000
--- a/Essentials/src/com/earth2me/essentials/craftbukkit/ServerState.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.earth2me.essentials.craftbukkit;
-
-import net.ess3.nms.refl.ReflUtil;
-import org.bukkit.Bukkit;
-
-import java.lang.invoke.MethodHandle;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.MethodType;
-
-public class ServerState {
-
- private static final MethodHandle isStopping; //Only in Paper
- private static final MethodHandle nmsHasStopped;
- private static final MethodHandle nmsIsRunning;
- private static final Object nmsServer;
-
- static {
- MethodHandle isStoppingHandle = null;
- MethodHandle nmsHasStoppedHandle = null;
- MethodHandle nmsIsRunningHandle = null;
- Object nmsServerObject = null;
- try {
- //noinspection JavaLangInvokeHandleSignature - We don't compile against Paper
- isStoppingHandle = MethodHandles.lookup().findStatic(Bukkit.class, "isStopping", MethodType.methodType(boolean.class));
- } catch (Throwable e) {
- try {
- Class> nmsClass = ReflUtil.getNMSClass("MinecraftServer");
- if (nmsClass != null) {
- nmsServerObject = nmsClass.getMethod("getServer").invoke(null);
- nmsIsRunningHandle = MethodHandles.lookup().findVirtual(nmsClass, "isRunning", MethodType.methodType(boolean.class));
- nmsHasStoppedHandle = MethodHandles.lookup().findVirtual(nmsClass, "hasStopped", MethodType.methodType(boolean.class));
- }
- } catch (Throwable ignored) {
- }
- }
- isStopping = isStoppingHandle;
- nmsHasStopped = nmsHasStoppedHandle;
- nmsIsRunning = nmsIsRunningHandle;
- nmsServer = nmsServerObject;
- }
-
- public static boolean isStopping() {
- boolean stopping = false;
- if (isStopping != null) {
- try {
- stopping = (boolean) isStopping.invoke();
- } catch (Throwable t) {
- t.printStackTrace();
- }
- } else if (nmsServer != null) {
- if (nmsHasStopped != null) {
- try {
- stopping = (boolean) nmsHasStopped.invoke(nmsServer);
- } catch (Throwable t) {
- t.printStackTrace();
- }
- } else if (nmsIsRunning != null) {
- try {
- stopping = !(boolean) nmsIsRunning.invoke(nmsServer);
- } catch (Throwable t) {
- t.printStackTrace();
- }
- }
- }
- return stopping;
- }
-}
diff --git a/Essentials/src/net/ess3/api/IEssentials.java b/Essentials/src/net/ess3/api/IEssentials.java
index 56d878039..0c13aee98 100644
--- a/Essentials/src/net/ess3/api/IEssentials.java
+++ b/Essentials/src/net/ess3/api/IEssentials.java
@@ -1,8 +1,8 @@
package net.ess3.api;
import com.earth2me.essentials.items.CustomItemResolver;
-import net.ess3.nms.PotionMetaProvider;
-import net.ess3.nms.SpawnEggProvider;
+import net.ess3.provider.PotionMetaProvider;
+import net.ess3.provider.SpawnEggProvider;
import java.util.Collection;
diff --git a/nms/LegacyProvider/pom.xml b/nms/LegacyProvider/pom.xml
deleted file mode 100644
index e588685c2..000000000
--- a/nms/LegacyProvider/pom.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- EssentialsXParent
- net.ess3
- 2.17.2
- ../../pom.xml
-
- 4.0.0
-
- LegacyProvider
-
-
-
- net.ess3
- NMSProvider
- 2.17.2
-
-
-
\ No newline at end of file
diff --git a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnerProvider.java b/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnerProvider.java
deleted file mode 100644
index 1a2716149..000000000
--- a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnerProvider.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package net.ess3.nms.legacy;
-
-import net.ess3.nms.SpawnerProvider;
-import org.bukkit.entity.EntityType;
-import org.bukkit.inventory.ItemStack;
-
-@SuppressWarnings("deprecation")
-public class LegacySpawnerProvider extends SpawnerProvider {
- @Override
- public ItemStack setEntityType(ItemStack is, EntityType type) {
- is.getData().setData((byte) type.getTypeId());
- return setDisplayName(is, type);
- }
-
- @Override
- public EntityType getEntityType(ItemStack is) {
- return EntityType.fromId((int) is.getData().getData());
- }
-
- @Override
- public String getDescription() {
- return "legacy item data provider";
- }
-}
diff --git a/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java b/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java
deleted file mode 100644
index 2031dbade..000000000
--- a/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package net.ess3.nms;
-
-import net.ess3.providers.Provider;
-import org.bukkit.Material;
-import org.bukkit.inventory.ItemStack;
-
-public abstract class PotionMetaProvider implements Provider {
- public abstract ItemStack createPotionItem(Material initial, int effectId);
-
- @Override
- public boolean tryProvider() {
- try {
- createPotionItem(Material.POTION, 8260); // Poison Level II Extended
- return true;
- } catch (Throwable t) {
- return false;
- }
- }
-}
diff --git a/nms/NMSProvider/src/net/ess3/nms/SpawnEggProvider.java b/nms/NMSProvider/src/net/ess3/nms/SpawnEggProvider.java
deleted file mode 100644
index cd83b6c8e..000000000
--- a/nms/NMSProvider/src/net/ess3/nms/SpawnEggProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package net.ess3.nms;
-
-import net.ess3.providers.Provider;
-import org.bukkit.entity.EntityType;
-import org.bukkit.inventory.ItemStack;
-
-public abstract class SpawnEggProvider implements Provider {
- public abstract ItemStack createEggItem(EntityType type) throws IllegalArgumentException;
-
- public abstract EntityType getSpawnedType(ItemStack eggItem) throws IllegalArgumentException;
-
- @Override
- public boolean tryProvider() {
- try {
- EntityType type = EntityType.CREEPER;
- ItemStack is = createEggItem(type);
- EntityType readType = getSpawnedType(is);
- return type == readType;
- } catch (Throwable t) {
- return false;
- }
- }
-}
diff --git a/nms/NMSProvider/src/net/ess3/providers/ProviderFactory.java b/nms/NMSProvider/src/net/ess3/providers/ProviderFactory.java
deleted file mode 100644
index 53b44bf70..000000000
--- a/nms/NMSProvider/src/net/ess3/providers/ProviderFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package net.ess3.providers;
-
-import java.util.logging.Logger;
-
-public class ProviderFactory {
- private Logger logger;
- private String providerType;
- private Iterable> providers;
-
- public ProviderFactory(Logger logger, Iterable> providers, String providerType) {
- this.logger = logger;
- this.providerType = providerType;
- this.providers = providers;
- }
-
- public T getProvider() {
- for (Class extends T> providerClass : providers) {
- T provider = loadProvider(providerClass);
- if (provider != null && provider.tryProvider()) {
- logger.info("Using " + provider.getDescription() + " as " + providerType + " provider.");
- return provider;
- }
- }
- logger.severe("The " + providerType + " provider failed to load! Some parts of Essentials may not function correctly.");
- return null;
- }
-
- private T loadProvider(Class extends T> providerClass) {
- try {
- return providerClass.getConstructor().newInstance();
- } catch (Throwable ignored) {
- return null;
- }
- }
-}
diff --git a/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java b/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java
deleted file mode 100644
index 433fcd23f..000000000
--- a/nms/ReflectionProvider/test/net/ess3/nms/refl/NMSVersionTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package net.ess3.nms.refl;
-
-import net.ess3.nms.refl.ReflUtil.NMSVersion;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class NMSVersionTest {
-
- @Test
- public void testMajor() {
- NMSVersion v2_9_R1 = NMSVersion.fromString("v2_9_R1");
-
- Assert.assertEquals(2, v2_9_R1.getMajor());
- Assert.assertEquals(9, v2_9_R1.getMinor());
- Assert.assertEquals(1, v2_9_R1.getRelease());
-
- Assert.assertEquals(v2_9_R1.toString(), "v2_9_R1");
-
- Assert.assertTrue(v2_9_R1.isHigherThan(NMSVersion.fromString("v1_10_R1")));
- Assert.assertTrue(v2_9_R1.isHigherThanOrEqualTo(NMSVersion.fromString("v1_9_R1")));
- }
-
- @Test
- public void testMinor() {
- NMSVersion v1_10_R1 = NMSVersion.fromString("v1_10_R1");
-
- Assert.assertEquals(1, v1_10_R1.getMajor());
- Assert.assertEquals(10, v1_10_R1.getMinor());
- Assert.assertEquals(1, v1_10_R1.getRelease());
-
- Assert.assertEquals(v1_10_R1.toString(), "v1_10_R1");
-
- Assert.assertTrue(NMSVersion.fromString("v1_9_R1").isLowerThan(v1_10_R1));
- Assert.assertTrue(NMSVersion.fromString("v1_9_R1").isLowerThanOrEqualTo(v1_10_R1));
- }
-
- @Test
- public void testRelease() {
- NMSVersion v1_9_R2 = NMSVersion.fromString("v1_9_R2");
-
- Assert.assertEquals(1, v1_9_R2.getMajor());
- Assert.assertEquals(9, v1_9_R2.getMinor());
- Assert.assertEquals(2, v1_9_R2.getRelease());
-
- Assert.assertEquals(v1_9_R2.toString(), "v1_9_R2");
- Assert.assertEquals(v1_9_R2, NMSVersion.fromString("v1_9_R2"));
-
- Assert.assertTrue(v1_9_R2.isHigherThan(NMSVersion.fromString("v1_9_R1")));
- }
-}
diff --git a/nms/UpdatedMetaProvider/pom.xml b/nms/UpdatedMetaProvider/pom.xml
deleted file mode 100644
index 80b0a1cb2..000000000
--- a/nms/UpdatedMetaProvider/pom.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- EssentialsXParent
- net.ess3
- 2.17.2
- ../../pom.xml
-
- 4.0.0
-
- UpdatedMetaProvider
-
-
-
- net.ess3
- NMSProvider
- 2.17.2
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 85f8a8e94..00dd9ad72 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,11 +49,9 @@
EssentialsProtect
EssentialsSpawn
EssentialsXMPP
- nms/NMSProvider
- nms/UpdatedMetaProvider
- nms/LegacyProvider
- nms/ReflectionProvider
- nms/FlattenedProvider
+ providers/BaseProviders
+ providers/NMSReflectionProvider
+ providers/PaperProvider
diff --git a/nms/NMSProvider/pom.xml b/providers/BaseProviders/pom.xml
similarity index 90%
rename from nms/NMSProvider/pom.xml
rename to providers/BaseProviders/pom.xml
index 7c1f8fb9e..aa7a501e1 100644
--- a/nms/NMSProvider/pom.xml
+++ b/providers/BaseProviders/pom.xml
@@ -10,5 +10,5 @@
4.0.0
- NMSProvider
-
\ No newline at end of file
+ BaseProviders
+
diff --git a/providers/BaseProviders/src/net/ess3/provider/PotionMetaProvider.java b/providers/BaseProviders/src/net/ess3/provider/PotionMetaProvider.java
new file mode 100644
index 000000000..637a470a5
--- /dev/null
+++ b/providers/BaseProviders/src/net/ess3/provider/PotionMetaProvider.java
@@ -0,0 +1,8 @@
+package net.ess3.provider;
+
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+
+public interface PotionMetaProvider extends Provider {
+ ItemStack createPotionItem(Material initial, int effectId);
+}
diff --git a/nms/NMSProvider/src/net/ess3/providers/Provider.java b/providers/BaseProviders/src/net/ess3/provider/Provider.java
similarity index 51%
rename from nms/NMSProvider/src/net/ess3/providers/Provider.java
rename to providers/BaseProviders/src/net/ess3/provider/Provider.java
index 0e23e9f6d..5e3916ca8 100644
--- a/nms/NMSProvider/src/net/ess3/providers/Provider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/Provider.java
@@ -1,7 +1,5 @@
-package net.ess3.providers;
+package net.ess3.provider;
public interface Provider {
- boolean tryProvider();
-
String getDescription();
}
diff --git a/providers/BaseProviders/src/net/ess3/provider/ServerStateProvider.java b/providers/BaseProviders/src/net/ess3/provider/ServerStateProvider.java
new file mode 100644
index 000000000..4edc548bb
--- /dev/null
+++ b/providers/BaseProviders/src/net/ess3/provider/ServerStateProvider.java
@@ -0,0 +1,5 @@
+package net.ess3.provider;
+
+public interface ServerStateProvider extends Provider {
+ boolean isStopping();
+}
diff --git a/providers/BaseProviders/src/net/ess3/provider/SpawnEggProvider.java b/providers/BaseProviders/src/net/ess3/provider/SpawnEggProvider.java
new file mode 100644
index 000000000..ab56e9162
--- /dev/null
+++ b/providers/BaseProviders/src/net/ess3/provider/SpawnEggProvider.java
@@ -0,0 +1,10 @@
+package net.ess3.provider;
+
+import org.bukkit.entity.EntityType;
+import org.bukkit.inventory.ItemStack;
+
+public interface SpawnEggProvider extends Provider {
+ ItemStack createEggItem(EntityType type) throws IllegalArgumentException;
+
+ EntityType getSpawnedType(ItemStack eggItem) throws IllegalArgumentException;
+}
diff --git a/nms/NMSProvider/src/net/ess3/nms/SpawnerProvider.java b/providers/BaseProviders/src/net/ess3/provider/SpawnerProvider.java
similarity index 52%
rename from nms/NMSProvider/src/net/ess3/nms/SpawnerProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/SpawnerProvider.java
index 4d142cdd2..df330ae84 100644
--- a/nms/NMSProvider/src/net/ess3/nms/SpawnerProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/SpawnerProvider.java
@@ -1,17 +1,19 @@
-package net.ess3.nms;
+package net.ess3.provider;
import com.google.common.collect.ImmutableMap;
-import net.ess3.providers.Provider;
import org.bukkit.ChatColor;
-import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.Map;
-public abstract class SpawnerProvider implements Provider {
- private Map entityToDisplayName = ImmutableMap.builder()
+public interface SpawnerProvider extends Provider {
+ ItemStack setEntityType(ItemStack is, EntityType type) throws IllegalArgumentException;
+
+ EntityType getEntityType(ItemStack is) throws IllegalArgumentException;
+
+ Map entityToDisplayName = ImmutableMap.builder()
.put(EntityType.CAVE_SPIDER, "Cave Spider")
.put(EntityType.PIG_ZOMBIE, "Zombie Pigman")
.put(EntityType.MAGMA_CUBE, "Magma Cube")
@@ -24,36 +26,13 @@ public abstract class SpawnerProvider implements Provider {
.put(EntityType.HORSE, "Horse")
.build();
- public abstract ItemStack setEntityType(ItemStack is, EntityType type) throws IllegalArgumentException;
-
- public abstract EntityType getEntityType(ItemStack is) throws IllegalArgumentException;
-
- @Override
- public boolean tryProvider() {
- EntityType type = EntityType.CREEPER;
- Material MOB_SPAWNER;
- try {
- MOB_SPAWNER = Material.valueOf("SPAWNER");
- } catch (Exception e) {
- MOB_SPAWNER = Material.valueOf("MOB_SPAWNER");
- }
-
- try {
- ItemStack is = setEntityType(new ItemStack(MOB_SPAWNER), type);
- EntityType readType = getEntityType(is);
- return type == readType;
- } catch (Throwable t) {
- return false;
- }
- }
-
- @SuppressWarnings("deprecation")
- protected ItemStack setDisplayName(ItemStack is, EntityType type) {
+ default ItemStack setDisplayName(ItemStack is, EntityType type) {
ItemMeta meta = is.getItemMeta();
String displayName;
if (entityToDisplayName.containsKey(type)) {
displayName = entityToDisplayName.get(type);
} else {
+ //noinspection deprecation
displayName = type.getName();
}
meta.setDisplayName(ChatColor.RESET + displayName + " Spawner");
diff --git a/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java b/providers/BaseProviders/src/net/ess3/provider/providers/BasePotionDataProvider.java
similarity index 75%
rename from nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/providers/BasePotionDataProvider.java
index ed3464c23..210a6be65 100644
--- a/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/providers/BasePotionDataProvider.java
@@ -1,7 +1,7 @@
-package net.ess3.nms.updatedmeta;
+package net.ess3.provider.providers;
import com.google.common.collect.ImmutableMap;
-import net.ess3.nms.PotionMetaProvider;
+import net.ess3.provider.PotionMetaProvider;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
@@ -10,8 +10,8 @@ import org.bukkit.potion.PotionType;
import java.util.Map;
-public class BasePotionDataProvider extends PotionMetaProvider {
- private static Map damageValueToType = ImmutableMap.builder()
+public class BasePotionDataProvider implements PotionMetaProvider {
+ private static final Map damageValueToType = ImmutableMap.builder()
.put(1, PotionType.REGEN)
.put(2, PotionType.SPEED)
.put(3, PotionType.FIRE_RESISTANCE)
@@ -29,7 +29,7 @@ public class BasePotionDataProvider extends PotionMetaProvider {
.build();
@Override
- public ItemStack createPotionItem(Material initial, int effectId) throws IllegalArgumentException {
+ public ItemStack createPotionItem(Material initial, int effectId) {
ItemStack potion = new ItemStack(initial, 1);
if (effectId == 0) {
@@ -46,16 +46,14 @@ public class BasePotionDataProvider extends PotionMetaProvider {
throw new IllegalArgumentException("Unable to process potion effect ID " + effectId + " with damage value " + damageValue);
}
- boolean extended = getBit(effectId, 6) == 1;
- boolean upgraded = getBit(effectId, 5) == 1;
- boolean splash = getBit(effectId, 14) == 1;
-
- if (splash && initial == Material.POTION) {
+ //getBit is splash here
+ if (getBit(effectId, 14) == 1 && initial == Material.POTION) {
potion = new ItemStack(Material.SPLASH_POTION, 1);
}
PotionMeta meta = (PotionMeta) potion.getItemMeta();
- PotionData data = new PotionData(type, extended, upgraded);
+ //getBit(s) are extended and upgraded respectfully
+ PotionData data = new PotionData(type, getBit(effectId, 6) == 1, getBit(effectId, 5) == 1);
meta.setBasePotionData(data); // this method is exclusive to recent 1.9+
potion.setItemMeta(meta);
@@ -68,6 +66,6 @@ public class BasePotionDataProvider extends PotionMetaProvider {
@Override
public String getDescription() {
- return "1.9+ BasePotionData provider";
+ return "1.9+ Potion Meta Provider";
}
}
diff --git a/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java b/providers/BaseProviders/src/net/ess3/provider/providers/BlockMetaSpawnerProvider.java
similarity index 72%
rename from nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/providers/BlockMetaSpawnerProvider.java
index 0a4b18861..ac5c1bd28 100644
--- a/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/providers/BlockMetaSpawnerProvider.java
@@ -1,15 +1,15 @@
-package net.ess3.nms.updatedmeta;
+package net.ess3.provider.providers;
-import net.ess3.nms.SpawnerProvider;
+import net.ess3.provider.SpawnerProvider;
import org.bukkit.block.BlockState;
import org.bukkit.block.CreatureSpawner;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.BlockStateMeta;
-public class BlockMetaSpawnerProvider extends SpawnerProvider {
+public class BlockMetaSpawnerProvider implements SpawnerProvider {
@Override
- public ItemStack setEntityType(ItemStack is, EntityType type) {
+ public ItemStack setEntityType(ItemStack is, EntityType type) throws IllegalArgumentException {
BlockStateMeta bsm = (BlockStateMeta) is.getItemMeta();
BlockState bs = bsm.getBlockState();
((CreatureSpawner) bs).setSpawnedType(type);
@@ -19,7 +19,7 @@ public class BlockMetaSpawnerProvider extends SpawnerProvider {
}
@Override
- public EntityType getEntityType(ItemStack is) {
+ public EntityType getEntityType(ItemStack is) throws IllegalArgumentException {
BlockStateMeta bsm = (BlockStateMeta) is.getItemMeta();
CreatureSpawner bs = (CreatureSpawner) bsm.getBlockState();
return bs.getSpawnedType();
@@ -27,6 +27,6 @@ public class BlockMetaSpawnerProvider extends SpawnerProvider {
@Override
public String getDescription() {
- return "1.8.3+ BlockStateMeta provider";
+ return "1.8.3+ Spawner Provider";
}
}
diff --git a/nms/FlattenedProvider/src/net/ess3/nms/flattened/FlatSpawnEggProvider.java b/providers/BaseProviders/src/net/ess3/provider/providers/FlatSpawnEggProvider.java
similarity index 62%
rename from nms/FlattenedProvider/src/net/ess3/nms/flattened/FlatSpawnEggProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/providers/FlatSpawnEggProvider.java
index bea240ba4..e90bc20be 100644
--- a/nms/FlattenedProvider/src/net/ess3/nms/flattened/FlatSpawnEggProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/providers/FlatSpawnEggProvider.java
@@ -1,15 +1,14 @@
-package net.ess3.nms.flattened;
+package net.ess3.provider.providers;
-import net.ess3.nms.SpawnEggProvider;
+import net.ess3.provider.SpawnEggProvider;
import org.bukkit.Material;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
-public class FlatSpawnEggProvider extends SpawnEggProvider {
+public class FlatSpawnEggProvider implements SpawnEggProvider {
@Override
public ItemStack createEggItem(EntityType type) throws IllegalArgumentException {
- String name = type.name() + "_SPAWN_EGG";
- Material material = Material.valueOf(name);
+ Material material = Material.valueOf(type.name() + "_SPAWN_EGG");
return new ItemStack(material);
}
@@ -18,13 +17,12 @@ public class FlatSpawnEggProvider extends SpawnEggProvider {
String materialName = eggItem.getType().name();
if (materialName.contains("_SPAWN_EGG")) {
return EntityType.valueOf(materialName.replace("_SPAWN_EGG", ""));
- } else {
- throw new IllegalArgumentException("Not a spawn egg");
}
+ throw new IllegalArgumentException("Not a spawn egg");
}
@Override
public String getDescription() {
- return "1.13+ flat spawn egg provider";
+ return "1.13+ Flattening Spawn Egg Provider";
}
}
diff --git a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java b/providers/BaseProviders/src/net/ess3/provider/providers/LegacyPotionMetaProvider.java
similarity index 65%
rename from nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/providers/LegacyPotionMetaProvider.java
index 5170d4e90..6391ee585 100644
--- a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/providers/LegacyPotionMetaProvider.java
@@ -1,11 +1,11 @@
-package net.ess3.nms.legacy;
+package net.ess3.provider.providers;
-import net.ess3.nms.PotionMetaProvider;
+import net.ess3.provider.PotionMetaProvider;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
@SuppressWarnings("deprecation")
-public class LegacyPotionMetaProvider extends PotionMetaProvider {
+public class LegacyPotionMetaProvider implements PotionMetaProvider {
@Override
public ItemStack createPotionItem(Material initial, int effectId) {
ItemStack potion = new ItemStack(initial, 1);
@@ -15,6 +15,6 @@ public class LegacyPotionMetaProvider extends PotionMetaProvider {
@Override
public String getDescription() {
- return "legacy potion meta provider";
+ return "Legacy 1.8 Potion Meta Provider";
}
}
diff --git a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnEggProvider.java b/providers/BaseProviders/src/net/ess3/provider/providers/LegacySpawnEggProvider.java
similarity index 71%
rename from nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnEggProvider.java
rename to providers/BaseProviders/src/net/ess3/provider/providers/LegacySpawnEggProvider.java
index 27d6a25ff..8fb3c751c 100644
--- a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacySpawnEggProvider.java
+++ b/providers/BaseProviders/src/net/ess3/provider/providers/LegacySpawnEggProvider.java
@@ -1,13 +1,13 @@
-package net.ess3.nms.legacy;
+package net.ess3.provider.providers;
-import net.ess3.nms.SpawnEggProvider;
+import net.ess3.provider.SpawnEggProvider;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.material.SpawnEgg;
@SuppressWarnings("deprecation")
-public class LegacySpawnEggProvider extends SpawnEggProvider {
+public class LegacySpawnEggProvider implements SpawnEggProvider {
@Override
public ItemStack createEggItem(EntityType type) throws IllegalArgumentException {
return new SpawnEgg(type).toItemStack();
@@ -18,13 +18,12 @@ public class LegacySpawnEggProvider extends SpawnEggProvider {
MaterialData data = eggItem.getData();
if (data instanceof SpawnEgg) {
return ((SpawnEgg) data).getSpawnedType();
- } else {
- throw new IllegalArgumentException("Item is missing data");
}
+ throw new IllegalArgumentException("Item is missing data");
}
@Override
public String getDescription() {
- return "legacy item data provider";
+ return "Legacy 1.8 Spawn Egg Provider";
}
}
diff --git a/nms/ReflectionProvider/pom.xml b/providers/NMSReflectionProvider/pom.xml
similarity index 87%
rename from nms/ReflectionProvider/pom.xml
rename to providers/NMSReflectionProvider/pom.xml
index c373804b0..9dcbb3530 100644
--- a/nms/ReflectionProvider/pom.xml
+++ b/providers/NMSReflectionProvider/pom.xml
@@ -10,12 +10,12 @@
4.0.0
- ReflectionProvider
+ NMSReflectionProvider
-
+
net.ess3
- NMSProvider
+ BaseProviders
2.17.2
diff --git a/nms/ReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java
similarity index 91%
rename from nms/ReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java
rename to providers/NMSReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java
index f29bec133..a14602e8a 100644
--- a/nms/ReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java
+++ b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/ReflUtil.java
@@ -17,14 +17,9 @@ import java.util.regex.Pattern;
public class ReflUtil {
public static final NMSVersion V1_8_R1 = NMSVersion.fromString("v1_8_R1");
- public static final NMSVersion V1_8_R2 = NMSVersion.fromString("v1_8_R2");
- public static final NMSVersion V1_8_R3 = NMSVersion.fromString("v1_8_R3");
public static final NMSVersion V1_9_R1 = NMSVersion.fromString("v1_9_R1");
- public static final NMSVersion V1_10_R1 = NMSVersion.fromString("v1_10_R1");
public static final NMSVersion V1_11_R1 = NMSVersion.fromString("v1_11_R1");
public static final NMSVersion V1_12_R1 = NMSVersion.fromString("v1_12_R1");
- public static final NMSVersion V1_13_R1 = NMSVersion.fromString("v1_13_R1");
- public static final NMSVersion V1_13_R2 = NMSVersion.fromString("v1_13_R2");
private static NMSVersion nmsVersionObject;
private static String nmsVersion;
@@ -52,7 +47,7 @@ public class ReflUtil {
return getClassCached("org.bukkit.craftbukkit." + getNMSVersion() + "." + className);
}
- private static Map> classCache = new HashMap<>();
+ private static final Map> classCache = new HashMap<>();
public static Class> getClassCached(String className) {
if (classCache.containsKey(className)) {
@@ -67,7 +62,7 @@ public class ReflUtil {
}
}
- private static Table, String, Method> methodCache = HashBasedTable.create();
+ private static final Table, String, Method> methodCache = HashBasedTable.create();
public static Method getMethodCached(Class> clazz, String methodName) {
if (methodCache.contains(clazz, methodName)) {
@@ -83,7 +78,7 @@ public class ReflUtil {
}
}
- private static Table, MethodParams, Method> methodParamCache = HashBasedTable.create();
+ private static final Table, MethodParams, Method> methodParamCache = HashBasedTable.create();
public static Method getMethodCached(Class> clazz, String methodName, Class>... params) {
MethodParams methodParams = new MethodParams(methodName, params);
@@ -100,7 +95,7 @@ public class ReflUtil {
}
}
- private static Table, String, Field> fieldCache = HashBasedTable.create();
+ private static final Table, String, Field> fieldCache = HashBasedTable.create();
public static Field getFieldCached(Class> clazz, String fieldName) {
if (fieldCache.contains(clazz, fieldName)) {
@@ -116,7 +111,7 @@ public class ReflUtil {
}
}
- private static Map, Constructor>> constructorCache = new HashMap<>();
+ private static final Map, Constructor>> constructorCache = new HashMap<>();
public static Constructor> getConstructorCached(Class> clazz) {
if (constructorCache.containsKey(clazz)) {
@@ -132,7 +127,7 @@ public class ReflUtil {
}
}
- private static Table, ConstructorParams, Constructor>> constructorParamCache = HashBasedTable.create();
+ private static final Table, ConstructorParams, Constructor>> constructorParamCache = HashBasedTable.create();
public static Constructor> getConstructorCached(Class> clazz, Class>... params) {
ConstructorParams constructorParams = new ConstructorParams(params);
diff --git a/nms/ReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java
similarity index 96%
rename from nms/ReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java
rename to providers/NMSReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java
index b5fc981db..267a86cf1 100644
--- a/nms/ReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java
+++ b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/SpawnEggRefl.java
@@ -33,7 +33,7 @@ import java.lang.reflect.Method;
public class SpawnEggRefl {
private EntityType type;
- SpawnEggRefl(EntityType type) {
+ public SpawnEggRefl(EntityType type) {
this.type = type;
}
@@ -42,7 +42,7 @@ public class SpawnEggRefl {
*
* @return The entity type.
*/
- EntityType getSpawnedType() {
+ public EntityType getSpawnedType() {
return type;
}
@@ -67,7 +67,7 @@ public class SpawnEggRefl {
*
* @return ItemStack
*/
- ItemStack toItemStack() throws Exception {
+ public ItemStack toItemStack() throws Exception {
return toItemStack(1);
}
@@ -119,7 +119,7 @@ public class SpawnEggRefl {
* @param item - ItemStack, quantity is disregarded
* @return SpawnEgg
*/
- static SpawnEggRefl fromItemStack(ItemStack item) throws Exception {
+ public static SpawnEggRefl fromItemStack(ItemStack item) throws Exception {
if (item == null)
throw new IllegalArgumentException("Item cannot be null");
if (item.getType() != Material.MONSTER_EGG)
diff --git a/providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflServerStateProvider.java b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflServerStateProvider.java
new file mode 100644
index 000000000..c4b49e730
--- /dev/null
+++ b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflServerStateProvider.java
@@ -0,0 +1,45 @@
+package net.ess3.nms.refl.providers;
+
+import net.ess3.nms.refl.ReflUtil;
+import net.ess3.provider.ServerStateProvider;
+
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.util.logging.Logger;
+
+public class ReflServerStateProvider implements ServerStateProvider {
+ private final Object nmsServer;
+ private final MethodHandle nmsIsRunning;
+
+ public ReflServerStateProvider(Logger logger) {
+ Object serverObject = null;
+ MethodHandle isRunning = null;
+ Class> nmsClass = ReflUtil.getNMSClass("MinecraftServer");
+ try {
+ serverObject = nmsClass.getMethod("getServer").invoke(null);
+ isRunning = MethodHandles.lookup().findVirtual(nmsClass, "isRunning", MethodType.methodType(boolean.class));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ nmsServer = serverObject;
+ nmsIsRunning = isRunning;
+ }
+
+ @Override
+ public boolean isStopping() {
+ if (nmsServer != null && nmsIsRunning != null) {
+ try {
+ return !(boolean) nmsIsRunning.invoke(nmsServer);
+ } catch (Throwable throwable) {
+ throwable.printStackTrace();
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getDescription() {
+ return "NMS Reflection Server State Provider";
+ }
+}
diff --git a/nms/ReflectionProvider/src/net/ess3/nms/refl/ReflSpawnEggProvider.java b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflSpawnEggProvider.java
similarity index 60%
rename from nms/ReflectionProvider/src/net/ess3/nms/refl/ReflSpawnEggProvider.java
rename to providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflSpawnEggProvider.java
index 93301fd02..284f40c85 100644
--- a/nms/ReflectionProvider/src/net/ess3/nms/refl/ReflSpawnEggProvider.java
+++ b/providers/NMSReflectionProvider/src/net/ess3/nms/refl/providers/ReflSpawnEggProvider.java
@@ -1,15 +1,14 @@
-package net.ess3.nms.refl;
+package net.ess3.nms.refl.providers;
-import net.ess3.nms.SpawnEggProvider;
+import net.ess3.nms.refl.SpawnEggRefl;
+import net.ess3.provider.SpawnEggProvider;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
-public class ReflSpawnEggProvider extends SpawnEggProvider {
+public class ReflSpawnEggProvider implements SpawnEggProvider {
+
@Override
public ItemStack createEggItem(EntityType type) throws IllegalArgumentException {
- if (ReflUtil.getNMSVersion().startsWith("v1_8_R")) {
- throw new IllegalArgumentException("1.8 servers should use legacy provider");
- }
try {
return new SpawnEggRefl(type).toItemStack();
} catch (Exception e) {
@@ -19,9 +18,6 @@ public class ReflSpawnEggProvider extends SpawnEggProvider {
@Override
public EntityType getSpawnedType(ItemStack eggItem) throws IllegalArgumentException {
- if (ReflUtil.getNMSVersion().startsWith("v1_8_R")) {
- throw new IllegalArgumentException("1.8 servers should use legacy provider");
- }
try {
return SpawnEggRefl.fromItemStack(eggItem).getSpawnedType();
} catch (Exception e) {
@@ -31,6 +27,6 @@ public class ReflSpawnEggProvider extends SpawnEggProvider {
@Override
public String getDescription() {
- return "Reflection based provider";
+ return "NMS Reflection Provider";
}
}
diff --git a/nms/FlattenedProvider/pom.xml b/providers/PaperProvider/pom.xml
similarity index 57%
rename from nms/FlattenedProvider/pom.xml
rename to providers/PaperProvider/pom.xml
index 84308fef8..0568e1b10 100644
--- a/nms/FlattenedProvider/pom.xml
+++ b/providers/PaperProvider/pom.xml
@@ -10,13 +10,25 @@
4.0.0
- FlattenedProvider
+ PaperProvider
+
+
+
+ paper-repo
+ https://papermc.io/repo/repository/maven-public/
+
+
net.ess3
- NMSProvider
+ BaseProviders
2.17.2
+
+ com.destroystokyo.paper
+ paper-api
+ 1.15.2-R0.1-SNAPSHOT
+
-
\ No newline at end of file
+
diff --git a/providers/PaperProvider/src/net/ess3/provider/providers/PaperServerStateProvider.java b/providers/PaperProvider/src/net/ess3/provider/providers/PaperServerStateProvider.java
new file mode 100644
index 000000000..ab201ed0b
--- /dev/null
+++ b/providers/PaperProvider/src/net/ess3/provider/providers/PaperServerStateProvider.java
@@ -0,0 +1,16 @@
+package net.ess3.provider.providers;
+
+import net.ess3.provider.ServerStateProvider;
+import org.bukkit.Bukkit;
+
+public class PaperServerStateProvider implements ServerStateProvider {
+ @Override
+ public boolean isStopping() {
+ return Bukkit.isStopping();
+ }
+
+ @Override
+ public String getDescription() {
+ return "Paper Server State Provider";
+ }
+}