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 (86%) 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 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 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 86% 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"; + } +}