diff --git a/src/main/java/net/pietru/cookie_utils/api/Region.java b/src/main/java/net/pietru/cookie_utils/api/Region.java index 863358b..52e100a 100644 --- a/src/main/java/net/pietru/cookie_utils/api/Region.java +++ b/src/main/java/net/pietru/cookie_utils/api/Region.java @@ -186,19 +186,10 @@ public class Region { if (area.parent.isEmpty()) { ObjectPermList perms = area.perms; - perms.set_bool_perm("place", region.getBoolean("place", false)); - perms.set_bool_perm("break", region.getBoolean("break", false)); - perms.set_bool_perm("interact", region.getBoolean("interact", false)); - perms.set_bool_perm("laser", region.getBoolean("laser", false)); - perms.set_bool_perm("be_laser", region.getBoolean("laser", true)); - perms.set_bool_perm("explode", region.getBoolean("explode", false)); - perms.set_bool_perm("enter", region.getBoolean("enter", true)); - perms.set_bool_perm("spawn_mob", region.getBoolean("spawn_mob", true)); - - perms.set_bool_perm("pvp", region.getBoolean("pvp", false)); - perms.set_bool_perm("pve", region.getBoolean("pve", true)); - perms.set_bool_perm("laser_damage", region.getBoolean("laser_damage", true)); + for (String key : ObjectPermList.default_bool_perms.keySet()){ + perms.set_bool_perm(key,region.getBoolean(key, ObjectPermList.default_bool_perms.get(key))); + } } diff --git a/src/main/java/net/pietru/cookie_utils/mixins/EntityMixin.java b/src/main/java/net/pietru/cookie_utils/mixins/EntityMixin.java index 57f15af..554cb46 100644 --- a/src/main/java/net/pietru/cookie_utils/mixins/EntityMixin.java +++ b/src/main/java/net/pietru/cookie_utils/mixins/EntityMixin.java @@ -1,5 +1,6 @@ package net.pietru.cookie_utils.mixins; +import com.badlogic.gdx.math.Vector3; import finalforeach.cosmicreach.entities.Entity; import finalforeach.cosmicreach.world.Zone; import org.spongepowered.asm.mixin.Mixin; @@ -9,4 +10,6 @@ import org.spongepowered.asm.mixin.Shadow; public class EntityMixin { @Shadow public Zone zone; + @Shadow + public Vector3 position; } diff --git a/src/main/java/net/pietru/cookie_utils/mixins/PlayerEntityMixin.java b/src/main/java/net/pietru/cookie_utils/mixins/PlayerEntityMixin.java index d6950c9..1cb65e6 100644 --- a/src/main/java/net/pietru/cookie_utils/mixins/PlayerEntityMixin.java +++ b/src/main/java/net/pietru/cookie_utils/mixins/PlayerEntityMixin.java @@ -5,6 +5,7 @@ import finalforeach.cosmicreach.accounts.Account; import finalforeach.cosmicreach.entities.Entity; import finalforeach.cosmicreach.entities.EntityLaserProjectile; import finalforeach.cosmicreach.entities.IDamageSource; +import finalforeach.cosmicreach.entities.components.PlayerFallDamage; import finalforeach.cosmicreach.entities.player.PlayerEntity; import finalforeach.cosmicreach.networking.packets.MessagePacket; import finalforeach.cosmicreach.networking.server.ServerSingletons; @@ -62,6 +63,10 @@ public class PlayerEntityMixin extends EntityMixin{ ci.cancel(); } } + } else if (damageSource instanceof PlayerFallDamage) { + if (!can_enter_position(this.position, "fall_damage", this.zone)) { + ci.cancel(); + } } } } diff --git a/src/main/java/net/pietru/cookie_utils/permissions/ObjectPermList.java b/src/main/java/net/pietru/cookie_utils/permissions/ObjectPermList.java index 5daa647..4f0921b 100644 --- a/src/main/java/net/pietru/cookie_utils/permissions/ObjectPermList.java +++ b/src/main/java/net/pietru/cookie_utils/permissions/ObjectPermList.java @@ -7,6 +7,25 @@ import java.util.HashMap; import java.util.Map; public class ObjectPermList { + public static final Map default_bool_perms = new HashMap<>(); + static { + default_bool_perms.put("place", false); + default_bool_perms.put("break", false); + default_bool_perms.put("interact", false); + default_bool_perms.put("laser", false); + default_bool_perms.put("be_laser", true); + + default_bool_perms.put("explode", false); + default_bool_perms.put("enter", true); + default_bool_perms.put("spawn_mob", false); + + default_bool_perms.put("pvp", false); + default_bool_perms.put("pve", true); + default_bool_perms.put("laser_damage", true); + default_bool_perms.put("fall_damage",true); + } + + public Map bool_perms = new HashMap<>(); // switch (action) { @@ -31,34 +50,14 @@ public class ObjectPermList { } public static void get_default_perms(JsonValue val){ - val.addChild("place", new JsonValue(false)); - val.addChild("break", new JsonValue(false)); - val.addChild("interact", new JsonValue(false)); - val.addChild("laser", new JsonValue(false)); - val.addChild("be_laser", new JsonValue(true)); - - val.addChild("explode", new JsonValue(false)); - val.addChild("enter", new JsonValue(true)); - val.addChild("spawn_mob", new JsonValue(false)); - - val.addChild("pvp", new JsonValue(false)); - val.addChild("pve", new JsonValue(true)); - val.addChild("laser_damage", new JsonValue(true)); + for (String key : default_bool_perms.keySet()){ + val.addChild(key,new JsonValue(default_bool_perms.get(key))); + } } public static void get_default_perms(ObjectPermList val){ - val.set_bool_perm("place", false); - val.set_bool_perm("break", false); - val.set_bool_perm("interact", false); - val.set_bool_perm("laser", false); - val.set_bool_perm("be_laser", true); - - val.set_bool_perm("explode", false); - val.set_bool_perm("enter", true); - val.set_bool_perm("spawn_mob", false); - - val.set_bool_perm("pvp", false); - val.set_bool_perm("pve", true); - val.set_bool_perm("laser_damage", true); + for (String key : default_bool_perms.keySet()){ + val.set_bool_perm(key,default_bool_perms.get(key)); + } } }