add fall_damage protect, improve loading of region values and defaults

This commit is contained in:
pietru 2025-04-21 13:16:41 +02:00
parent 7ab8cc5170
commit 65d11300bb
4 changed files with 36 additions and 38 deletions

View file

@ -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)));
}
}

View file

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

View file

@ -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();
}
}
}
}

View file

@ -7,6 +7,25 @@ import java.util.HashMap;
import java.util.Map;
public class ObjectPermList {
public static final Map<String,Boolean> 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<String,Boolean> 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));
}
}
}