From ec1215b22799f17ef03cd7087413c0a497a79353 Mon Sep 17 00:00:00 2001 From: vemacs Date: Mon, 28 Mar 2016 17:42:33 -0600 Subject: [PATCH] Restore 1.8 compatibility --- Essentials/pom.xml | 2 +- .../com/earth2me/essentials/Essentials.java | 16 +++++++++++++++- .../src/com/earth2me/essentials/ItemDb.java | 4 ++-- Essentials/src/net/ess3/api/IEssentials.java | 3 +++ .../nms/legacy/LegacyPotionMetaProvider.java | 19 +++++++++++++++++++ .../src/net/ess3/nms/PotionMetaProvider.java | 18 ++++++++++++++++++ .../pom.xml | 2 +- .../updatedmeta/BasePotionDataProvider.java | 15 ++++++++++----- .../BlockMetaSpawnerProvider.java | 2 +- pom.xml | 2 +- 10 files changed, 71 insertions(+), 12 deletions(-) create mode 100644 nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java create mode 100644 nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java rename nms/{BlockMetaProvider => UpdatedMetaProvider}/pom.xml (94%) rename Essentials/src/com/earth2me/essentials/utils/PotionMetaUtil.java => nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java (83%) rename nms/{BlockMetaProvider/src/net/ess3/nms/blockmeta => UpdatedMetaProvider/src/net/ess3/nms/updatedmeta}/BlockMetaSpawnerProvider.java (96%) diff --git a/Essentials/pom.xml b/Essentials/pom.xml index 8628155db..003880b89 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -87,7 +87,7 @@ net.ess3 - BlockMetaProvider + UpdatedMetaProvider 2.0.1 compile diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 38a615273..9a5262ec6 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -34,9 +34,12 @@ import com.google.common.collect.Iterables; import net.ess3.api.*; import net.ess3.api.IEssentials; import net.ess3.api.ISettings; +import net.ess3.nms.PotionMetaProvider; import net.ess3.nms.SpawnEggProvider; import net.ess3.nms.SpawnerProvider; -import net.ess3.nms.blockmeta.BlockMetaSpawnerProvider; +import net.ess3.nms.legacy.LegacyPotionMetaProvider; +import net.ess3.nms.updatedmeta.BasePotionDataProvider; +import net.ess3.nms.updatedmeta.BlockMetaSpawnerProvider; import net.ess3.nms.legacy.LegacySpawnEggProvider; import net.ess3.nms.legacy.LegacySpawnerProvider; import net.ess3.nms.v1_8_R1.v1_8_R1SpawnerProvider; @@ -102,6 +105,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient Method oldGetOnlinePlayers; private transient SpawnerProvider spawnerProvider; private transient SpawnEggProvider spawnEggProvider; + private transient PotionMetaProvider potionMetaProvider; public Essentials() { } @@ -213,6 +217,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { v1_9_R1SpawnEggProvider.class, LegacySpawnEggProvider.class ), "spawn egg").getProvider(); + potionMetaProvider = new ProviderFactory<>(getLogger(), + Arrays.asList( + BasePotionDataProvider.class, + LegacyPotionMetaProvider.class + ), "potion meta").getProvider(); reload(); } catch (YAMLException exception) { if (pm.getPlugin("EssentialsUpdate") != null) { @@ -790,6 +799,11 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { return spawnEggProvider; } + @Override + public PotionMetaProvider getPotionMetaProvider() { + return potionMetaProvider; + } + private static class EssentialsWorldListener implements Listener, Runnable { private transient final IEssentials ess; diff --git a/Essentials/src/com/earth2me/essentials/ItemDb.java b/Essentials/src/com/earth2me/essentials/ItemDb.java index 9ecdb0c08..32891d14d 100644 --- a/Essentials/src/com/earth2me/essentials/ItemDb.java +++ b/Essentials/src/com/earth2me/essentials/ItemDb.java @@ -1,7 +1,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.utils.NumberUtil; -import com.earth2me.essentials.utils.PotionMetaUtil; +import net.ess3.nms.updatedmeta.BasePotionDataProvider; import com.earth2me.essentials.utils.StringUtil; import net.ess3.api.IEssentials; import org.bukkit.Bukkit; @@ -153,7 +153,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb { } retval = ess.getSpawnEggProvider().createEggItem(type); } else if (mat == Material.POTION) { - retval = PotionMetaUtil.createPotionItem(metaData); + retval = ess.getPotionMetaProvider().createPotionItem(metaData); } else { retval.setDurability(metaData); } diff --git a/Essentials/src/net/ess3/api/IEssentials.java b/Essentials/src/net/ess3/api/IEssentials.java index 20f313d6e..3946d0f0e 100644 --- a/Essentials/src/net/ess3/api/IEssentials.java +++ b/Essentials/src/net/ess3/api/IEssentials.java @@ -1,8 +1,11 @@ package net.ess3.api; +import net.ess3.nms.PotionMetaProvider; import net.ess3.nms.SpawnEggProvider; public interface IEssentials extends com.earth2me.essentials.IEssentials { SpawnEggProvider getSpawnEggProvider(); + + PotionMetaProvider getPotionMetaProvider(); } diff --git a/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java b/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java new file mode 100644 index 000000000..dac2237af --- /dev/null +++ b/nms/LegacyProvider/src/net/ess3/nms/legacy/LegacyPotionMetaProvider.java @@ -0,0 +1,19 @@ +package net.ess3.nms.legacy; + +import net.ess3.nms.PotionMetaProvider; +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +public class LegacyPotionMetaProvider extends PotionMetaProvider { + @Override + public ItemStack createPotionItem(int effectId) { + ItemStack potion = new ItemStack(Material.POTION, 1); + potion.setDurability((short) effectId); + return potion; + } + + @Override + public String getHumanName() { + return "legacy potion meta provider"; + } +} diff --git a/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java b/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java new file mode 100644 index 000000000..b640c4083 --- /dev/null +++ b/nms/NMSProvider/src/net/ess3/nms/PotionMetaProvider.java @@ -0,0 +1,18 @@ +package net.ess3.nms; + +import net.ess3.providers.Provider; +import org.bukkit.inventory.ItemStack; + +public abstract class PotionMetaProvider implements Provider { + public abstract ItemStack createPotionItem(int effectId); + + @Override + public boolean tryProvider() { + try { + createPotionItem(16420); // Poison Level II Splash + return true; + } catch (Throwable t) { + return false; + } + } +} diff --git a/nms/BlockMetaProvider/pom.xml b/nms/UpdatedMetaProvider/pom.xml similarity index 94% rename from nms/BlockMetaProvider/pom.xml rename to nms/UpdatedMetaProvider/pom.xml index 32da2a4bc..9ed83fb85 100644 --- a/nms/BlockMetaProvider/pom.xml +++ b/nms/UpdatedMetaProvider/pom.xml @@ -10,7 +10,7 @@ 4.0.0 - BlockMetaProvider + UpdatedMetaProvider diff --git a/Essentials/src/com/earth2me/essentials/utils/PotionMetaUtil.java b/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java similarity index 83% rename from Essentials/src/com/earth2me/essentials/utils/PotionMetaUtil.java rename to nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java index 40cd000d3..b7e1f32b4 100644 --- a/Essentials/src/com/earth2me/essentials/utils/PotionMetaUtil.java +++ b/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BasePotionDataProvider.java @@ -1,16 +1,16 @@ -package com.earth2me.essentials.utils; +package net.ess3.nms.updatedmeta; import com.google.common.collect.ImmutableMap; +import net.ess3.nms.PotionMetaProvider; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.potion.Potion; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionType; import java.util.Map; -public class PotionMetaUtil { +public class BasePotionDataProvider extends PotionMetaProvider { private static Map damageValueToType = ImmutableMap.builder() .put(1, PotionType.REGEN) .put(2, PotionType.SPEED) @@ -28,7 +28,7 @@ public class PotionMetaUtil { .put(14, PotionType.INVISIBILITY) .build(); - public static ItemStack createPotionItem(int effectId) throws IllegalArgumentException { + public ItemStack createPotionItem(int effectId) throws IllegalArgumentException { int damageValue = getBit(effectId, 0) + 2 * getBit(effectId, 1) + 4 * getBit(effectId, 2) + @@ -52,7 +52,7 @@ public class PotionMetaUtil { PotionMeta meta = (PotionMeta) potion.getItemMeta(); PotionData data = new PotionData(type, extended, upgraded); - meta.setBasePotionData(data); + meta.setBasePotionData(data); // this method is exclusive to recent 1.9+ potion.setItemMeta(meta); return potion; @@ -61,4 +61,9 @@ public class PotionMetaUtil { private static int getBit(int n, int k) { return (n >> k) & 1; } + + @Override + public String getHumanName() { + return "1.9+ BasePotionData provider"; + } } diff --git a/nms/BlockMetaProvider/src/net/ess3/nms/blockmeta/BlockMetaSpawnerProvider.java b/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java similarity index 96% rename from nms/BlockMetaProvider/src/net/ess3/nms/blockmeta/BlockMetaSpawnerProvider.java rename to nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java index 56f5b224f..28a55220c 100644 --- a/nms/BlockMetaProvider/src/net/ess3/nms/blockmeta/BlockMetaSpawnerProvider.java +++ b/nms/UpdatedMetaProvider/src/net/ess3/nms/updatedmeta/BlockMetaSpawnerProvider.java @@ -1,4 +1,4 @@ -package net.ess3.nms.blockmeta; +package net.ess3.nms.updatedmeta; import net.ess3.nms.SpawnerProvider; import org.bukkit.block.BlockState; diff --git a/pom.xml b/pom.xml index d5776b0dd..3a768bfbd 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,7 @@ EssentialsXMPP EssentialsGroupManager nms/NMSProvider - nms/BlockMetaProvider + nms/UpdatedMetaProvider nms/1_8_R1Provider nms/1_8_R2Provider nms/LegacyProvider