split spawn control in hostile and non hostile entities

This commit is contained in:
Flemmli97 2021-04-19 12:59:45 +02:00
parent 3832a7268c
commit b86285bc63
2 changed files with 9 additions and 2 deletions

View File

@ -70,7 +70,8 @@ public class PermissionRegistry {
public static ClaimPermission FIRESPREAD = global(new ClaimPermission("FIRESPREAD", () -> new ItemStack(Items.BLAZE_POWDER), "Toggle firespread in claim"));
public static ClaimPermission WATERBORDER = global(new ClaimPermission("WATERBORDER", () -> new ItemStack(Items.WATER_BUCKET), "Toggle water crossing claim borders"));
public static ClaimPermission PISTONBORDER = global(new ClaimPermission("PISTONBORDER", () -> new ItemStack(Items.PISTON), "Toggle piston pull/push across claim borders"));
public static ClaimPermission MOBSPAWN = global(new ClaimPermission("MOBSPAWN", () -> new ItemStack(Items.ZOMBIE_SPAWN_EGG), "Prevent mobspawn in claim"));
public static ClaimPermission MOBSPAWN = global(new ClaimPermission("MOBSPAWN", () -> new ItemStack(Items.ZOMBIE_SPAWN_EGG), "Prevent hostile mobspawn in claim"));
public static ClaimPermission ANIMALSPAWN = global(new ClaimPermission("MOBSPAWN", () -> new ItemStack(Items.CHICKEN_SPAWN_EGG), "Prevent other spawn in claim"));
private static ClaimPermission register(ClaimPermission perm) {
if (locked) {

View File

@ -1,11 +1,15 @@
package com.flemmli97.flan.event;
import com.flemmli97.flan.api.ClaimPermission;
import com.flemmli97.flan.api.PermissionRegistry;
import com.flemmli97.flan.claim.ClaimStorage;
import com.flemmli97.flan.claim.IPermissionContainer;
import com.flemmli97.flan.config.ConfigHandler;
import net.minecraft.block.BlockState;
import net.minecraft.entity.SpawnGroup;
import net.minecraft.entity.mob.MobEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos;
@ -74,6 +78,8 @@ public class WorldEvents {
if (!ConfigHandler.config.allowMobSpawnToggle)
return false;
IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(entity.getBlockPos());
return claim.canInteract(null, PermissionRegistry.MOBSPAWN, entity.getBlockPos());
if(entity.getType().getSpawnGroup() == SpawnGroup.MONSTER)
return claim.canInteract(null, PermissionRegistry.MOBSPAWN, entity.getBlockPos());
return claim.canInteract(null, PermissionRegistry.ANIMALSPAWN, entity.getBlockPos());
}
}