Divide modern and beta-safe event handling to avoid class not found errors. Fix compatibility with Poseidon.
Some checks are pending
Build / build (push) Waiting to run
Some checks are pending
Build / build (push) Waiting to run
This commit is contained in:
parent
21636595fb
commit
d6e65cda12
8 changed files with 76 additions and 34 deletions
|
|
@ -5,6 +5,8 @@ import io.github.adrianvic.nemesiseye.impl.v1_7_3.commands.Eye;
|
|||
import io.github.adrianvic.nemesiseye.impl.v1_7_3.events.BlockEventListener;
|
||||
import io.github.adrianvic.nemesiseye.impl.v1_7_3.events.EntityEventListener;
|
||||
import io.github.adrianvic.nemesiseye.impl.v1_7_3.events.PlayerEventListener;
|
||||
import io.github.adrianvic.nemesiseye.policy.Action;
|
||||
import io.github.adrianvic.nemesiseye.policy.NodeHandler;
|
||||
import io.github.adrianvic.nemesiseye.policy.Policy;
|
||||
import io.github.adrianvic.nemesiseye.policy.PolicyParsers;
|
||||
import io.github.adrianvic.nemesiseye.reflection.Glimmer;
|
||||
|
|
@ -19,6 +21,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -67,6 +70,7 @@ public class b1_7_3 implements Glimmer {
|
|||
pm = Nemesis.getInstance().getPluginManager();
|
||||
pm.registerEvent(Event.Type.ENTITY_DAMAGE, new EntityEventListener(), Event.Priority.Normal, plugin);
|
||||
pm.registerEvent(Event.Type.BLOCK_BREAK, new BlockEventListener(), Event.Priority.Normal, plugin);
|
||||
pm.registerEvent(Event.Type.BLOCK_PLACE, new BlockEventListener(), Event.Priority.Normal, plugin);
|
||||
pm.registerEvent(Event.Type.PLAYER_INTERACT, new PlayerEventListener(), Event.Priority.Normal, plugin);
|
||||
plugin.getCommand("eye").setExecutor(new Eye());
|
||||
}
|
||||
|
|
@ -108,6 +112,11 @@ public class b1_7_3 implements Glimmer {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Action, NodeHandler> getExtraHandlers() {
|
||||
return new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(CommandSender commandSender, String text) {
|
||||
String[] lines = text.split("\\r?\\n");
|
||||
|
|
|
|||
|
|
@ -1,16 +1,12 @@
|
|||
package io.github.adrianvic.nemesiseye;
|
||||
|
||||
import com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent;
|
||||
import io.github.adrianvic.nemesiseye.policy.Action;
|
||||
import io.github.adrianvic.nemesiseye.reflection.Glimmer;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
|
@ -82,28 +78,7 @@ public class Events {
|
|||
}
|
||||
}
|
||||
|
||||
public static void onInventoryClickEvent(InventoryClickEvent event) {
|
||||
if (!g().isArmorEquipAttempt(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
HumanEntity entity = event.getWhoClicked();
|
||||
|
||||
if (!Validator.can(entity, Action.EQUIP, event)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onCreatureSpawnEvent(CreatureSpawnEvent event) {
|
||||
event.setCancelled(!Validator.can(event.getEntity(), Action.SPAWN, event));
|
||||
}
|
||||
|
||||
public static void onEndermanAttackPlayerEvent(EndermanAttackPlayerEvent event) {
|
||||
event.setCancelled(!Validator.can(event.getEntity(), Action.ENDERMAN_ATTACK_PLAYER, event));
|
||||
}
|
||||
|
||||
public static void onBlockFormEvent(BlockFormEvent event) {
|
||||
boolean canceled = !Validator.can(event.getBlock().getWorld(), Action.FORMBLOCK, event);
|
||||
event.setCancelled(canceled);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
package io.github.adrianvic.nemesiseye;
|
||||
|
||||
import com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent;
|
||||
import io.github.adrianvic.nemesiseye.policy.Action;
|
||||
import org.bukkit.entity.HumanEntity;
|
||||
import org.bukkit.event.block.BlockFormEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
|
||||
public class ModernEvents {
|
||||
public static void onInventoryClickEvent(InventoryClickEvent event) {
|
||||
if (!Nemesis.getInstance().getGlimmer().isArmorEquipAttempt(event)) {
|
||||
return;
|
||||
}
|
||||
|
||||
HumanEntity entity = event.getWhoClicked();
|
||||
|
||||
if (!Validator.can(entity, Action.EQUIP, event)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onEndermanAttackPlayerEvent(EndermanAttackPlayerEvent event) {
|
||||
if (!Validator.can(event.getEntity(), Action.ENDERMAN_ATTACK_PLAYER, event)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onBlockFormEvent(BlockFormEvent event) {
|
||||
boolean canceled = !Validator.can(event.getBlock().getWorld(), Action.FORMBLOCK, event);
|
||||
event.setCancelled(canceled);
|
||||
}
|
||||
}
|
||||
|
|
@ -41,6 +41,8 @@ public class Validator {
|
|||
}
|
||||
|
||||
public static boolean can(World world, Action action, Event event) {
|
||||
boolean allowed = true;
|
||||
|
||||
for (GlobalPolicy policy : getGlobalPolicies()) {
|
||||
boolean matches = policy.matches(world, action, event);
|
||||
|
||||
|
|
@ -51,10 +53,11 @@ public class Validator {
|
|||
|
||||
case DENY:
|
||||
if (matches) return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return allowed;
|
||||
}
|
||||
|
||||
public static List<GlobalPolicy> getGlobalPolicies() {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package io.github.adrianvic.nemesiseye.policy;
|
||||
|
||||
import io.github.adrianvic.nemesiseye.Nemesis;
|
||||
import io.github.adrianvic.nemesiseye.policy.handlers.*;
|
||||
import io.github.adrianvic.nemesiseye.policy.handlers.Boolean;
|
||||
|
||||
|
|
@ -8,7 +9,7 @@ import java.util.Map;
|
|||
|
||||
public class NodeHandlers {
|
||||
private static final Map<Action, NodeHandler> handlers = new HashMap<>();
|
||||
|
||||
|
||||
static {
|
||||
handlers.put(Action.HIT, new UseItem());
|
||||
handlers.put(Action.PLACE, new BePlaced());
|
||||
|
|
@ -20,10 +21,15 @@ public class NodeHandlers {
|
|||
handlers.put(Action.BREAK, new UseItem()); // TODO: implement place handler
|
||||
handlers.put(Action.INTERACTWITH, new InteractWith());
|
||||
handlers.put(Action.ENDERMAN_ATTACK_PLAYER, new Boolean());
|
||||
handlers.put(Action.FORMBLOCK, new FormBlock());
|
||||
}
|
||||
|
||||
|
||||
public static NodeHandler get(Action type) {
|
||||
return handlers.get(type);
|
||||
NodeHandler handler = handlers.get(type);
|
||||
|
||||
if (handler == null) {
|
||||
handler = Nemesis.getInstance().getGlimmer().getExtraHandlers().get(type);
|
||||
}
|
||||
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package io.github.adrianvic.nemesiseye.reflection;
|
||||
|
||||
import io.github.adrianvic.nemesiseye.policy.Action;
|
||||
import io.github.adrianvic.nemesiseye.policy.NodeHandler;
|
||||
import io.github.adrianvic.nemesiseye.policy.Policy;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
|
|
@ -39,6 +41,9 @@ public interface Glimmer {
|
|||
boolean isArmorEquipAttempt(org.bukkit.event.Event event);
|
||||
ItemStack getEquippedItem(org.bukkit.event.Event event);
|
||||
|
||||
// Handlers
|
||||
Map<Action, NodeHandler> getExtraHandlers();
|
||||
|
||||
// Commands
|
||||
void sendMessage(CommandSender commandSender, String text);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package io.github.adrianvic.nemesiseye.impl.v1_21;
|
||||
|
||||
import io.github.adrianvic.nemesiseye.Events;
|
||||
import io.github.adrianvic.nemesiseye.ModernEvents;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
|
|
@ -9,7 +10,6 @@ import org.bukkit.event.block.BlockFormEvent;
|
|||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
|
@ -39,18 +39,18 @@ public class EventListener implements Listener {
|
|||
public void onPlayerMoveEvent(PlayerMoveEvent event) { Events.onPlayerMoveEvent(event); }
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||
public void onInventoryClickEvent(InventoryClickEvent event) { Events.onInventoryClickEvent(event); }
|
||||
public void onInventoryClickEvent(InventoryClickEvent event) { ModernEvents.onInventoryClickEvent(event); }
|
||||
|
||||
@EventHandler
|
||||
public void onCreatureSpawnEvent(CreatureSpawnEvent event) { Events.onCreatureSpawnEvent(event); }
|
||||
|
||||
@EventHandler
|
||||
public void onEndermanAttackPlayerEvent(com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent event) {
|
||||
Events.onEndermanAttackPlayerEvent(event);
|
||||
ModernEvents.onEndermanAttackPlayerEvent(event);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBlockFormEvent(BlockFormEvent event) {
|
||||
Events.onBlockFormEvent(event);
|
||||
ModernEvents.onBlockFormEvent(event);
|
||||
}
|
||||
}
|
||||
|
|
@ -3,8 +3,11 @@ package io.github.adrianvic.nemesiseye.impl.v1_21;
|
|||
import io.github.adrianvic.nemesiseye.DataShifter;
|
||||
import io.github.adrianvic.nemesiseye.Nemesis;
|
||||
import io.github.adrianvic.nemesiseye.impl.v1_21.commands.Eye;
|
||||
import io.github.adrianvic.nemesiseye.policy.Action;
|
||||
import io.github.adrianvic.nemesiseye.policy.NodeHandler;
|
||||
import io.github.adrianvic.nemesiseye.policy.Policy;
|
||||
import io.github.adrianvic.nemesiseye.policy.PolicyParsers;
|
||||
import io.github.adrianvic.nemesiseye.policy.handlers.FormBlock;
|
||||
import io.github.adrianvic.nemesiseye.reflection.Glimmer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
|
|
@ -17,6 +20,7 @@ import org.bukkit.plugin.PluginManager;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -147,6 +151,13 @@ public class r1_21 implements Glimmer {
|
|||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Action, NodeHandler> getExtraHandlers() {
|
||||
Map<Action, NodeHandler> handlers = new HashMap<>();
|
||||
handlers.put(Action.FORMBLOCK, new FormBlock());
|
||||
return handlers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMessage(CommandSender commandSender, String text) {
|
||||
commandSender.sendMessage(text);
|
||||
|
|
@ -182,6 +193,7 @@ public class r1_21 implements Glimmer {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAnyEnchantment(ItemStack item) {
|
||||
return !(item.getItemMeta().getEnchants().isEmpty());
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue