Added support for AnvilGUI
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
package com.willfp.ecoenchants.nms.API;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public interface OpenInventoryWrapper {
|
||||
Object getOpenInventory(Player player);
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.willfp.ecoenchants.v1_15_R1;
|
||||
|
||||
import com.willfp.ecoenchants.nms.API.OpenInventoryWrapper;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class OpenInventory implements OpenInventoryWrapper {
|
||||
@Override
|
||||
public Object getOpenInventory(Player player) {
|
||||
return ((CraftPlayer) player).getHandle().activeContainer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.willfp.ecoenchants.v1_16_R1;
|
||||
|
||||
import com.willfp.ecoenchants.nms.API.OpenInventoryWrapper;
|
||||
import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class OpenInventory implements OpenInventoryWrapper {
|
||||
@Override
|
||||
public Object getOpenInventory(Player player) {
|
||||
return ((CraftPlayer) player).getHandle().activeContainer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.willfp.ecoenchants.v1_16_R2;
|
||||
|
||||
import com.willfp.ecoenchants.nms.API.OpenInventoryWrapper;
|
||||
import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class OpenInventory implements OpenInventoryWrapper {
|
||||
@Override
|
||||
public Object getOpenInventory(Player player) {
|
||||
return ((CraftPlayer) player).getHandle().activeContainer;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.willfp.ecoenchants.v1_16_R3;
|
||||
|
||||
import com.willfp.ecoenchants.nms.API.OpenInventoryWrapper;
|
||||
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class OpenInventory implements OpenInventoryWrapper {
|
||||
@Override
|
||||
public Object getOpenInventory(Player player) {
|
||||
return ((CraftPlayer) player).getHandle().activeContainer;
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ dependencies {
|
||||
compileOnly 'com.destroystokyo.paper:paper-api:1.16.3-R0.1-SNAPSHOT'
|
||||
compileOnly 'com.gmail.nossr50.mcMMO:mcMMO:2.1.157'
|
||||
compileOnly 'me.clip:placeholderapi:2.10.9'
|
||||
compileOnly 'com.github.WesJD.AnvilGUI:anvilgui:master-SNAPSHOT'
|
||||
}
|
||||
|
||||
shadowJar {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.willfp.ecoenchants.enchantments.support.merging.anvil;
|
||||
|
||||
import com.willfp.ecoenchants.EcoEnchantsPlugin;
|
||||
import com.willfp.ecoenchants.config.ConfigManager;
|
||||
import com.willfp.ecoenchants.integrations.anvilgui.AnvilGUIManager;
|
||||
import com.willfp.ecoenchants.nms.RepairCost;
|
||||
import com.willfp.ecoenchants.util.NumberUtils;
|
||||
import com.willfp.ecoenchants.util.tuplets.Pair;
|
||||
@@ -34,9 +35,7 @@ public class AnvilListeners implements Listener {
|
||||
if(event.getViewers().isEmpty()) return; // Prevent ArrayIndexOutOfBoundsException when using AnvilGUI
|
||||
|
||||
Player player = (Player) event.getViewers().get(0);
|
||||
if(player.getOpenInventory().getTitle().toLowerCase().contains("quest")) return; // Fix for QuestsGUI
|
||||
if(event.getView().getTitle().toLowerCase().contains("quest")) return; // Maybe this will fix it?
|
||||
if(event.getView().getTitle().toLowerCase().contains("contents")) return; // Fix for ticketGui
|
||||
if(AnvilGUIManager.hasAnvilGUIOpen(player)) return;
|
||||
|
||||
Pair<ItemStack, Integer> newOut = AnvilMerge.doMerge(left, right, out, name, player);
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.willfp.ecoenchants.integrations.anvilgui;
|
||||
|
||||
import com.willfp.ecoenchants.integrations.Integration;
|
||||
|
||||
public interface AnvilGUIIntegration extends Integration {
|
||||
boolean isInstance(Object object);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.willfp.ecoenchants.integrations.anvilgui;
|
||||
|
||||
import com.willfp.ecoenchants.nms.OpenInventory;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class AnvilGUIManager {
|
||||
private static final Set<AnvilGUIIntegration> integrations = new HashSet<>();
|
||||
|
||||
public static void registerIntegration(AnvilGUIIntegration integration) {
|
||||
integrations.add(integration);
|
||||
}
|
||||
|
||||
public static boolean hasAnvilGUIOpen(Player player) {
|
||||
if(integrations.isEmpty())
|
||||
return false;
|
||||
return integrations.stream().anyMatch(integration -> integration.isInstance(OpenInventory.getOpenInventory(player)));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.willfp.ecoenchants.integrations.anvilgui.plugins;
|
||||
|
||||
import com.willfp.ecoenchants.EcoEnchantsPlugin;
|
||||
import com.willfp.ecoenchants.integrations.anvilgui.AnvilGUIIntegration;
|
||||
|
||||
public class AnvilGUIImpl implements AnvilGUIIntegration {
|
||||
@Override
|
||||
public boolean isInstance(Object object) {
|
||||
try {
|
||||
return object.getClass().equals(Class.forName("net.wesjd.anvilgui.version.Wrapper" + EcoEnchantsPlugin.NMS_VERSION.substring(1) + "$AnvilContainer"));
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPluginName() {
|
||||
return "AnvilGUI";
|
||||
}
|
||||
}
|
||||
@@ -40,6 +40,8 @@ import com.willfp.ecoenchants.integrations.antigrief.plugins.AntigriefKingdoms;
|
||||
import com.willfp.ecoenchants.integrations.antigrief.plugins.AntigriefLands;
|
||||
import com.willfp.ecoenchants.integrations.antigrief.plugins.AntigriefTowny;
|
||||
import com.willfp.ecoenchants.integrations.antigrief.plugins.AntigriefWorldGuard;
|
||||
import com.willfp.ecoenchants.integrations.anvilgui.AnvilGUIManager;
|
||||
import com.willfp.ecoenchants.integrations.anvilgui.plugins.AnvilGUIImpl;
|
||||
import com.willfp.ecoenchants.integrations.essentials.EssentialsManager;
|
||||
import com.willfp.ecoenchants.integrations.essentials.plugins.IntegrationEssentials;
|
||||
import com.willfp.ecoenchants.integrations.mcmmo.McmmoManager;
|
||||
@@ -48,10 +50,8 @@ import com.willfp.ecoenchants.integrations.placeholder.PlaceholderManager;
|
||||
import com.willfp.ecoenchants.integrations.placeholder.plugins.PlaceholderIntegrationPAPI;
|
||||
import com.willfp.ecoenchants.listeners.ArrowListeners;
|
||||
import com.willfp.ecoenchants.listeners.PlayerJoinListener;
|
||||
import com.willfp.ecoenchants.nms.BlockBreak;
|
||||
import com.willfp.ecoenchants.nms.Cooldown;
|
||||
import com.willfp.ecoenchants.nms.RepairCost;
|
||||
import com.willfp.ecoenchants.nms.TridentStack;
|
||||
import com.willfp.ecoenchants.nms.*;
|
||||
import com.willfp.ecoenchants.util.ClassUtils;
|
||||
import com.willfp.ecoenchants.util.Logger;
|
||||
import com.willfp.ecoenchants.util.StringUtils;
|
||||
import com.willfp.ecoenchants.util.UpdateChecker;
|
||||
@@ -142,6 +142,14 @@ public class Loader {
|
||||
Logger.error("&cAborting...");
|
||||
Bukkit.getPluginManager().disablePlugin(EcoEnchantsPlugin.getInstance());
|
||||
}
|
||||
|
||||
if(OpenInventory.init()) {
|
||||
Logger.info("Open Inventory: &aSUCCESS");
|
||||
} else {
|
||||
Logger.info("Open Inventory: &cFAILURE");
|
||||
Logger.error("&cAborting...");
|
||||
Bukkit.getPluginManager().disablePlugin(EcoEnchantsPlugin.getInstance());
|
||||
}
|
||||
|
||||
Logger.info("");
|
||||
|
||||
@@ -437,6 +445,13 @@ public class Loader {
|
||||
Logger.info("mcMMO: &9DISABLED");
|
||||
}
|
||||
|
||||
if(ClassUtils.exists("net.wesjd.anvilgui.AnvilGUI")) {
|
||||
AnvilGUIManager.registerIntegration(new AnvilGUIImpl());
|
||||
Logger.info("AnvilGUI: &aENABLED");
|
||||
} else {
|
||||
Logger.info("AnvilGUI: &9DISABLED");
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Check for paper
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.willfp.ecoenchants.nms;
|
||||
|
||||
import com.willfp.ecoenchants.EcoEnchantsPlugin;
|
||||
import com.willfp.ecoenchants.nms.API.BlockBreakWrapper;
|
||||
import com.willfp.ecoenchants.nms.API.OpenInventoryWrapper;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class OpenInventory {
|
||||
private static OpenInventoryWrapper openInventoryWrapper;
|
||||
|
||||
public static boolean init() {
|
||||
try {
|
||||
final Class<?> class2 = Class.forName("com.willfp.ecoenchants." + EcoEnchantsPlugin.NMS_VERSION + ".OpenInventory");
|
||||
if (OpenInventoryWrapper.class.isAssignableFrom(class2)) {
|
||||
openInventoryWrapper = (OpenInventoryWrapper) class2.getConstructor().newInstance();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
openInventoryWrapper = null;
|
||||
}
|
||||
return openInventoryWrapper != null;
|
||||
}
|
||||
|
||||
public static Object getOpenInventory(Player player) {
|
||||
assert openInventoryWrapper != null;
|
||||
return openInventoryWrapper.getOpenInventory(player);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user