Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 22 additions & 2 deletions Essentials/src/com/earth2me/essentials/Essentials.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import net.ess3.nms.refl.providers.ReflServerStateProvider;
import net.ess3.nms.refl.providers.ReflSpawnEggProvider;
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;
Expand All @@ -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;
Expand Down Expand Up @@ -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 ProviderListener recipeBookEventProvider;
private transient Kits kits;

public Essentials() {
Expand Down Expand Up @@ -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);
Expand All @@ -172,7 +176,7 @@ public void onEnable() {
i18n = new I18n(this);
i18n.onEnable();
execTimer.mark("I18n1");

Console.setInstance(this);

if (!VersionUtil.isServerSupported()) {
Expand Down Expand Up @@ -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 PaperRecipeBookListener(event -> {
if (this.getUser(((PlayerEvent) event).getPlayer()).isRecipeSee()) {
((Cancellable) event).setCancelled(true);
}
});
} catch (ClassNotFoundException ignored) {}
}

execTimer.mark("Init(Providers)");
reload();

Expand Down Expand Up @@ -362,6 +378,10 @@ private void registerListeners(PluginManager pm) {

pm.registerEvents(tntListener, this);

if (recipeBookEventProvider != null) {
pm.registerEvents(recipeBookEventProvider, this);
}

jails.resetListener();
}

Expand Down
2 changes: 0 additions & 2 deletions Essentials/src/com/earth2me/essentials/ISettings.java
Original file line number Diff line number Diff line change
Expand Up @@ -354,8 +354,6 @@ enum KeepInvPolicy {

String getItemDbType();

boolean isForceEnableRecipe();

boolean allowOldIdSigns();

boolean isWaterSafe();
Expand Down
10 changes: 0 additions & 10 deletions Essentials/src/com/earth2me/essentials/Settings.java
Original file line number Diff line number Diff line change
Expand Up @@ -563,7 +563,6 @@ public void reloadConfig() {
isCompassTowardsHomePerm = _isCompassTowardsHomePerm();
isAllowWorldInBroadcastworld = _isAllowWorldInBroadcastworld();
itemDbType = _getItemDbType();
forceEnableRecipe = _isForceEnableRecipe();
allowOldIdSigns = _allowOldIdSigns();
isWaterSafe = _isWaterSafe();
isSafeUsermap = _isSafeUsermap();
Expand Down Expand Up @@ -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() {
Expand Down
19 changes: 10 additions & 9 deletions Essentials/src/com/earth2me/essentials/commands/Commandrecipe.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,19 @@ 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()) {
Comment thread
pop4959 marked this conversation as resolved.
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();
// 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) {
throw new NotEnoughArgumentsException();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -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 ProviderListener implements Provider, Listener {
protected Consumer<Event> function;

public ProviderListener(Consumer<Event> function) {
this.function = function;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package net.ess3.provider.providers;

import com.destroystokyo.paper.event.player.PlayerRecipeBookClickEvent;
import net.ess3.provider.ProviderListener;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;

import java.util.function.Consumer;

public class PaperRecipeBookListener extends ProviderListener {
public PaperRecipeBookListener(Consumer<Event> function) {
super(function);
}

@EventHandler
public void onPlayerRecipeBookClick(PlayerRecipeBookClickEvent event) {
function.accept(event);
}

@Override
public String getDescription() {
return "Paper Player Recipe Book Click Event Provider";
}
}