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;
+ }
+}