From cc39d3530d869c6d96f1f5d752bd21fde58d2c1d Mon Sep 17 00:00:00 2001 From: pop4959 Date: Tue, 23 Jun 2020 01:16:30 -0700 Subject: [PATCH 1/5] Paper recipe command --- Essentials/pom.xml | 6 + .../com/earth2me/essentials/Essentials.java | 6 + .../essentials/EssentialsPaperListener.java | 21 ++ .../earth2me/essentials/OfflinePlayer.java | 305 ++++++++++++++++++ .../essentials/commands/Commandrecipe.java | 17 +- .../essentials/craftbukkit/FakeWorld.java | 91 +++++- 6 files changed, 436 insertions(+), 10 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java diff --git a/Essentials/pom.xml b/Essentials/pom.xml index e18d0b6188d..4ac7ba94cbe 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -66,6 +66,12 @@ 1.0.2 compile + + com.destroystokyo.paper + paper-api + 1.15.2-R0.1-SNAPSHOT + provided + net.ess3 NMSProvider diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 952844186e7..cb20ab60f63 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -355,6 +355,12 @@ private void registerListeners(PluginManager pm) { pm.registerEvents(tntListener, this); + try { + Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); + final EssentialsPaperListener paperListener = new EssentialsPaperListener(this); + pm.registerEvents(paperListener, this); + } catch (ClassNotFoundException ignored) {} + jails.resetListener(); } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java new file mode 100644 index 00000000000..9723bac435b --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java @@ -0,0 +1,21 @@ +package com.earth2me.essentials; + +import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent; +import net.ess3.api.IEssentials; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class EssentialsPaperListener implements Listener { + private final net.ess3.api.IEssentials ess; + + public EssentialsPaperListener(IEssentials ess) { + this.ess = ess; + } + + @EventHandler + public void onPlayerRecipeBookClick(PlayerRecipeBookClickEvent event) { + if (ess.getUser(event.getPlayer()).isRecipeSee()) { + event.setCancelled(true); + } + } +} diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index 0774daf09a6..1804bc2cb65 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -1,7 +1,13 @@ package com.earth2me.essentials; +import com.destroystokyo.paper.ClientOption; +import com.destroystokyo.paper.Title; +import com.destroystokyo.paper.block.TargetBlockInfo; +import com.destroystokyo.paper.entity.TargetEntityInfo; +import com.destroystokyo.paper.profile.PlayerProfile; import net.ess3.nms.refl.ReflUtil; +import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.*; import org.bukkit.advancement.Advancement; import org.bukkit.advancement.AdvancementProgress; @@ -10,12 +16,16 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.PistonMoveReaction; +import org.bukkit.block.Sign; import org.bukkit.block.data.BlockData; import org.bukkit.conversations.Conversation; import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.entity.*; import org.bukkit.entity.memory.MemoryKey; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.*; import org.bukkit.inventory.InventoryView.Property; @@ -83,6 +93,16 @@ public InetSocketAddress getAddress() { return null; } + @Override + public int getProtocolVersion() { + return 0; + } + + @Override + public InetSocketAddress getVirtualHost() { + return null; + } + @Override public void kickPlayer(String string) { } @@ -238,6 +258,31 @@ public Block getTargetBlock(Set mat, int i) { return null; } + @Override + public Block getTargetBlock(int i, TargetBlockInfo.FluidMode fluidMode) { + return null; + } + + @Override + public BlockFace getTargetBlockFace(int i, TargetBlockInfo.FluidMode fluidMode) { + return null; + } + + @Override + public TargetBlockInfo getTargetBlockInfo(int i, TargetBlockInfo.FluidMode fluidMode) { + return null; + } + + @Override + public Entity getTargetEntity(int i, boolean b) { + return null; + } + + @Override + public TargetEntityInfo getTargetEntityInfo(int i, boolean b) { + return null; + } + @Override public List getLastTwoTargetBlocks(Set mat, int i) { return Collections.emptyList(); @@ -626,6 +671,76 @@ public Set getEffectivePermissions() { public void sendMap(MapView mv) { } + @Override + public void sendActionBar(String s) { + + } + + @Override + public void sendActionBar(char c, String s) { + + } + + @Override + public void setPlayerListHeaderFooter(BaseComponent[] baseComponents, BaseComponent[] baseComponents1) { + + } + + @Override + public void setPlayerListHeaderFooter(BaseComponent baseComponent, BaseComponent baseComponent1) { + + } + + @Override + public void setTitleTimes(int i, int i1, int i2) { + + } + + @Override + public void setSubtitle(BaseComponent[] baseComponents) { + + } + + @Override + public void setSubtitle(BaseComponent baseComponent) { + + } + + @Override + public void showTitle(BaseComponent[] baseComponents) { + + } + + @Override + public void showTitle(BaseComponent baseComponent) { + + } + + @Override + public void showTitle(BaseComponent[] baseComponents, BaseComponent[] baseComponents1, int i, int i1, int i2) { + + } + + @Override + public void showTitle(BaseComponent baseComponent, BaseComponent baseComponent1, int i, int i1, int i2) { + + } + + @Override + public void sendTitle(Title title) { + + } + + @Override + public void updateTitle(Title title) { + + } + + @Override + public void hideTitle() { + + } + @Override public GameMode getGameMode() { return GameMode.SURVIVAL; @@ -749,6 +864,16 @@ public double getMaxHealth() { public void giveExp(int i) { } + @Override + public void giveExp(int i, boolean b) { + + } + + @Override + public int applyMending(int i) { + return 0; + } + @Override public float getExp() { return 0F; @@ -773,6 +898,11 @@ public Player getKiller() { return null; } + @Override + public void setKiller(Player player) { + + } + void setName(final String name) { this.name = base.getName(); if (this.name == null) { @@ -940,6 +1070,11 @@ public InventoryView openMerchant(Merchant merchant, boolean b) { public void closeInventory() { } + @Override + public void closeInventory(InventoryCloseEvent.Reason reason) { + + } + @Override public ItemStack getItemOnCursor() { return null; @@ -999,6 +1134,16 @@ public boolean isHandRaised() { return false; } + @Override + public boolean isJumping() { + return false; + } + + @Override + public void setJumping(boolean b) { + + } + @Override public void abandonConversation(Conversation arg0, ConversationAbandonedEvent arg1) { } @@ -1018,6 +1163,16 @@ public int getExpToLevel() { return 0; } + @Override + public Entity releaseLeftShoulderEntity() { + return null; + } + + @Override + public Entity releaseRightShoulderEntity() { + return null; + } + @Override public float getAttackCooldown() { return 0f; @@ -1376,6 +1531,41 @@ public void setMemory(MemoryKey memoryKey, T t) { } + @Override + public int getArrowsStuck() { + return 0; + } + + @Override + public void setArrowsStuck(int i) { + + } + + @Override + public int getShieldBlockingDelay() { + return 0; + } + + @Override + public void setShieldBlockingDelay(int i) { + + } + + @Override + public ItemStack getActiveItem() { + return null; + } + + @Override + public int getItemUseRemainingTime() { + return 0; + } + + @Override + public int getHandRaisedTime() { + return 0; + } + @Override public T launchProjectile(Class type, Vector vector) { return null; @@ -1395,6 +1585,21 @@ public Location getBedSpawnLocation() { return null; } + @Override + public Location getPotentialBedLocation() { + return null; + } + + @Override + public long getLastLogin() { + return 0; + } + + @Override + public long getLastSeen() { + return 0; + } + @Override public String getName() { return name; @@ -1590,6 +1795,26 @@ public String getLocale() { return null; } + @Override + public boolean getAffectsSpawning() { + return false; + } + + @Override + public void setAffectsSpawning(boolean b) { + + } + + @Override + public int getViewDistance() { + return 0; + } + + @Override + public void setViewDistance(int i) { + + } + @Override public boolean hasCooldown(Material material) { return false; @@ -1622,6 +1847,11 @@ public Entity getShoulderEntityRight() { public void setShoulderEntityRight(Entity entity) { } + @Override + public void openSign(Sign sign) { + + } + @Override public double getHeight() { return 0; @@ -1665,6 +1895,81 @@ public void updateCommands() { public void openBook(ItemStack book) { } + @Override + public void setResourcePack(String s, String s1) { + + } + + @Override + public PlayerResourcePackStatusEvent.Status getResourcePackStatus() { + return null; + } + + @Override + public String getResourcePackHash() { + return null; + } + + @Override + public boolean hasResourcePack() { + return false; + } + + @Override + public PlayerProfile getPlayerProfile() { + return null; + } + + @Override + public void setPlayerProfile(PlayerProfile playerProfile) { + + } + + @Override + public float getCooldownPeriod() { + return 0; + } + + @Override + public float getCooledAttackStrength(float v) { + return 0; + } + + @Override + public void resetCooldown() { + + } + + @Override + public T getClientOption(ClientOption clientOption) { + return null; + } + + @Override + public Spigot spigot() { + return null; + } + + @Override + public Location getOrigin() { + return null; + } + + @Override + public boolean fromMobSpawner() { + return false; + } + + @Override + public Chunk getChunk() { + return null; + } + + @Override + public CreatureSpawnEvent.SpawnReason getEntitySpawnReason() { + return null; + } + @Override public PersistentDataContainer getPersistentDataContainer() { return null; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java index 31de149e467..92e768a8c23 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; +import com.earth2me.essentials.EssentialsPaperListener; import com.earth2me.essentials.User; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; @@ -26,18 +27,16 @@ public class Commandrecipe extends EssentialsCommand { public Commandrecipe() { super("recipe"); } - - private void disableCommandForVersion1_12() throws Exception { - VersionUtil.BukkitVersion version = VersionUtil.getServerBukkitVersion(); - if (version.isHigherThanOrEqualTo(VersionUtil.v1_12_0_R01) - && !ess.getSettings().isForceEnableRecipe()) { - throw new Exception("Please use the recipe book in your inventory."); - } - } @Override public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { - disableCommandForVersion1_12(); + try { + Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); + } catch (ClassNotFoundException e) { + sender.sendMessage(tl("unsupportedFeature")); + return; + } + if (args.length < 1) { throw new NotEnoughArgumentsException(); } diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index 78146c4f642..c07ea3a2118 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -1,11 +1,13 @@ package com.earth2me.essentials.craftbukkit; +import com.destroystokyo.paper.HeightmapType; import org.bukkit.*; import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.boss.DragonBattle; import org.bukkit.entity.*; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; import org.bukkit.inventory.ItemStack; @@ -13,6 +15,7 @@ import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.util.BoundingBox; +import org.bukkit.util.Consumer; import org.bukkit.util.RayTraceResult; import org.bukkit.util.Vector; @@ -22,6 +25,7 @@ import java.util.Map; import java.util.Set; import java.util.UUID; +import java.util.concurrent.CompletableFuture; import java.util.function.Predicate; @@ -34,6 +38,31 @@ public FakeWorld(String string, Environment environment) { this.env = environment; } + @Override + public int getEntityCount() { + return 0; + } + + @Override + public int getTileEntityCount() { + return 0; + } + + @Override + public int getTickableTileEntityCount() { + return 0; + } + + @Override + public int getChunkCount() { + return 0; + } + + @Override + public int getPlayerCount() { + return 0; + } + @Override public Block getBlockAt(int i, int i1, int i2) { throw new UnsupportedOperationException("Not supported yet."); @@ -69,6 +98,11 @@ public Chunk getChunkAt(Block block) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public CompletableFuture getChunkAtAsync(int i, int i1, boolean b, boolean b1) { + return null; + } + @Override public boolean isChunkLoaded(Chunk chunk) { throw new UnsupportedOperationException("Not supported yet."); @@ -274,6 +308,11 @@ public void setFullTime(long l) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public boolean isDayTime() { + return false; + } + @Override public boolean hasStorm() { throw new UnsupportedOperationException("Not supported yet."); @@ -378,7 +417,12 @@ public boolean createExplosion(double d, double d1, double d2, float f, boolean public boolean createExplosion(Location lctn, float f, boolean bln) { throw new UnsupportedOperationException("Not supported yet."); } - + + @Override + public boolean createExplosion(Entity entity, Location location, float v, boolean b, boolean b1) { + return false; + } + @Override public boolean createExplosion(double d, double d1, double d2, float f, boolean bln, boolean bln1, Entity entity) { throw new UnsupportedOperationException("Not supported yet."); @@ -404,6 +448,11 @@ public T spawn(Location location, Class aClass, org.bukkit throw new UnsupportedOperationException("Not supported yet."); } + @Override + public T spawn(Location location, Class aClass, Consumer consumer, CreatureSpawnEvent.SpawnReason spawnReason) throws IllegalArgumentException { + return null; + } + @Override public FallingBlock spawnFallingBlock(Location location, MaterialData materialData) throws IllegalArgumentException { throw new UnsupportedOperationException("Not supported yet."); @@ -449,6 +498,11 @@ public Block getHighestBlockAt(Location lctn) { throw new UnsupportedOperationException("Not supported yet."); } + @Override + public int getHighestBlockYAt(int i, int i1, HeightmapType heightmapType) throws UnsupportedOperationException { + return 0; + } + @Override public int getHighestBlockYAt(int i, int i1, HeightMap heightMap) { throw new UnsupportedOperationException("Not supported yet."); @@ -839,6 +893,11 @@ public void spawnParticle(Particle particle, double v, double v1, double v2, throw new UnsupportedOperationException("Not supported yet."); } + @Override + public void spawnParticle(Particle particle, List list, Player player, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) { + + } + @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t, boolean b) { throw new UnsupportedOperationException("Not supported yet."); @@ -854,6 +913,31 @@ public Location locateNearestStructure(Location origin, StructureType structureT throw new UnsupportedOperationException("Not supported yet."); } + @Override + public int getViewDistance() { + return 0; + } + + @Override + public void setViewDistance(int i) { + + } + + @Override + public int getNoTickViewDistance() { + return 0; + } + + @Override + public void setNoTickViewDistance(int i) { + + } + + @Override + public Spigot spigot() { + return null; + } + @Override public Raid locateNearestRaid(Location location, int radius) { throw new UnsupportedOperationException("Not supported yet."); @@ -874,6 +958,11 @@ public List getNearbyEntities(Location loc, double x, double y, double z throw new UnsupportedOperationException("Not supported yet."); } + @Override + public Entity getEntity(UUID uuid) { + return null; + } + @Override public Collection getNearbyEntities(Location location, double x, double y, double z, Predicate filter) { throw new UnsupportedOperationException("Not supported yet."); From ce615cb6e03b3b7d9b4b8a76df8e3a7e4f232806 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Wed, 24 Jun 2020 17:04:56 -0700 Subject: [PATCH 2/5] Less dumb implementation --- Essentials/pom.xml | 6 - .../com/earth2me/essentials/Essentials.java | 28 +- .../essentials/EssentialsPaperListener.java | 21 -- .../earth2me/essentials/OfflinePlayer.java | 305 ------------------ .../essentials/commands/Commandrecipe.java | 2 - .../essentials/craftbukkit/FakeWorld.java | 91 +----- .../src/net/ess3/provider/EventProvider.java | 14 + ...perPlayerRecipeBookClickEventProvider.java | 24 ++ 8 files changed, 60 insertions(+), 431 deletions(-) delete mode 100644 Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java create mode 100644 providers/BaseProviders/src/net/ess3/provider/EventProvider.java create mode 100644 providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java diff --git a/Essentials/pom.xml b/Essentials/pom.xml index 621f5f7e983..5bfda19c7c8 100644 --- a/Essentials/pom.xml +++ b/Essentials/pom.xml @@ -66,12 +66,6 @@ 1.0.4 compile - - com.destroystokyo.paper - paper-api - 1.15.2-R0.1-SNAPSHOT - provided - net.ess3 BaseProviders diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 2cbfd097f01..9829159e4bb 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -40,6 +40,7 @@ import net.ess3.api.*; import net.ess3.nms.refl.providers.ReflServerStateProvider; import net.ess3.nms.refl.providers.ReflSpawnEggProvider; +import net.ess3.provider.EventProvider; import net.ess3.provider.PotionMetaProvider; import net.ess3.provider.ServerStateProvider; import net.ess3.provider.SpawnEggProvider; @@ -51,10 +52,12 @@ import org.bukkit.block.Block; import org.bukkit.command.*; import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.world.WorldLoadEvent; import org.bukkit.event.world.WorldUnloadEvent; @@ -108,6 +111,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient SpawnEggProvider spawnEggProvider; private transient PotionMetaProvider potionMetaProvider; private transient ServerStateProvider serverStateProvider; + private transient EventProvider recipeBookEventProvider; private transient Kits kits; public Essentials() { @@ -148,7 +152,7 @@ public void setupForTesting(final Server server) throws IOException, InvalidDesc i18n.onEnable(); i18n.updateLocale("en"); Console.setInstance(this); - + LOGGER.log(Level.INFO, tl("usingTempFolderForTesting")); LOGGER.log(Level.INFO, dataFolder.toString()); settings = new Settings(this); @@ -172,7 +176,7 @@ public void onEnable() { i18n = new I18n(this); i18n.onEnable(); execTimer.mark("I18n1"); - + Console.setInstance(this); if (!VersionUtil.isServerSupported()) { @@ -269,6 +273,18 @@ public void onEnable() { serverStateProvider = new ReflServerStateProvider(getLogger()); } + //Event Providers + if (PaperLib.isPaper()) { + try { + Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); + recipeBookEventProvider = new PaperPlayerRecipeBookClickEventProvider(event -> { + if (this.getUser(((PlayerEvent) event).getPlayer()).isRecipeSee()) { + ((Cancellable)event).setCancelled(true); + } + }); + } catch (ClassNotFoundException ignored) {} + } + execTimer.mark("Init(Providers)"); reload(); @@ -362,11 +378,9 @@ private void registerListeners(PluginManager pm) { pm.registerEvents(tntListener, this); - try { - Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); - final EssentialsPaperListener paperListener = new EssentialsPaperListener(this); - pm.registerEvents(paperListener, this); - } catch (ClassNotFoundException ignored) {} + if (recipeBookEventProvider != null) { + pm.registerEvents(recipeBookEventProvider, this); + } jails.resetListener(); } diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java deleted file mode 100644 index 9723bac435b..00000000000 --- a/Essentials/src/com/earth2me/essentials/EssentialsPaperListener.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.earth2me.essentials; - -import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent; -import net.ess3.api.IEssentials; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class EssentialsPaperListener implements Listener { - private final net.ess3.api.IEssentials ess; - - public EssentialsPaperListener(IEssentials ess) { - this.ess = ess; - } - - @EventHandler - public void onPlayerRecipeBookClick(PlayerRecipeBookClickEvent event) { - if (ess.getUser(event.getPlayer()).isRecipeSee()) { - event.setCancelled(true); - } - } -} diff --git a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java index 1804bc2cb65..0774daf09a6 100644 --- a/Essentials/src/com/earth2me/essentials/OfflinePlayer.java +++ b/Essentials/src/com/earth2me/essentials/OfflinePlayer.java @@ -1,13 +1,7 @@ package com.earth2me.essentials; -import com.destroystokyo.paper.ClientOption; -import com.destroystokyo.paper.Title; -import com.destroystokyo.paper.block.TargetBlockInfo; -import com.destroystokyo.paper.entity.TargetEntityInfo; -import com.destroystokyo.paper.profile.PlayerProfile; import net.ess3.nms.refl.ReflUtil; -import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.*; import org.bukkit.advancement.Advancement; import org.bukkit.advancement.AdvancementProgress; @@ -16,16 +10,12 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.PistonMoveReaction; -import org.bukkit.block.Sign; import org.bukkit.block.data.BlockData; import org.bukkit.conversations.Conversation; import org.bukkit.conversations.ConversationAbandonedEvent; import org.bukkit.entity.*; import org.bukkit.entity.memory.MemoryKey; -import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.inventory.InventoryCloseEvent; -import org.bukkit.event.player.PlayerResourcePackStatusEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.inventory.*; import org.bukkit.inventory.InventoryView.Property; @@ -93,16 +83,6 @@ public InetSocketAddress getAddress() { return null; } - @Override - public int getProtocolVersion() { - return 0; - } - - @Override - public InetSocketAddress getVirtualHost() { - return null; - } - @Override public void kickPlayer(String string) { } @@ -258,31 +238,6 @@ public Block getTargetBlock(Set mat, int i) { return null; } - @Override - public Block getTargetBlock(int i, TargetBlockInfo.FluidMode fluidMode) { - return null; - } - - @Override - public BlockFace getTargetBlockFace(int i, TargetBlockInfo.FluidMode fluidMode) { - return null; - } - - @Override - public TargetBlockInfo getTargetBlockInfo(int i, TargetBlockInfo.FluidMode fluidMode) { - return null; - } - - @Override - public Entity getTargetEntity(int i, boolean b) { - return null; - } - - @Override - public TargetEntityInfo getTargetEntityInfo(int i, boolean b) { - return null; - } - @Override public List getLastTwoTargetBlocks(Set mat, int i) { return Collections.emptyList(); @@ -671,76 +626,6 @@ public Set getEffectivePermissions() { public void sendMap(MapView mv) { } - @Override - public void sendActionBar(String s) { - - } - - @Override - public void sendActionBar(char c, String s) { - - } - - @Override - public void setPlayerListHeaderFooter(BaseComponent[] baseComponents, BaseComponent[] baseComponents1) { - - } - - @Override - public void setPlayerListHeaderFooter(BaseComponent baseComponent, BaseComponent baseComponent1) { - - } - - @Override - public void setTitleTimes(int i, int i1, int i2) { - - } - - @Override - public void setSubtitle(BaseComponent[] baseComponents) { - - } - - @Override - public void setSubtitle(BaseComponent baseComponent) { - - } - - @Override - public void showTitle(BaseComponent[] baseComponents) { - - } - - @Override - public void showTitle(BaseComponent baseComponent) { - - } - - @Override - public void showTitle(BaseComponent[] baseComponents, BaseComponent[] baseComponents1, int i, int i1, int i2) { - - } - - @Override - public void showTitle(BaseComponent baseComponent, BaseComponent baseComponent1, int i, int i1, int i2) { - - } - - @Override - public void sendTitle(Title title) { - - } - - @Override - public void updateTitle(Title title) { - - } - - @Override - public void hideTitle() { - - } - @Override public GameMode getGameMode() { return GameMode.SURVIVAL; @@ -864,16 +749,6 @@ public double getMaxHealth() { public void giveExp(int i) { } - @Override - public void giveExp(int i, boolean b) { - - } - - @Override - public int applyMending(int i) { - return 0; - } - @Override public float getExp() { return 0F; @@ -898,11 +773,6 @@ public Player getKiller() { return null; } - @Override - public void setKiller(Player player) { - - } - void setName(final String name) { this.name = base.getName(); if (this.name == null) { @@ -1070,11 +940,6 @@ public InventoryView openMerchant(Merchant merchant, boolean b) { public void closeInventory() { } - @Override - public void closeInventory(InventoryCloseEvent.Reason reason) { - - } - @Override public ItemStack getItemOnCursor() { return null; @@ -1134,16 +999,6 @@ public boolean isHandRaised() { return false; } - @Override - public boolean isJumping() { - return false; - } - - @Override - public void setJumping(boolean b) { - - } - @Override public void abandonConversation(Conversation arg0, ConversationAbandonedEvent arg1) { } @@ -1163,16 +1018,6 @@ public int getExpToLevel() { return 0; } - @Override - public Entity releaseLeftShoulderEntity() { - return null; - } - - @Override - public Entity releaseRightShoulderEntity() { - return null; - } - @Override public float getAttackCooldown() { return 0f; @@ -1531,41 +1376,6 @@ public void setMemory(MemoryKey memoryKey, T t) { } - @Override - public int getArrowsStuck() { - return 0; - } - - @Override - public void setArrowsStuck(int i) { - - } - - @Override - public int getShieldBlockingDelay() { - return 0; - } - - @Override - public void setShieldBlockingDelay(int i) { - - } - - @Override - public ItemStack getActiveItem() { - return null; - } - - @Override - public int getItemUseRemainingTime() { - return 0; - } - - @Override - public int getHandRaisedTime() { - return 0; - } - @Override public T launchProjectile(Class type, Vector vector) { return null; @@ -1585,21 +1395,6 @@ public Location getBedSpawnLocation() { return null; } - @Override - public Location getPotentialBedLocation() { - return null; - } - - @Override - public long getLastLogin() { - return 0; - } - - @Override - public long getLastSeen() { - return 0; - } - @Override public String getName() { return name; @@ -1795,26 +1590,6 @@ public String getLocale() { return null; } - @Override - public boolean getAffectsSpawning() { - return false; - } - - @Override - public void setAffectsSpawning(boolean b) { - - } - - @Override - public int getViewDistance() { - return 0; - } - - @Override - public void setViewDistance(int i) { - - } - @Override public boolean hasCooldown(Material material) { return false; @@ -1847,11 +1622,6 @@ public Entity getShoulderEntityRight() { public void setShoulderEntityRight(Entity entity) { } - @Override - public void openSign(Sign sign) { - - } - @Override public double getHeight() { return 0; @@ -1895,81 +1665,6 @@ public void updateCommands() { public void openBook(ItemStack book) { } - @Override - public void setResourcePack(String s, String s1) { - - } - - @Override - public PlayerResourcePackStatusEvent.Status getResourcePackStatus() { - return null; - } - - @Override - public String getResourcePackHash() { - return null; - } - - @Override - public boolean hasResourcePack() { - return false; - } - - @Override - public PlayerProfile getPlayerProfile() { - return null; - } - - @Override - public void setPlayerProfile(PlayerProfile playerProfile) { - - } - - @Override - public float getCooldownPeriod() { - return 0; - } - - @Override - public float getCooledAttackStrength(float v) { - return 0; - } - - @Override - public void resetCooldown() { - - } - - @Override - public T getClientOption(ClientOption clientOption) { - return null; - } - - @Override - public Spigot spigot() { - return null; - } - - @Override - public Location getOrigin() { - return null; - } - - @Override - public boolean fromMobSpawner() { - return false; - } - - @Override - public Chunk getChunk() { - return null; - } - - @Override - public CreatureSpawnEvent.SpawnReason getEntitySpawnReason() { - return null; - } - @Override public PersistentDataContainer getPersistentDataContainer() { return null; diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java index 92e768a8c23..ae7d54d0049 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -1,11 +1,9 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.CommandSource; -import com.earth2me.essentials.EssentialsPaperListener; import com.earth2me.essentials.User; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; -import com.earth2me.essentials.utils.VersionUtil; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.inventory.*; diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java index c07ea3a2118..78146c4f642 100644 --- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java +++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java @@ -1,13 +1,11 @@ package com.earth2me.essentials.craftbukkit; -import com.destroystokyo.paper.HeightmapType; import org.bukkit.*; import org.bukkit.block.Biome; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.boss.DragonBattle; import org.bukkit.entity.*; -import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.generator.BlockPopulator; import org.bukkit.generator.ChunkGenerator; import org.bukkit.inventory.ItemStack; @@ -15,7 +13,6 @@ import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.util.BoundingBox; -import org.bukkit.util.Consumer; import org.bukkit.util.RayTraceResult; import org.bukkit.util.Vector; @@ -25,7 +22,6 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import java.util.concurrent.CompletableFuture; import java.util.function.Predicate; @@ -38,31 +34,6 @@ public FakeWorld(String string, Environment environment) { this.env = environment; } - @Override - public int getEntityCount() { - return 0; - } - - @Override - public int getTileEntityCount() { - return 0; - } - - @Override - public int getTickableTileEntityCount() { - return 0; - } - - @Override - public int getChunkCount() { - return 0; - } - - @Override - public int getPlayerCount() { - return 0; - } - @Override public Block getBlockAt(int i, int i1, int i2) { throw new UnsupportedOperationException("Not supported yet."); @@ -98,11 +69,6 @@ public Chunk getChunkAt(Block block) { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public CompletableFuture getChunkAtAsync(int i, int i1, boolean b, boolean b1) { - return null; - } - @Override public boolean isChunkLoaded(Chunk chunk) { throw new UnsupportedOperationException("Not supported yet."); @@ -308,11 +274,6 @@ public void setFullTime(long l) { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public boolean isDayTime() { - return false; - } - @Override public boolean hasStorm() { throw new UnsupportedOperationException("Not supported yet."); @@ -417,12 +378,7 @@ public boolean createExplosion(double d, double d1, double d2, float f, boolean public boolean createExplosion(Location lctn, float f, boolean bln) { throw new UnsupportedOperationException("Not supported yet."); } - - @Override - public boolean createExplosion(Entity entity, Location location, float v, boolean b, boolean b1) { - return false; - } - + @Override public boolean createExplosion(double d, double d1, double d2, float f, boolean bln, boolean bln1, Entity entity) { throw new UnsupportedOperationException("Not supported yet."); @@ -448,11 +404,6 @@ public T spawn(Location location, Class aClass, org.bukkit throw new UnsupportedOperationException("Not supported yet."); } - @Override - public T spawn(Location location, Class aClass, Consumer consumer, CreatureSpawnEvent.SpawnReason spawnReason) throws IllegalArgumentException { - return null; - } - @Override public FallingBlock spawnFallingBlock(Location location, MaterialData materialData) throws IllegalArgumentException { throw new UnsupportedOperationException("Not supported yet."); @@ -498,11 +449,6 @@ public Block getHighestBlockAt(Location lctn) { throw new UnsupportedOperationException("Not supported yet."); } - @Override - public int getHighestBlockYAt(int i, int i1, HeightmapType heightmapType) throws UnsupportedOperationException { - return 0; - } - @Override public int getHighestBlockYAt(int i, int i1, HeightMap heightMap) { throw new UnsupportedOperationException("Not supported yet."); @@ -893,11 +839,6 @@ public void spawnParticle(Particle particle, double v, double v1, double v2, throw new UnsupportedOperationException("Not supported yet."); } - @Override - public void spawnParticle(Particle particle, List list, Player player, double v, double v1, double v2, int i, double v3, double v4, double v5, double v6, T t, boolean b) { - - } - @Override public void spawnParticle(Particle particle, Location location, int i, double v, double v1, double v2, double v3, T t, boolean b) { throw new UnsupportedOperationException("Not supported yet."); @@ -913,31 +854,6 @@ public Location locateNearestStructure(Location origin, StructureType structureT throw new UnsupportedOperationException("Not supported yet."); } - @Override - public int getViewDistance() { - return 0; - } - - @Override - public void setViewDistance(int i) { - - } - - @Override - public int getNoTickViewDistance() { - return 0; - } - - @Override - public void setNoTickViewDistance(int i) { - - } - - @Override - public Spigot spigot() { - return null; - } - @Override public Raid locateNearestRaid(Location location, int radius) { throw new UnsupportedOperationException("Not supported yet."); @@ -958,11 +874,6 @@ public List getNearbyEntities(Location loc, double x, double y, double z throw new UnsupportedOperationException("Not supported yet."); } - @Override - public Entity getEntity(UUID uuid) { - return null; - } - @Override public Collection getNearbyEntities(Location location, double x, double y, double z, Predicate filter) { throw new UnsupportedOperationException("Not supported yet."); diff --git a/providers/BaseProviders/src/net/ess3/provider/EventProvider.java b/providers/BaseProviders/src/net/ess3/provider/EventProvider.java new file mode 100644 index 00000000000..965c2901e35 --- /dev/null +++ b/providers/BaseProviders/src/net/ess3/provider/EventProvider.java @@ -0,0 +1,14 @@ +package net.ess3.provider; + +import org.bukkit.event.Event; +import org.bukkit.event.Listener; + +import java.util.function.Consumer; + +public abstract class EventProvider implements Provider, Listener { + protected Consumer function; + + public EventProvider(Consumer function) { + this.function = function; + } +} diff --git a/providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java b/providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java new file mode 100644 index 00000000000..e78a0b4e4d7 --- /dev/null +++ b/providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java @@ -0,0 +1,24 @@ +package net.ess3.provider.providers; + +import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent; +import net.ess3.provider.EventProvider; +import org.bukkit.event.Event; +import org.bukkit.event.EventHandler; + +import java.util.function.Consumer; + +public class PaperPlayerRecipeBookClickEventProvider extends EventProvider { + public PaperPlayerRecipeBookClickEventProvider(Consumer function) { + super(function); + } + + @EventHandler + public void onPlayerRecipeBookClick(PlayerRecipeBookClickEvent event) { + function.accept(event); + } + + @Override + public String getDescription() { + return "Paper Player Recipe Book Click Event Provider"; + } +} From 02db2867c988abe7622796a88e903ef5a38d104c Mon Sep 17 00:00:00 2001 From: pop4959 Date: Mon, 29 Jun 2020 19:02:23 -0700 Subject: [PATCH 3/5] review suggestions --- Essentials/src/com/earth2me/essentials/Essentials.java | 6 +++--- .../provider/{EventProvider.java => ProviderListener.java} | 4 ++-- ...ClickEventProvider.java => PaperRecipeBookListener.java} | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) rename providers/BaseProviders/src/net/ess3/provider/{EventProvider.java => ProviderListener.java} (62%) rename providers/PaperProvider/src/net/ess3/provider/providers/{PaperPlayerRecipeBookClickEventProvider.java => PaperRecipeBookListener.java} (72%) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 9829159e4bb..59e2283929d 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -40,8 +40,8 @@ import net.ess3.api.*; import net.ess3.nms.refl.providers.ReflServerStateProvider; import net.ess3.nms.refl.providers.ReflSpawnEggProvider; -import net.ess3.provider.EventProvider; import net.ess3.provider.PotionMetaProvider; +import net.ess3.provider.ProviderListener; import net.ess3.provider.ServerStateProvider; import net.ess3.provider.SpawnEggProvider; import net.ess3.provider.SpawnerProvider; @@ -111,7 +111,7 @@ public class Essentials extends JavaPlugin implements net.ess3.api.IEssentials { private transient SpawnEggProvider spawnEggProvider; private transient PotionMetaProvider potionMetaProvider; private transient ServerStateProvider serverStateProvider; - private transient EventProvider recipeBookEventProvider; + private transient ProviderListener recipeBookEventProvider; private transient Kits kits; public Essentials() { @@ -277,7 +277,7 @@ public void onEnable() { if (PaperLib.isPaper()) { try { Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); - recipeBookEventProvider = new PaperPlayerRecipeBookClickEventProvider(event -> { + recipeBookEventProvider = new PaperRecipeBookListener(event -> { if (this.getUser(((PlayerEvent) event).getPlayer()).isRecipeSee()) { ((Cancellable)event).setCancelled(true); } diff --git a/providers/BaseProviders/src/net/ess3/provider/EventProvider.java b/providers/BaseProviders/src/net/ess3/provider/ProviderListener.java similarity index 62% rename from providers/BaseProviders/src/net/ess3/provider/EventProvider.java rename to providers/BaseProviders/src/net/ess3/provider/ProviderListener.java index 965c2901e35..0750e87b77e 100644 --- a/providers/BaseProviders/src/net/ess3/provider/EventProvider.java +++ b/providers/BaseProviders/src/net/ess3/provider/ProviderListener.java @@ -5,10 +5,10 @@ import java.util.function.Consumer; -public abstract class EventProvider implements Provider, Listener { +public abstract class ProviderListener implements Provider, Listener { protected Consumer function; - public EventProvider(Consumer function) { + public ProviderListener(Consumer function) { this.function = function; } } diff --git a/providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java b/providers/PaperProvider/src/net/ess3/provider/providers/PaperRecipeBookListener.java similarity index 72% rename from providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java rename to providers/PaperProvider/src/net/ess3/provider/providers/PaperRecipeBookListener.java index e78a0b4e4d7..217b3eca2dd 100644 --- a/providers/PaperProvider/src/net/ess3/provider/providers/PaperPlayerRecipeBookClickEventProvider.java +++ b/providers/PaperProvider/src/net/ess3/provider/providers/PaperRecipeBookListener.java @@ -1,14 +1,14 @@ package net.ess3.provider.providers; import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent; -import net.ess3.provider.EventProvider; +import net.ess3.provider.ProviderListener; import org.bukkit.event.Event; import org.bukkit.event.EventHandler; import java.util.function.Consumer; -public class PaperPlayerRecipeBookClickEventProvider extends EventProvider { - public PaperPlayerRecipeBookClickEventProvider(Consumer function) { +public class PaperRecipeBookListener extends ProviderListener { + public PaperRecipeBookListener(Consumer function) { super(function); } From 61ba5c20479c90bc446223dd2a4e1a0177f84b03 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Wed, 1 Jul 2020 14:12:30 -0700 Subject: [PATCH 4/5] Update Essentials/src/com/earth2me/essentials/Essentials.java Co-authored-by: MD <1917406+md678685@users.noreply.github.com> --- Essentials/src/com/earth2me/essentials/Essentials.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 59e2283929d..d59716eaba9 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -279,7 +279,7 @@ public void onEnable() { Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); recipeBookEventProvider = new PaperRecipeBookListener(event -> { if (this.getUser(((PlayerEvent) event).getPlayer()).isRecipeSee()) { - ((Cancellable)event).setCancelled(true); + ((Cancellable) event).setCancelled(true); } }); } catch (ClassNotFoundException ignored) {} From dbd9375b453931cda5e447e5484c26f5adbba849 Mon Sep 17 00:00:00 2001 From: pop4959 Date: Wed, 1 Jul 2020 14:26:25 -0700 Subject: [PATCH 5/5] Review comments --- .../src/com/earth2me/essentials/ISettings.java | 2 -- .../src/com/earth2me/essentials/Settings.java | 10 ---------- .../essentials/commands/Commandrecipe.java | 14 +++++++++----- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 7fa544f83c5..71fee2551c6 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -354,8 +354,6 @@ enum KeepInvPolicy { String getItemDbType(); - boolean isForceEnableRecipe(); - boolean allowOldIdSigns(); boolean isWaterSafe(); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index 5fb42dacf81..0c2d438acf7 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -563,7 +563,6 @@ public void reloadConfig() { isCompassTowardsHomePerm = _isCompassTowardsHomePerm(); isAllowWorldInBroadcastworld = _isAllowWorldInBroadcastworld(); itemDbType = _getItemDbType(); - forceEnableRecipe = _isForceEnableRecipe(); allowOldIdSigns = _allowOldIdSigns(); isWaterSafe = _isWaterSafe(); isSafeUsermap = _isSafeUsermap(); @@ -1626,15 +1625,6 @@ public String getItemDbType() { private boolean forceEnableRecipe; // https://github.com/EssentialsX/Essentials/issues/1397 - private boolean _isForceEnableRecipe() { - return config.getBoolean("force-enable-recipe", false); - } - - @Override - public boolean isForceEnableRecipe() { - return forceEnableRecipe; - } - private boolean allowOldIdSigns; private boolean _allowOldIdSigns() { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java index ae7d54d0049..0d592040f0f 100755 --- a/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java @@ -4,6 +4,7 @@ import com.earth2me.essentials.User; import com.earth2me.essentials.utils.EnumUtil; import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.VersionUtil; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.inventory.*; @@ -28,11 +29,14 @@ public Commandrecipe() { @Override public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception { - try { - Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); - } catch (ClassNotFoundException e) { - sender.sendMessage(tl("unsupportedFeature")); - return; + // On versions at or above 1.12, we need recipe book API + if (VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_12_0_R01)) { + try { + Class.forName("com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent"); + } catch (ClassNotFoundException e) { + sender.sendMessage(tl("unsupportedFeature")); + return; + } } if (args.length < 1) {