diff --git a/.gradle/8.8/checksums/checksums.lock b/.gradle/8.8/checksums/checksums.lock index 3892913..a51513a 100644 Binary files a/.gradle/8.8/checksums/checksums.lock and b/.gradle/8.8/checksums/checksums.lock differ diff --git a/.gradle/8.8/checksums/md5-checksums.bin b/.gradle/8.8/checksums/md5-checksums.bin index 95a682b..f239517 100644 Binary files a/.gradle/8.8/checksums/md5-checksums.bin and b/.gradle/8.8/checksums/md5-checksums.bin differ diff --git a/.gradle/8.8/checksums/sha1-checksums.bin b/.gradle/8.8/checksums/sha1-checksums.bin index 046fb23..32471a5 100644 Binary files a/.gradle/8.8/checksums/sha1-checksums.bin and b/.gradle/8.8/checksums/sha1-checksums.bin differ diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..74169cd --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +regions \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..17d4326 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/.idea/mcregions.iml b/.idea/mcregions.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/mcregions.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 3312386..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/README.md b/README.md index bf33e30..ce91ce4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ # Regions Regions is a Minecraft Paper plugin that allows server admins to write *policies* that will deny or allow (black/whitelist) players to do specific things. -You can create policies based on player location, hence the name **Regions**, but other types of policies are available, like permission and player-name policy. +You can create policies based on player location, hence the name **Regions**, but other types of policies are available, like permission and player-name policy. \ No newline at end of file diff --git a/src/main/java/io/github/adrianvic/regions/Config.java b/src/main/java/io/github/adrianvic/regions/Config.java index 281dc78..71d3ba9 100644 --- a/src/main/java/io/github/adrianvic/regions/Config.java +++ b/src/main/java/io/github/adrianvic/regions/Config.java @@ -14,8 +14,8 @@ public class Config { private YamlConfiguration config; private List locationPolicies; - private List permissionPolicies; - private List playerNamePolicies; +// private List permissionPolicies; +// private List playerNamePolicies; private Config() { } diff --git a/src/main/java/io/github/adrianvic/regions/Validator.java b/src/main/java/io/github/adrianvic/regions/Validator.java index 26fcc63..3b69372 100644 --- a/src/main/java/io/github/adrianvic/regions/Validator.java +++ b/src/main/java/io/github/adrianvic/regions/Validator.java @@ -1,38 +1,28 @@ package io.github.adrianvic.regions; +import io.github.adrianvic.regions.policy.PolicyNode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import java.util.ArrayList; - +import java.util.List; public class Validator { - ArrayList blacklistedItems = new ArrayList(); - - public Validator() { - blacklistedItems.add(Material.COPPER_SWORD); - blacklistedItems.add(Material.COPPER_AXE); - blacklistedItems.add(Material.COPPER_HOE); - blacklistedItems.add(Material.ROTTEN_FLESH); + public static boolean canInteract(HumanEntity entity) { + return true; } - public boolean isHumanoidAbleToHit(HumanEntity damager) { - return isItemValid(damager.getInventory().getItemInMainHand().getType()); + public static boolean canBreak(HumanEntity entity) { + return true; } - public boolean isHumanoidAbleToHarvest(HumanEntity harvester) { - return isItemValid(harvester.getInventory().getItemInMainHand().getType()); + public static boolean canHit(HumanEntity entity) { + return true; } - public boolean isItemValid(Material item) { - return !blacklistedItems.contains(item); - } - - public void warnPlayer(Player player) { - Location loc = player.getLocation(); - loc.getWorld().strikeLightningEffect(loc); - player.sendMessage("Please note that you are not allowed to do this here!"); + public static List getPoliciesFor(HumanEntity entity) { + return new ArrayList<>(); } } diff --git a/src/main/java/io/github/adrianvic/regions/policy/Action.java b/src/main/java/io/github/adrianvic/regions/policy/Action.java new file mode 100644 index 0000000..706f671 --- /dev/null +++ b/src/main/java/io/github/adrianvic/regions/policy/Action.java @@ -0,0 +1,7 @@ +package io.github.adrianvic.regions.policy; + +public enum Action { + INTERACT, + BREAK, + HIT +} diff --git a/src/main/java/io/github/adrianvic/regions/policy/NodeHandler.java b/src/main/java/io/github/adrianvic/regions/policy/NodeHandler.java new file mode 100644 index 0000000..7873481 --- /dev/null +++ b/src/main/java/io/github/adrianvic/regions/policy/NodeHandler.java @@ -0,0 +1,7 @@ +package io.github.adrianvic.regions.policy; + +import org.bukkit.entity.HumanEntity; + +public interface NodeHandler { + boolean allows(HumanEntity entity, PolicyNode node, Action action); +} \ No newline at end of file diff --git a/src/main/java/io/github/adrianvic/regions/policy/NodeHandlers.java b/src/main/java/io/github/adrianvic/regions/policy/NodeHandlers.java new file mode 100644 index 0000000..3f0917b --- /dev/null +++ b/src/main/java/io/github/adrianvic/regions/policy/NodeHandlers.java @@ -0,0 +1,18 @@ +package io.github.adrianvic.regions.policy; + +import io.github.adrianvic.regions.policy.handlers.attackWith; + +import java.util.HashMap; +import java.util.Map; + +public class NodeHandlers { + private static final Map handlers = new HashMap<>(); + + static { + handlers.put("attackWithItemInHand", new attackWith()); + } + + public static NodeHandler get(String type) { + return handlers.get(type); + } +} diff --git a/src/main/java/io/github/adrianvic/regions/policy/handlers/attackWith.java b/src/main/java/io/github/adrianvic/regions/policy/handlers/attackWith.java new file mode 100644 index 0000000..111fc4e --- /dev/null +++ b/src/main/java/io/github/adrianvic/regions/policy/handlers/attackWith.java @@ -0,0 +1,17 @@ +package io.github.adrianvic.regions.policy.handlers; + +import io.github.adrianvic.regions.policy.Action; +import io.github.adrianvic.regions.policy.NodeHandler; +import io.github.adrianvic.regions.policy.PolicyNode; +import org.bukkit.entity.HumanEntity; + +public class attackWith implements NodeHandler { + + @Override + public boolean allows(HumanEntity entity, PolicyNode node, Action action) { + if (action == Action.HIT) { + if (node.values().contains(entity.getMainHand() )) return false; // nope + } + return true; + } +}