change permission to a registry instead of an hardcoded enum
This commit is contained in:
parent
685bafc755
commit
b6770a3f19
@ -1,5 +1,6 @@
|
|||||||
package com.flemmli97.flan;
|
package com.flemmli97.flan;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
||||||
import com.flemmli97.flan.commands.CommandClaim;
|
import com.flemmli97.flan.commands.CommandClaim;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
@ -14,6 +15,7 @@ import net.fabricmc.fabric.api.event.player.PlayerBlockBreakEvents;
|
|||||||
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
import net.fabricmc.fabric.api.event.player.UseBlockCallback;
|
||||||
import net.fabricmc.fabric.api.event.player.UseEntityCallback;
|
import net.fabricmc.fabric.api.event.player.UseEntityCallback;
|
||||||
import net.fabricmc.fabric.api.event.player.UseItemCallback;
|
import net.fabricmc.fabric.api.event.player.UseItemCallback;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
import org.apache.logging.log4j.LogManager;
|
import org.apache.logging.log4j.LogManager;
|
||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
@ -30,10 +32,15 @@ public class Flan implements ModInitializer {
|
|||||||
UseItemCallback.EVENT.register(ItemInteractEvents::useItem);
|
UseItemCallback.EVENT.register(ItemInteractEvents::useItem);
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(ConfigHandler::serverLoad);
|
ServerLifecycleEvents.SERVER_STARTING.register(ConfigHandler::serverLoad);
|
||||||
ServerLifecycleEvents.SERVER_STARTING.register(BlockToPermissionMap::reload);
|
ServerLifecycleEvents.SERVER_STARTING.register(BlockToPermissionMap::reload);
|
||||||
|
ServerLifecycleEvents.SERVER_STARTING.register(this::lockRegistry);
|
||||||
|
|
||||||
CommandRegistrationCallback.EVENT.register(CommandClaim::register);
|
CommandRegistrationCallback.EVENT.register(CommandClaim::register);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void lockRegistry(MinecraftServer server) {
|
||||||
|
PermissionRegistry.lock();
|
||||||
|
}
|
||||||
|
|
||||||
public static void log(String msg, Object... o) {
|
public static void log(String msg, Object... o) {
|
||||||
if (ConfigHandler.config.log)
|
if (ConfigHandler.config.log)
|
||||||
logger.info(msg, o);
|
logger.info(msg, o);
|
||||||
|
63
src/main/java/com/flemmli97/flan/api/ClaimPermission.java
Normal file
63
src/main/java/com/flemmli97/flan/api/ClaimPermission.java
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
package com.flemmli97.flan.api;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.claim.Claim;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class ClaimPermission {
|
||||||
|
|
||||||
|
private final Supplier<ItemStack> guiItem;
|
||||||
|
public String desc;
|
||||||
|
public final String id;
|
||||||
|
public final ClaimTest test;
|
||||||
|
|
||||||
|
public ClaimPermission(String id, Supplier<ItemStack> guiItem, String defaultDescription) {
|
||||||
|
this(id, guiItem, defaultDescription, pass);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClaimPermission(String id, Supplier<ItemStack> guiItem, String defaultDescription, ClaimTest test) {
|
||||||
|
this.id = id;
|
||||||
|
this.guiItem = guiItem;
|
||||||
|
this.desc = defaultDescription;
|
||||||
|
this.test = test;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack getItem() {
|
||||||
|
return this.guiItem.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return this.id.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (obj instanceof ClaimPermission) {
|
||||||
|
return this.id.equals(((ClaimPermission) obj).id);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface ClaimTest {
|
||||||
|
PermissionFlag test(Claim claim, PlayerEntity player, BlockPos pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final ClaimTest pass = (claim, player, pos) -> PermissionFlag.PASS;
|
||||||
|
|
||||||
|
public enum PermissionFlag {
|
||||||
|
YES,
|
||||||
|
NO,
|
||||||
|
PASS
|
||||||
|
}
|
||||||
|
}
|
@ -1,18 +1,21 @@
|
|||||||
package com.flemmli97.flan.permission;
|
package com.flemmli97.flan.api;
|
||||||
|
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.Items;
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
|
import net.minecraft.village.raid.Raid;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unused. might expand on this idea later
|
* Register more permissions before ServerLifecycleEvents.SERVER_STARTING
|
||||||
*/
|
*/
|
||||||
public class ClaimPermRegistry {
|
public class PermissionRegistry {
|
||||||
|
|
||||||
private static final Map<String, ClaimPermission> permissions = Maps.newLinkedHashMap();
|
private static final Map<String, ClaimPermission> permissions = Maps.newLinkedHashMap();
|
||||||
private static final Map<String, ClaimPermission> globalPermissions = Maps.newLinkedHashMap();
|
private static final Map<String, ClaimPermission> globalPermissions = Maps.newLinkedHashMap();
|
||||||
@ -46,7 +49,7 @@ public class ClaimPermRegistry {
|
|||||||
public static ClaimPermission PROJECTILES = register(new ClaimPermission("PROJECTILES", () -> new ItemStack(Items.ARROW), "Permission to let shot projectiles interact with blocks (e.g. arrow on button)"));
|
public static ClaimPermission PROJECTILES = register(new ClaimPermission("PROJECTILES", () -> new ItemStack(Items.ARROW), "Permission to let shot projectiles interact with blocks (e.g. arrow on button)"));
|
||||||
public static ClaimPermission TRAMPLE = register(new ClaimPermission("TRAMPLE", () -> new ItemStack(Items.FARMLAND), "Permission to enable block trampling (farmland, turtle eggs)"));
|
public static ClaimPermission TRAMPLE = register(new ClaimPermission("TRAMPLE", () -> new ItemStack(Items.FARMLAND), "Permission to enable block trampling (farmland, turtle eggs)"));
|
||||||
public static ClaimPermission PORTAL = register(new ClaimPermission("PORTAL", () -> new ItemStack(Items.OBSIDIAN), "Permission to use nether portals"));
|
public static ClaimPermission PORTAL = register(new ClaimPermission("PORTAL", () -> new ItemStack(Items.OBSIDIAN), "Permission to use nether portals"));
|
||||||
public static ClaimPermission RAID = register(new ClaimPermission("RAID", () -> new ItemStack(null), "Permission to trigger raids in claim. Wont prevent raids (just) outside"));
|
public static ClaimPermission RAID = register(new ClaimPermission("RAID", () -> Raid.getOminousBanner(), "Permission to trigger raids in claim. Wont prevent raids (just) outside"));
|
||||||
public static ClaimPermission BOAT = register(new ClaimPermission("BOAT", () -> new ItemStack(Items.OAK_BOAT), "Permission to sit in boats"));
|
public static ClaimPermission BOAT = register(new ClaimPermission("BOAT", () -> new ItemStack(Items.OAK_BOAT), "Permission to sit in boats"));
|
||||||
public static ClaimPermission MINECART = register(new ClaimPermission("MINECART", () -> new ItemStack(Items.MINECART), "Permission to sit in minecarts"));
|
public static ClaimPermission MINECART = register(new ClaimPermission("MINECART", () -> new ItemStack(Items.MINECART), "Permission to sit in minecarts"));
|
||||||
public static ClaimPermission BUCKET = register(new ClaimPermission("BUCKET", () -> new ItemStack(Items.BUCKET), "Permission to take liquids with buckets"));
|
public static ClaimPermission BUCKET = register(new ClaimPermission("BUCKET", () -> new ItemStack(Items.BUCKET), "Permission to take liquids with buckets"));
|
||||||
@ -63,30 +66,33 @@ public class ClaimPermRegistry {
|
|||||||
public static ClaimPermission FIRESPREAD = global(new ClaimPermission("FIRESPREAD", () -> new ItemStack(Items.BLAZE_POWDER), "Toggle firespread in claim"));
|
public static ClaimPermission FIRESPREAD = global(new ClaimPermission("FIRESPREAD", () -> new ItemStack(Items.BLAZE_POWDER), "Toggle firespread in claim"));
|
||||||
|
|
||||||
private static ClaimPermission register(ClaimPermission perm) {
|
private static ClaimPermission register(ClaimPermission perm) {
|
||||||
if (locked || permissions.containsKey(perm.id)) {
|
if (locked) {
|
||||||
|
throw new IllegalStateException("Registering permissions is locked");
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
return permissions.put(perm.id, perm);
|
permissions.put(perm.id, perm);
|
||||||
|
return perm;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ClaimPermission global(ClaimPermission perm) {
|
public static ClaimPermission global(ClaimPermission perm) {
|
||||||
if (locked || globalPermissions.containsKey(perm.id)) {
|
if (locked) {
|
||||||
|
throw new IllegalStateException("Registering permissions is locked");
|
||||||
|
}
|
||||||
|
globalPermissions.put(perm.id, perm);
|
||||||
|
return register(perm);
|
||||||
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return globalPermissions.put(perm.id, perm);
|
|
||||||
}
|
|
||||||
public static void lock() {
|
public static void lock() {
|
||||||
locked = true;
|
locked = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ClaimPermission get(String id) {
|
public static ClaimPermission get(String id) {
|
||||||
|
if (!permissions.containsKey(id))
|
||||||
|
throw new NullPointerException("No such permission registered");
|
||||||
return permissions.get(id);
|
return permissions.get(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Collection<ClaimPermission> getPerms(){
|
public static List<ClaimPermission> getPerms() {
|
||||||
return permissions.values();
|
return Lists.newArrayList(permissions.values());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Collection<ClaimPermission> globalPerms() {
|
public static Collection<ClaimPermission> globalPerms() {
|
@ -1,5 +1,7 @@
|
|||||||
package com.flemmli97.flan.claim;
|
package com.flemmli97.flan.claim;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import net.minecraft.block.AbstractButtonBlock;
|
import net.minecraft.block.AbstractButtonBlock;
|
||||||
import net.minecraft.block.AbstractPressurePlateBlock;
|
import net.minecraft.block.AbstractPressurePlateBlock;
|
||||||
@ -31,46 +33,46 @@ import java.util.Map;
|
|||||||
|
|
||||||
public class BlockToPermissionMap {
|
public class BlockToPermissionMap {
|
||||||
|
|
||||||
private static final Map<Block, EnumPermission> blockToPermission = Maps.newHashMap();
|
private static final Map<Block, ClaimPermission> blockToPermission = Maps.newHashMap();
|
||||||
|
|
||||||
public static void reload(MinecraftServer server) {
|
public static void reload(MinecraftServer server) {
|
||||||
blockToPermission.clear();
|
blockToPermission.clear();
|
||||||
for (Block block : Registry.BLOCK) {
|
for (Block block : Registry.BLOCK) {
|
||||||
if (block instanceof AnvilBlock)
|
if (block instanceof AnvilBlock)
|
||||||
blockToPermission.put(block, EnumPermission.ANVIL);
|
blockToPermission.put(block, PermissionRegistry.ANVIL);
|
||||||
if (block instanceof BedBlock)
|
if (block instanceof BedBlock)
|
||||||
blockToPermission.put(block, EnumPermission.BED);
|
blockToPermission.put(block, PermissionRegistry.BED);
|
||||||
if (block instanceof BeaconBlock)
|
if (block instanceof BeaconBlock)
|
||||||
blockToPermission.put(block, EnumPermission.BEACON);
|
blockToPermission.put(block, PermissionRegistry.BEACON);
|
||||||
if (block instanceof DoorBlock)
|
if (block instanceof DoorBlock)
|
||||||
blockToPermission.put(block, EnumPermission.DOOR);
|
blockToPermission.put(block, PermissionRegistry.DOOR);
|
||||||
if (block instanceof FenceGateBlock)
|
if (block instanceof FenceGateBlock)
|
||||||
blockToPermission.put(block, EnumPermission.FENCEGATE);
|
blockToPermission.put(block, PermissionRegistry.FENCEGATE);
|
||||||
if (block instanceof TrapdoorBlock)
|
if (block instanceof TrapdoorBlock)
|
||||||
blockToPermission.put(block, EnumPermission.TRAPDOOR);
|
blockToPermission.put(block, PermissionRegistry.TRAPDOOR);
|
||||||
if (block instanceof LeverBlock || block instanceof AbstractButtonBlock)
|
if (block instanceof LeverBlock || block instanceof AbstractButtonBlock)
|
||||||
blockToPermission.put(block, EnumPermission.BUTTONLEVER);
|
blockToPermission.put(block, PermissionRegistry.BUTTONLEVER);
|
||||||
if (block instanceof NoteBlock)
|
if (block instanceof NoteBlock)
|
||||||
blockToPermission.put(block, EnumPermission.NOTEBLOCK);
|
blockToPermission.put(block, PermissionRegistry.NOTEBLOCK);
|
||||||
if (block instanceof AbstractRedstoneGateBlock || block instanceof RedstoneWireBlock || block instanceof DaylightDetectorBlock)
|
if (block instanceof AbstractRedstoneGateBlock || block instanceof RedstoneWireBlock || block instanceof DaylightDetectorBlock)
|
||||||
blockToPermission.put(block, EnumPermission.REDSTONE);
|
blockToPermission.put(block, PermissionRegistry.REDSTONE);
|
||||||
if (block instanceof JukeboxBlock)
|
if (block instanceof JukeboxBlock)
|
||||||
blockToPermission.put(block, EnumPermission.JUKEBOX);
|
blockToPermission.put(block, PermissionRegistry.JUKEBOX);
|
||||||
if (block instanceof AbstractPressurePlateBlock)
|
if (block instanceof AbstractPressurePlateBlock)
|
||||||
blockToPermission.put(block, EnumPermission.PRESSUREPLATE);
|
blockToPermission.put(block, PermissionRegistry.PRESSUREPLATE);
|
||||||
if (block instanceof NetherPortalBlock)
|
if (block instanceof NetherPortalBlock)
|
||||||
blockToPermission.put(block, EnumPermission.PORTAL);
|
blockToPermission.put(block, PermissionRegistry.PORTAL);
|
||||||
if (block instanceof TurtleEggBlock || block instanceof FarmlandBlock)
|
if (block instanceof TurtleEggBlock || block instanceof FarmlandBlock)
|
||||||
blockToPermission.put(block, EnumPermission.TRAMPLE);
|
blockToPermission.put(block, PermissionRegistry.TRAMPLE);
|
||||||
if (block instanceof TargetBlock)
|
if (block instanceof TargetBlock)
|
||||||
blockToPermission.put(block, EnumPermission.TARGETBLOCK);
|
blockToPermission.put(block, PermissionRegistry.TARGETBLOCK);
|
||||||
if (block instanceof BellBlock || block instanceof CampfireBlock
|
if (block instanceof BellBlock || block instanceof CampfireBlock
|
||||||
|| block instanceof TntBlock || block instanceof ChorusFlowerBlock)
|
|| block instanceof TntBlock || block instanceof ChorusFlowerBlock)
|
||||||
blockToPermission.put(block, EnumPermission.PROJECTILES);
|
blockToPermission.put(block, PermissionRegistry.PROJECTILES);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EnumPermission getFromBlock(Block block) {
|
public static ClaimPermission getFromBlock(Block block) {
|
||||||
return blockToPermission.get(block);
|
return blockToPermission.get(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package com.flemmli97.flan.claim;
|
package com.flemmli97.flan.claim;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import com.flemmli97.flan.player.PlayerClaimData;
|
import com.flemmli97.flan.player.PlayerClaimData;
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
@ -13,12 +15,12 @@ import com.mojang.authlib.GameProfile;
|
|||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
|
import net.minecraft.text.LiteralText;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -32,8 +34,9 @@ public class Claim implements IPermissionContainer{
|
|||||||
private UUID owner;
|
private UUID owner;
|
||||||
|
|
||||||
private UUID claimID;
|
private UUID claimID;
|
||||||
private final EnumMap<EnumPermission, Boolean> globalPerm = Maps.newEnumMap(EnumPermission.class);
|
private LiteralText claimName;
|
||||||
private final Map<String, EnumMap<EnumPermission, Boolean>> permissions = Maps.newHashMap();
|
private final Map<ClaimPermission, Boolean> globalPerm = Maps.newHashMap();
|
||||||
|
private final Map<String, Map<ClaimPermission, Boolean>> permissions = Maps.newHashMap();
|
||||||
|
|
||||||
private final Map<UUID, String> playersGroups = Maps.newHashMap();
|
private final Map<UUID, String> playersGroups = Maps.newHashMap();
|
||||||
|
|
||||||
@ -88,6 +91,15 @@ public class Claim implements IPermissionContainer{
|
|||||||
return this.claimID;
|
return this.claimID;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LiteralText getClaimName() {
|
||||||
|
return this.claimName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClaimName(LiteralText name) {
|
||||||
|
this.claimName = name;
|
||||||
|
this.setDirty(true);
|
||||||
|
}
|
||||||
|
|
||||||
public UUID getOwner() {
|
public UUID getOwner() {
|
||||||
return this.owner;
|
return this.owner;
|
||||||
}
|
}
|
||||||
@ -168,9 +180,20 @@ public class Claim implements IPermissionContainer{
|
|||||||
return this.removed;
|
return this.removed;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canInteract(ServerPlayerEntity player, EnumPermission perm, BlockPos pos, boolean message) {
|
public boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message) {
|
||||||
|
if (perm != null) {
|
||||||
|
ClaimPermission.PermissionFlag flag = perm.test.test(this, player, pos);
|
||||||
|
if (flag != ClaimPermission.PermissionFlag.PASS) {
|
||||||
|
if (flag == ClaimPermission.PermissionFlag.NO) {
|
||||||
|
if (message)
|
||||||
|
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!this.isAdminClaim() && ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) {
|
if (!this.isAdminClaim() && ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) {
|
||||||
EnumMap<EnumPermission, Boolean> permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString());
|
Map<ClaimPermission, Boolean> permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString());
|
||||||
if (permMap.containsKey(perm)) {
|
if (permMap.containsKey(perm)) {
|
||||||
if (permMap.get(perm) || this.isAdminIgnore(player))
|
if (permMap.get(perm) || this.isAdminIgnore(player))
|
||||||
return true;
|
return true;
|
||||||
@ -179,7 +202,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (perm.isAlwaysGlobalPerm()) {
|
if (PermissionRegistry.globalPerms().contains(perm)) {
|
||||||
for (Claim claim : this.subClaims) {
|
for (Claim claim : this.subClaims) {
|
||||||
if (claim.insideClaim(pos)) {
|
if (claim.insideClaim(pos)) {
|
||||||
return claim.canInteract(player, perm, pos, message);
|
return claim.canInteract(player, perm, pos, message);
|
||||||
@ -193,14 +216,14 @@ public class Claim implements IPermissionContainer{
|
|||||||
}
|
}
|
||||||
if (this.isAdminIgnore(player) || player.getUuid().equals(this.owner))
|
if (this.isAdminIgnore(player) || player.getUuid().equals(this.owner))
|
||||||
return true;
|
return true;
|
||||||
if (perm != EnumPermission.EDITCLAIM && perm != EnumPermission.EDITPERMS)
|
if (perm != PermissionRegistry.EDITCLAIM && perm != PermissionRegistry.EDITPERMS)
|
||||||
for (Claim claim : this.subClaims) {
|
for (Claim claim : this.subClaims) {
|
||||||
if (claim.insideClaim(pos)) {
|
if (claim.insideClaim(pos)) {
|
||||||
return claim.canInteract(player, perm, pos, message);
|
return claim.canInteract(player, perm, pos, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.playersGroups.containsKey(player.getUuid())) {
|
if (this.playersGroups.containsKey(player.getUuid())) {
|
||||||
EnumMap<EnumPermission, Boolean> map = this.permissions.get(this.playersGroups.get(player.getUuid()));
|
Map<ClaimPermission, Boolean> map = this.permissions.get(this.playersGroups.get(player.getUuid()));
|
||||||
if (map != null && map.containsKey(perm)) {
|
if (map != null && map.containsKey(perm)) {
|
||||||
if (map.get(perm))
|
if (map.get(perm))
|
||||||
return true;
|
return true;
|
||||||
@ -223,11 +246,11 @@ public class Claim implements IPermissionContainer{
|
|||||||
/**
|
/**
|
||||||
* @return -1 for default, 0 for false, 1 for true
|
* @return -1 for default, 0 for false, 1 for true
|
||||||
*/
|
*/
|
||||||
public int permEnabled(EnumPermission perm) {
|
public int permEnabled(ClaimPermission perm) {
|
||||||
return !this.globalPerm.containsKey(perm) ? -1 : this.globalPerm.get(perm) ? 1 : 0;
|
return !this.globalPerm.containsKey(perm) ? -1 : this.globalPerm.get(perm) ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasPerm(EnumPermission perm) {
|
private boolean hasPerm(ClaimPermission perm) {
|
||||||
if (this.parentClaim() == null)
|
if (this.parentClaim() == null)
|
||||||
return this.permEnabled(perm) == 1;
|
return this.permEnabled(perm) == 1;
|
||||||
if (this.permEnabled(perm) == -1)
|
if (this.permEnabled(perm) == -1)
|
||||||
@ -333,8 +356,8 @@ public class Claim implements IPermissionContainer{
|
|||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean editGlobalPerms(ServerPlayerEntity player, EnumPermission toggle, int mode) {
|
public boolean editGlobalPerms(ServerPlayerEntity player, ClaimPermission toggle, int mode) {
|
||||||
if((player!= null && !this.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) || (!this.isAdminClaim() && ConfigHandler.config.globallyDefined(this.world, toggle)))
|
if ((player != null && !this.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) || (!this.isAdminClaim() && ConfigHandler.config.globallyDefined(this.world, toggle)))
|
||||||
return false;
|
return false;
|
||||||
if (mode > 1)
|
if (mode > 1)
|
||||||
mode = -1;
|
mode = -1;
|
||||||
@ -346,7 +369,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean editPerms(ServerPlayerEntity player, String group, EnumPermission perm, int mode) {
|
public boolean editPerms(ServerPlayerEntity player, String group, ClaimPermission perm, int mode) {
|
||||||
return this.editPerms(player, group, perm, mode, false);
|
return this.editPerms(player, group, perm, mode, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -356,14 +379,14 @@ public class Claim implements IPermissionContainer{
|
|||||||
* @param mode -1 = makes it resort to the global perm, 0 = deny perm, 1 = allow perm
|
* @param mode -1 = makes it resort to the global perm, 0 = deny perm, 1 = allow perm
|
||||||
* @return If editing was successful or not
|
* @return If editing was successful or not
|
||||||
*/
|
*/
|
||||||
public boolean editPerms(ServerPlayerEntity player, String group, EnumPermission perm, int mode, boolean griefPrevention) {
|
public boolean editPerms(ServerPlayerEntity player, String group, ClaimPermission perm, int mode, boolean griefPrevention) {
|
||||||
if (perm.isAlwaysGlobalPerm() || (!this.isAdminClaim() && ConfigHandler.config.globallyDefined(this.world, perm)))
|
if (PermissionRegistry.globalPerms().contains(perm) || (!this.isAdminClaim() && ConfigHandler.config.globallyDefined(this.world, perm)))
|
||||||
return false;
|
return false;
|
||||||
if (griefPrevention || this.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) {
|
if (griefPrevention || this.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) {
|
||||||
if (mode > 1)
|
if (mode > 1)
|
||||||
mode = -1;
|
mode = -1;
|
||||||
boolean has = this.permissions.containsKey(group);
|
boolean has = this.permissions.containsKey(group);
|
||||||
EnumMap<EnumPermission, Boolean> perms = has ? this.permissions.get(group) : new EnumMap<>(EnumPermission.class);
|
Map<ClaimPermission, Boolean> perms = has ? this.permissions.get(group) : Maps.newHashMap();
|
||||||
if (mode == -1)
|
if (mode == -1)
|
||||||
perms.remove(perm);
|
perms.remove(perm);
|
||||||
else
|
else
|
||||||
@ -377,7 +400,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean removePermGroup(ServerPlayerEntity player, String group) {
|
public boolean removePermGroup(ServerPlayerEntity player, String group) {
|
||||||
if (this.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) {
|
if (this.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) {
|
||||||
this.permissions.remove(group);
|
this.permissions.remove(group);
|
||||||
List<UUID> toRemove = Lists.newArrayList();
|
List<UUID> toRemove = Lists.newArrayList();
|
||||||
this.playersGroups.forEach((uuid, g) -> {
|
this.playersGroups.forEach((uuid, g) -> {
|
||||||
@ -391,7 +414,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int groupHasPerm(String rank, EnumPermission perm) {
|
public int groupHasPerm(String rank, ClaimPermission perm) {
|
||||||
if (!this.permissions.containsKey(rank) || !this.permissions.get(rank).containsKey(perm))
|
if (!this.permissions.containsKey(rank) || !this.permissions.get(rank).containsKey(perm))
|
||||||
return -1;
|
return -1;
|
||||||
return this.permissions.get(rank).get(perm) ? 1 : 0;
|
return this.permissions.get(rank).get(perm) ? 1 : 0;
|
||||||
@ -436,17 +459,17 @@ public class Claim implements IPermissionContainer{
|
|||||||
this.parent = UUID.fromString(obj.get("Parent").getAsString());
|
this.parent = UUID.fromString(obj.get("Parent").getAsString());
|
||||||
if (obj.has("GlobalPerms")) {
|
if (obj.has("GlobalPerms")) {
|
||||||
if (this.parent == null) {
|
if (this.parent == null) {
|
||||||
obj.getAsJsonArray("GlobalPerms").forEach(perm -> this.globalPerm.put(EnumPermission.valueOf(perm.getAsString()), true));
|
obj.getAsJsonArray("GlobalPerms").forEach(perm -> this.globalPerm.put(PermissionRegistry.get(perm.getAsString()), true));
|
||||||
} else {
|
} else {
|
||||||
obj.getAsJsonObject("GlobalPerms").entrySet().forEach(entry -> this.globalPerm.put(EnumPermission.valueOf(entry.getKey()), entry.getValue().getAsBoolean()));
|
obj.getAsJsonObject("GlobalPerms").entrySet().forEach(entry -> this.globalPerm.put(PermissionRegistry.get(entry.getKey()), entry.getValue().getAsBoolean()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (obj.has("PermGroup")) {
|
if (obj.has("PermGroup")) {
|
||||||
JsonObject perms = obj.getAsJsonObject("PermGroup");
|
JsonObject perms = obj.getAsJsonObject("PermGroup");
|
||||||
perms.entrySet().forEach(key -> {
|
perms.entrySet().forEach(key -> {
|
||||||
EnumMap<EnumPermission, Boolean> map = new EnumMap<>(EnumPermission.class);
|
Map<ClaimPermission, Boolean> map = Maps.newHashMap();
|
||||||
JsonObject group = key.getValue().getAsJsonObject();
|
JsonObject group = key.getValue().getAsJsonObject();
|
||||||
group.entrySet().forEach(gkey -> map.put(EnumPermission.valueOf(gkey.getKey()), gkey.getValue().getAsBoolean()));
|
group.entrySet().forEach(gkey -> map.put(PermissionRegistry.get(gkey.getKey()), gkey.getValue().getAsBoolean()));
|
||||||
this.permissions.put(key.getKey(), map);
|
this.permissions.put(key.getKey(), map);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -476,11 +499,11 @@ public class Claim implements IPermissionContainer{
|
|||||||
gPerm = new JsonArray();
|
gPerm = new JsonArray();
|
||||||
this.globalPerm.forEach((perm, bool) -> {
|
this.globalPerm.forEach((perm, bool) -> {
|
||||||
if (bool)
|
if (bool)
|
||||||
((JsonArray) gPerm).add(perm.toString());
|
((JsonArray) gPerm).add(perm.id);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
gPerm = new JsonObject();
|
gPerm = new JsonObject();
|
||||||
this.globalPerm.forEach((perm, bool) -> ((JsonObject) gPerm).addProperty(perm.toString(), bool));
|
this.globalPerm.forEach((perm, bool) -> ((JsonObject) gPerm).addProperty(perm.id, bool));
|
||||||
}
|
}
|
||||||
obj.add("GlobalPerms", gPerm);
|
obj.add("GlobalPerms", gPerm);
|
||||||
}
|
}
|
||||||
@ -488,7 +511,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
JsonObject perms = new JsonObject();
|
JsonObject perms = new JsonObject();
|
||||||
this.permissions.forEach((s, pmap) -> {
|
this.permissions.forEach((s, pmap) -> {
|
||||||
JsonObject group = new JsonObject();
|
JsonObject group = new JsonObject();
|
||||||
pmap.forEach((perm, bool) -> group.addProperty(perm.toString(), bool));
|
pmap.forEach((perm, bool) -> group.addProperty(perm.id, bool));
|
||||||
perms.add(s, group);
|
perms.add(s, group);
|
||||||
});
|
});
|
||||||
obj.add("PermGroup", perms);
|
obj.add("PermGroup", perms);
|
||||||
@ -535,7 +558,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<Text> infoString(ServerPlayerEntity player) {
|
public List<Text> infoString(ServerPlayerEntity player) {
|
||||||
boolean perms = this.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos());
|
boolean perms = this.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos());
|
||||||
List<Text> l = Lists.newArrayList();
|
List<Text> l = Lists.newArrayList();
|
||||||
l.add(PermHelper.simpleColoredText("=============================================", Formatting.GREEN));
|
l.add(PermHelper.simpleColoredText("=============================================", Formatting.GREEN));
|
||||||
GameProfile prof = this.owner != null ? player.getServer().getUserCache().getByUuid(this.owner) : null;
|
GameProfile prof = this.owner != null ? player.getServer().getUserCache().getByUuid(this.owner) : null;
|
||||||
@ -557,7 +580,7 @@ public class Claim implements IPermissionContainer{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (Map.Entry<String, EnumMap<EnumPermission, Boolean>> e : this.permissions.entrySet()) {
|
for (Map.Entry<String, Map<ClaimPermission, Boolean>> e : this.permissions.entrySet()) {
|
||||||
l.add(PermHelper.simpleColoredText(String.format(" %s:", e.getKey()), Formatting.DARK_RED));
|
l.add(PermHelper.simpleColoredText(String.format(" %s:", e.getKey()), Formatting.DARK_RED));
|
||||||
l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimGroupPerms, e.getValue()), Formatting.RED));
|
l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimGroupPerms, e.getValue()), Formatting.RED));
|
||||||
l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimGroupPlayers, nameToGroup.getOrDefault(e.getKey(), Lists.newArrayList())), Formatting.RED));
|
l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimGroupPlayers, nameToGroup.getOrDefault(e.getKey(), Lists.newArrayList())), Formatting.RED));
|
||||||
|
@ -2,6 +2,8 @@ package com.flemmli97.flan.claim;
|
|||||||
|
|
||||||
import com.flemmli97.flan.Flan;
|
import com.flemmli97.flan.Flan;
|
||||||
import com.flemmli97.flan.IClaimData;
|
import com.flemmli97.flan.IClaimData;
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import com.flemmli97.flan.player.EnumDisplayType;
|
import com.flemmli97.flan.player.EnumDisplayType;
|
||||||
import com.flemmli97.flan.player.EnumEditMode;
|
import com.flemmli97.flan.player.EnumEditMode;
|
||||||
@ -36,7 +38,6 @@ import java.io.FileReader;
|
|||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -50,6 +51,7 @@ public class ClaimStorage {
|
|||||||
private final Map<UUID, Set<Claim>> playerClaimMap = Maps.newHashMap();
|
private final Map<UUID, Set<Claim>> playerClaimMap = Maps.newHashMap();
|
||||||
private final Set<UUID> dirty = Sets.newHashSet();
|
private final Set<UUID> dirty = Sets.newHashSet();
|
||||||
private final GlobalClaim globalClaim;
|
private final GlobalClaim globalClaim;
|
||||||
|
|
||||||
public static ClaimStorage get(ServerWorld world) {
|
public static ClaimStorage get(ServerWorld world) {
|
||||||
return (ClaimStorage) ((IClaimData) world).getClaimData();
|
return (ClaimStorage) ((IClaimData) world).getClaimData();
|
||||||
}
|
}
|
||||||
@ -321,19 +323,19 @@ public class ClaimStorage {
|
|||||||
Map<File, List<File>> subClaimMap = Maps.newHashMap();
|
Map<File, List<File>> subClaimMap = Maps.newHashMap();
|
||||||
Map<Integer, File> intFileMap = Maps.newHashMap();
|
Map<Integer, File> intFileMap = Maps.newHashMap();
|
||||||
|
|
||||||
EnumSet<EnumPermission> managers = EnumSet.complementOf(EnumSet.of(EnumPermission.EDITCLAIM));
|
Set<ClaimPermission> managers = complementOf(PermissionRegistry.EDITCLAIM);
|
||||||
EnumSet<EnumPermission> builders = EnumSet.complementOf(EnumSet.of(EnumPermission.EDITPERMS, EnumPermission.EDITCLAIM));
|
Set<ClaimPermission> builders = complementOf(PermissionRegistry.EDITPERMS, PermissionRegistry.EDITCLAIM);
|
||||||
EnumSet<EnumPermission> containers = EnumSet.complementOf(EnumSet.of(EnumPermission.EDITPERMS, EnumPermission.EDITCLAIM,
|
Set<ClaimPermission> containers = complementOf(PermissionRegistry.EDITPERMS, PermissionRegistry.EDITCLAIM,
|
||||||
EnumPermission.BREAK, EnumPermission.PLACE, EnumPermission.NOTEBLOCK, EnumPermission.REDSTONE, EnumPermission.JUKEBOX,
|
PermissionRegistry.BREAK, PermissionRegistry.PLACE, PermissionRegistry.NOTEBLOCK, PermissionRegistry.REDSTONE, PermissionRegistry.JUKEBOX,
|
||||||
EnumPermission.ITEMFRAMEROTATE, EnumPermission.LECTERNTAKE, EnumPermission.ENDCRYSTALPLACE, EnumPermission.PROJECTILES,
|
PermissionRegistry.ITEMFRAMEROTATE, PermissionRegistry.LECTERNTAKE, PermissionRegistry.ENDCRYSTALPLACE, PermissionRegistry.PROJECTILES,
|
||||||
EnumPermission.TRAMPLE, EnumPermission.RAID, EnumPermission.BUCKET, EnumPermission.ARMORSTAND, EnumPermission.BREAKNONLIVING));
|
PermissionRegistry.TRAMPLE, PermissionRegistry.RAID, PermissionRegistry.BUCKET, PermissionRegistry.ARMORSTAND, PermissionRegistry.BREAKNONLIVING);
|
||||||
EnumSet<EnumPermission> accessors = EnumSet.complementOf(EnumSet.of(EnumPermission.EDITPERMS, EnumPermission.EDITCLAIM,
|
Set<ClaimPermission> accessors = complementOf(PermissionRegistry.EDITPERMS, PermissionRegistry.EDITCLAIM,
|
||||||
EnumPermission.BREAK, EnumPermission.PLACE, EnumPermission.OPENCONTAINER, EnumPermission.ANVIL, EnumPermission.BEACON,
|
PermissionRegistry.BREAK, PermissionRegistry.PLACE, PermissionRegistry.OPENCONTAINER, PermissionRegistry.ANVIL, PermissionRegistry.BEACON,
|
||||||
EnumPermission.NOTEBLOCK, EnumPermission.REDSTONE, EnumPermission.JUKEBOX, EnumPermission.ITEMFRAMEROTATE,
|
PermissionRegistry.NOTEBLOCK, PermissionRegistry.REDSTONE, PermissionRegistry.JUKEBOX, PermissionRegistry.ITEMFRAMEROTATE,
|
||||||
EnumPermission.LECTERNTAKE, EnumPermission.ENDCRYSTALPLACE, EnumPermission.PROJECTILES, EnumPermission.TRAMPLE, EnumPermission.RAID,
|
PermissionRegistry.LECTERNTAKE, PermissionRegistry.ENDCRYSTALPLACE, PermissionRegistry.PROJECTILES, PermissionRegistry.TRAMPLE, PermissionRegistry.RAID,
|
||||||
EnumPermission.BUCKET, EnumPermission.ANIMALINTERACT, EnumPermission.HURTANIMAL, EnumPermission.TRADING, EnumPermission.ARMORSTAND,
|
PermissionRegistry.BUCKET, PermissionRegistry.ANIMALINTERACT, PermissionRegistry.HURTANIMAL, PermissionRegistry.TRADING, PermissionRegistry.ARMORSTAND,
|
||||||
EnumPermission.BREAKNONLIVING));
|
PermissionRegistry.BREAKNONLIVING);
|
||||||
Map<String, EnumSet<EnumPermission>> perms = Maps.newHashMap();
|
Map<String, Set<ClaimPermission>> perms = Maps.newHashMap();
|
||||||
perms.put("managers", managers);
|
perms.put("managers", managers);
|
||||||
perms.put("builders", builders);
|
perms.put("builders", builders);
|
||||||
perms.put("containers", containers);
|
perms.put("containers", containers);
|
||||||
@ -400,8 +402,15 @@ public class ClaimStorage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Set<ClaimPermission> complementOf(ClaimPermission... perms) {
|
||||||
|
Set<ClaimPermission> set = Sets.newHashSet(PermissionRegistry.getPerms());
|
||||||
|
for (ClaimPermission perm : perms)
|
||||||
|
set.remove(perm);
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
|
||||||
private static Pair<ServerWorld, Claim> parseFromYaml(File file, Yaml yml, MinecraftServer server,
|
private static Pair<ServerWorld, Claim> parseFromYaml(File file, Yaml yml, MinecraftServer server,
|
||||||
Map<String, EnumSet<EnumPermission>> perms) throws IOException {
|
Map<String, Set<ClaimPermission>> perms) throws IOException {
|
||||||
FileReader reader = new FileReader(file);
|
FileReader reader = new FileReader(file);
|
||||||
Map<String, Object> values = yml.load(reader);
|
Map<String, Object> values = yml.load(reader);
|
||||||
reader.close();
|
reader.close();
|
||||||
@ -421,7 +430,7 @@ public class ClaimStorage {
|
|||||||
if (!builders.isEmpty() && !builders.contains(ownerString)) {
|
if (!builders.isEmpty() && !builders.contains(ownerString)) {
|
||||||
if (builders.contains("public")) {
|
if (builders.contains("public")) {
|
||||||
perms.get("builders").forEach(perm -> {
|
perms.get("builders").forEach(perm -> {
|
||||||
if (!perm.isAlwaysGlobalPerm())
|
if (!PermissionRegistry.globalPerms().contains(perm))
|
||||||
claim.editGlobalPerms(null, perm, 1);
|
claim.editGlobalPerms(null, perm, 1);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -432,7 +441,7 @@ public class ClaimStorage {
|
|||||||
if (!managers.isEmpty() && !managers.contains(ownerString)) {
|
if (!managers.isEmpty() && !managers.contains(ownerString)) {
|
||||||
if (managers.contains("public")) {
|
if (managers.contains("public")) {
|
||||||
perms.get("managers").forEach(perm -> {
|
perms.get("managers").forEach(perm -> {
|
||||||
if (!perm.isAlwaysGlobalPerm())
|
if (!PermissionRegistry.globalPerms().contains(perm))
|
||||||
claim.editGlobalPerms(null, perm, 1);
|
claim.editGlobalPerms(null, perm, 1);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -443,7 +452,7 @@ public class ClaimStorage {
|
|||||||
if (!containers.isEmpty() && !containers.contains(ownerString)) {
|
if (!containers.isEmpty() && !containers.contains(ownerString)) {
|
||||||
if (containers.contains("public")) {
|
if (containers.contains("public")) {
|
||||||
perms.get("containers").forEach(perm -> {
|
perms.get("containers").forEach(perm -> {
|
||||||
if (!perm.isAlwaysGlobalPerm())
|
if (!PermissionRegistry.globalPerms().contains(perm))
|
||||||
claim.editGlobalPerms(null, perm, 1);
|
claim.editGlobalPerms(null, perm, 1);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
@ -454,7 +463,7 @@ public class ClaimStorage {
|
|||||||
if (!accessors.isEmpty() && !accessors.contains(ownerString)) {
|
if (!accessors.isEmpty() && !accessors.contains(ownerString)) {
|
||||||
if (accessors.contains("public")) {
|
if (accessors.contains("public")) {
|
||||||
perms.get("accessors").forEach(perm -> {
|
perms.get("accessors").forEach(perm -> {
|
||||||
if (!perm.isAlwaysGlobalPerm())
|
if (!PermissionRegistry.globalPerms().contains(perm))
|
||||||
claim.editGlobalPerms(null, perm, 1);
|
claim.editGlobalPerms(null, perm, 1);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,76 +0,0 @@
|
|||||||
package com.flemmli97.flan.claim;
|
|
||||||
|
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.item.Items;
|
|
||||||
import net.minecraft.village.raid.Raid;
|
|
||||||
|
|
||||||
import java.util.EnumSet;
|
|
||||||
|
|
||||||
public enum EnumPermission {
|
|
||||||
|
|
||||||
EDITCLAIM(ConfigHandler.config.claimingItem, "Gives permission to edit (resize, delete...) the claim"),
|
|
||||||
EDITPERMS(Items.COMMAND_BLOCK, "Gives permission to change the claims permissions"),
|
|
||||||
BREAK(Items.DIAMOND_PICKAXE, "Permission to break blocks in the claim"),
|
|
||||||
PLACE(Items.GRASS_BLOCK, "Permission to place blocks in the claim"),
|
|
||||||
OPENCONTAINER(Items.CHEST, "Permission to open containers (chest, furnace etc.)"),
|
|
||||||
ANVIL(Items.ANVIL, "Permission to use anvils"),
|
|
||||||
BED(Items.RED_BED, "Permission to use beds"),
|
|
||||||
BEACON(Items.BEACON, "Permission to use beacons"),
|
|
||||||
DOOR(Items.OAK_DOOR, "Permission to use doors"),
|
|
||||||
FENCEGATE(Items.OAK_FENCE_GATE, "Permission to use fence gates"),
|
|
||||||
TRAPDOOR(Items.OAK_TRAPDOOR, "Permission to use trapdoors"),
|
|
||||||
BUTTONLEVER(Items.LEVER, "Permission to trigger levers and buttons"),
|
|
||||||
PRESSUREPLATE(Items.STONE_PRESSURE_PLATE, "Permission to trigger pressure plates"),
|
|
||||||
NOTEBLOCK(Items.NOTE_BLOCK, "Permission to change noteblocks"),
|
|
||||||
REDSTONE(Items.REDSTONE, "Permission to change redstone components"),
|
|
||||||
JUKEBOX(Items.JUKEBOX, "Permission to insert/take music discs"),
|
|
||||||
ITEMFRAMEROTATE(Items.ITEM_FRAME, "Permission to rotate items in item frames"),
|
|
||||||
LECTERNTAKE(Items.LECTERN, "Permission to change books in a lectern"),
|
|
||||||
ENDCRYSTALPLACE(Items.END_CRYSTAL, "Permission to place end crystals"),
|
|
||||||
TARGETBLOCK(Items.TARGET, "Permission to trigger target blocks"),
|
|
||||||
PROJECTILES(Items.ARROW, "Permission to let shot projectiles interact with blocks (e.g. arrow on button)"),
|
|
||||||
TRAMPLE(Items.FARMLAND, "Permission to enable block trampling (farmland, turtle eggs)"),
|
|
||||||
PORTAL(Items.OBSIDIAN, "Permission to use nether portals"),
|
|
||||||
RAID(null, "Permission to trigger raids in claim. Wont prevent raids (just) outside"),
|
|
||||||
BOAT(Items.OAK_BOAT, "Permission to sit in boats"),
|
|
||||||
MINECART(Items.MINECART, "Permission to sit in minecarts"),
|
|
||||||
BUCKET(Items.BUCKET, "Permission to take liquids with buckets"),
|
|
||||||
ENDERPEARL(Items.ENDER_PEARL, "Permission to use enderpearls"),
|
|
||||||
ANIMALINTERACT(Items.CHICKEN_SPAWN_EGG, "Permission to interact with animals (e.g. shearing sheeps)"),
|
|
||||||
HURTANIMAL(Items.BEEF, "Permission to hurt animals"),
|
|
||||||
XP(Items.EXPERIENCE_BOTTLE, "Permission to pick up xp orbs"),
|
|
||||||
TRADING(Items.EMERALD, "Permission to trade with villagers"),
|
|
||||||
ARMORSTAND(Items.ARMOR_STAND, "Permission to interact with armor stands"),
|
|
||||||
BREAKNONLIVING(Items.COMMAND_BLOCK_MINECART, "Permission to break things like minecarts or armor stands"),
|
|
||||||
HURTPLAYER(Items.DIAMOND_SWORD, "Permission to hurt other players"),
|
|
||||||
EXPLOSIONS(Items.TNT, "Toggle explosions in claim"),
|
|
||||||
WITHER(Items.WITHER_SKELETON_SKULL,"Toggle wither breaking blocks in claim"),
|
|
||||||
FIRESPREAD(Items.BLAZE_POWDER, "Toggle firespread in claim");
|
|
||||||
|
|
||||||
private final Item item;
|
|
||||||
|
|
||||||
public String translation;
|
|
||||||
|
|
||||||
private static final EnumSet<EnumPermission> alwaysGlobal = EnumSet.of(HURTPLAYER, EXPLOSIONS, WITHER, FIRESPREAD);
|
|
||||||
|
|
||||||
EnumPermission(Item item, String translation) {
|
|
||||||
this.item = item;
|
|
||||||
this.translation = translation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getItem() {
|
|
||||||
if (this == RAID)
|
|
||||||
return Raid.getOminousBanner();
|
|
||||||
return new ItemStack(this.item);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAlwaysGlobalPerm() {
|
|
||||||
return alwaysGlobal.contains(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int alwaysGlobalLength() {
|
|
||||||
return alwaysGlobal.size();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,24 +1,26 @@
|
|||||||
package com.flemmli97.flan.claim;
|
package com.flemmli97.flan.claim;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.server.world.ServerWorld;
|
import net.minecraft.server.world.ServerWorld;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.Map;
|
||||||
|
|
||||||
public class GlobalClaim implements IPermissionContainer {
|
public class GlobalClaim implements IPermissionContainer {
|
||||||
|
|
||||||
private final ServerWorld world;
|
private final ServerWorld world;
|
||||||
|
|
||||||
public GlobalClaim(ServerWorld world) {
|
public GlobalClaim(ServerWorld world) {
|
||||||
this.world = world;
|
this.world = world;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteract(ServerPlayerEntity player, EnumPermission perm, BlockPos pos, boolean message) {
|
public boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message) {
|
||||||
if (ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) {
|
if (ConfigHandler.config.globalDefaultPerms.containsKey(this.world.getRegistryKey().getValue().toString())) {
|
||||||
EnumMap<EnumPermission, Boolean> permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString());
|
Map<ClaimPermission, Boolean> permMap = ConfigHandler.config.globalDefaultPerms.get(this.world.getRegistryKey().getValue().toString());
|
||||||
if (permMap.containsKey(perm)) {
|
if (permMap.containsKey(perm)) {
|
||||||
if (permMap.get(perm))
|
if (permMap.get(perm))
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
package com.flemmli97.flan.claim;
|
package com.flemmli97.flan.claim;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
|
||||||
public interface IPermissionContainer {
|
public interface IPermissionContainer {
|
||||||
|
|
||||||
default boolean canInteract(ServerPlayerEntity player, EnumPermission perm, BlockPos pos){
|
default boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos) {
|
||||||
return this.canInteract(player, perm, pos, false);
|
return this.canInteract(player, perm, pos, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean canInteract(ServerPlayerEntity player, EnumPermission perm, BlockPos pos, boolean message);
|
boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.flemmli97.flan.claim;
|
package com.flemmli97.flan.claim;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import net.minecraft.server.network.ServerPlayerEntity;
|
import net.minecraft.server.network.ServerPlayerEntity;
|
||||||
import net.minecraft.text.LiteralText;
|
import net.minecraft.text.LiteralText;
|
||||||
@ -13,7 +14,7 @@ import java.util.function.Consumer;
|
|||||||
|
|
||||||
public class PermHelper {
|
public class PermHelper {
|
||||||
|
|
||||||
public static boolean check(ServerPlayerEntity player, BlockPos pos, Claim claim, EnumPermission perm, Consumer<Optional<Boolean>> cons) {
|
public static boolean check(ServerPlayerEntity player, BlockPos pos, Claim claim, ClaimPermission perm, Consumer<Optional<Boolean>> cons) {
|
||||||
if (claim == null) {
|
if (claim == null) {
|
||||||
cons.accept(Optional.empty());
|
cons.accept(Optional.empty());
|
||||||
return false;
|
return false;
|
||||||
@ -23,7 +24,7 @@ public class PermHelper {
|
|||||||
return hasPerm;
|
return hasPerm;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Claim checkReturn(ServerPlayerEntity player, EnumPermission perm, Consumer<Optional<Boolean>> cons) {
|
public static Claim checkReturn(ServerPlayerEntity player, ClaimPermission perm, Consumer<Optional<Boolean>> cons) {
|
||||||
BlockPos pos = player.getBlockPos();
|
BlockPos pos = player.getBlockPos();
|
||||||
Claim claim = ClaimStorage.get(player.getServerWorld()).getClaimAt(pos);
|
Claim claim = ClaimStorage.get(player.getServerWorld()).getClaimAt(pos);
|
||||||
return check(player, pos, claim, perm, cons) ? claim : null;
|
return check(player, pos, claim, perm, cons) ? claim : null;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.flemmli97.flan.commands;
|
package com.flemmli97.flan.commands;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.Claim;
|
import com.flemmli97.flan.claim.Claim;
|
||||||
import com.flemmli97.flan.claim.ClaimStorage;
|
import com.flemmli97.flan.claim.ClaimStorage;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.PermHelper;
|
import com.flemmli97.flan.claim.PermHelper;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import com.flemmli97.flan.gui.ClaimMenuScreenHandler;
|
import com.flemmli97.flan.gui.ClaimMenuScreenHandler;
|
||||||
@ -36,7 +37,6 @@ import net.minecraft.util.math.BlockPos;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -82,7 +82,7 @@ public class CommandClaim {
|
|||||||
ServerCommandSource src = context.getSource();
|
ServerCommandSource src = context.getSource();
|
||||||
ClaimStorage storage = ClaimStorage.get(src.getWorld());
|
ClaimStorage storage = ClaimStorage.get(src.getWorld());
|
||||||
Claim claim = storage.getClaimAt(src.getPlayer().getBlockPos());
|
Claim claim = storage.getClaimAt(src.getPlayer().getBlockPos());
|
||||||
if (claim != null && claim.canInteract(src.getPlayer(), EnumPermission.EDITPERMS, src.getPlayer().getBlockPos())) {
|
if (claim != null && claim.canInteract(src.getPlayer(), PermissionRegistry.EDITPERMS, src.getPlayer().getBlockPos())) {
|
||||||
list = claim.playersFromGroup(player.getServer(), "");
|
list = claim.playersFromGroup(player.getServer(), "");
|
||||||
}
|
}
|
||||||
return CommandSource.suggestMatching(list, build);
|
return CommandSource.suggestMatching(list, build);
|
||||||
@ -138,7 +138,7 @@ public class CommandClaim {
|
|||||||
ServerPlayerEntity player = context.getSource().getPlayer();
|
ServerPlayerEntity player = context.getSource().getPlayer();
|
||||||
PlayerClaimData data = PlayerClaimData.get(player);
|
PlayerClaimData data = PlayerClaimData.get(player);
|
||||||
if (data.getEditMode() == EnumEditMode.DEFAULT) {
|
if (data.getEditMode() == EnumEditMode.DEFAULT) {
|
||||||
Claim claim = PermHelper.checkReturn(player, EnumPermission.EDITPERMS, PermHelper.genericNoPermMessage(player));
|
Claim claim = PermHelper.checkReturn(player, PermissionRegistry.EDITPERMS, PermHelper.genericNoPermMessage(player));
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return 0;
|
return 0;
|
||||||
ClaimMenuScreenHandler.openClaimMenu(player, claim);
|
ClaimMenuScreenHandler.openClaimMenu(player, claim);
|
||||||
@ -146,9 +146,9 @@ public class CommandClaim {
|
|||||||
} else {
|
} else {
|
||||||
Claim claim = ClaimStorage.get(player.getServerWorld()).getClaimAt(player.getBlockPos());
|
Claim claim = ClaimStorage.get(player.getServerWorld()).getClaimAt(player.getBlockPos());
|
||||||
Claim sub = claim.getSubClaim(player.getBlockPos());
|
Claim sub = claim.getSubClaim(player.getBlockPos());
|
||||||
if (sub != null && (claim.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos()) || sub.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())))
|
if (sub != null && (claim.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos()) || sub.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())))
|
||||||
ClaimMenuScreenHandler.openClaimMenu(player, sub);
|
ClaimMenuScreenHandler.openClaimMenu(player, sub);
|
||||||
else if (claim.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos()))
|
else if (claim.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos()))
|
||||||
ClaimMenuScreenHandler.openClaimMenu(player, claim);
|
ClaimMenuScreenHandler.openClaimMenu(player, claim);
|
||||||
else
|
else
|
||||||
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermission, Formatting.DARK_RED), false);
|
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermission, Formatting.DARK_RED), false);
|
||||||
@ -184,7 +184,7 @@ public class CommandClaim {
|
|||||||
ServerPlayerEntity player = context.getSource().getPlayer();
|
ServerPlayerEntity player = context.getSource().getPlayer();
|
||||||
ClaimStorage storage = ClaimStorage.get(player.getServerWorld());
|
ClaimStorage storage = ClaimStorage.get(player.getServerWorld());
|
||||||
Claim claim = storage.getClaimAt(player.getBlockPos());
|
Claim claim = storage.getClaimAt(player.getBlockPos());
|
||||||
boolean check = PermHelper.check(player, player.getBlockPos(), claim, EnumPermission.EDITCLAIM, b -> {
|
boolean check = PermHelper.check(player, player.getBlockPos(), claim, PermissionRegistry.EDITCLAIM, b -> {
|
||||||
if (!b.isPresent())
|
if (!b.isPresent())
|
||||||
PermHelper.noClaimMessage(player);
|
PermHelper.noClaimMessage(player);
|
||||||
else if (!b.get())
|
else if (!b.get())
|
||||||
@ -228,7 +228,7 @@ public class CommandClaim {
|
|||||||
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noClaim, Formatting.RED), false);
|
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noClaim, Formatting.RED), false);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
boolean check = PermHelper.check(player, player.getBlockPos(), claim, EnumPermission.EDITCLAIM, b -> {
|
boolean check = PermHelper.check(player, player.getBlockPos(), claim, PermissionRegistry.EDITCLAIM, b -> {
|
||||||
if (!b.isPresent())
|
if (!b.isPresent())
|
||||||
PermHelper.noClaimMessage(player);
|
PermHelper.noClaimMessage(player);
|
||||||
else if (!b.get())
|
else if (!b.get())
|
||||||
@ -244,7 +244,7 @@ public class CommandClaim {
|
|||||||
|
|
||||||
private static int deleteAllSubClaim(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
private static int deleteAllSubClaim(CommandContext<ServerCommandSource> context) throws CommandSyntaxException {
|
||||||
ServerPlayerEntity player = context.getSource().getPlayer();
|
ServerPlayerEntity player = context.getSource().getPlayer();
|
||||||
Claim claim = PermHelper.checkReturn(player, EnumPermission.EDITCLAIM, PermHelper.genericNoPermMessage(player));
|
Claim claim = PermHelper.checkReturn(player, PermissionRegistry.EDITCLAIM, PermHelper.genericNoPermMessage(player));
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return 0;
|
return 0;
|
||||||
List<Claim> subs = claim.getAllSubclaims();
|
List<Claim> subs = claim.getAllSubclaims();
|
||||||
@ -400,7 +400,7 @@ public class CommandClaim {
|
|||||||
List<String> list = Lists.newArrayList();
|
List<String> list = Lists.newArrayList();
|
||||||
ClaimStorage storage = ClaimStorage.get(player.getServerWorld());
|
ClaimStorage storage = ClaimStorage.get(player.getServerWorld());
|
||||||
Claim claim = storage.getClaimAt(player.getBlockPos());
|
Claim claim = storage.getClaimAt(player.getBlockPos());
|
||||||
if (claim != null && claim.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) {
|
if (claim != null && claim.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) {
|
||||||
list = claim.groups();
|
list = claim.groups();
|
||||||
}
|
}
|
||||||
return CommandSource.suggestMatching(list, build);
|
return CommandSource.suggestMatching(list, build);
|
||||||
@ -435,7 +435,7 @@ public class CommandClaim {
|
|||||||
if (claim.groups().contains(group)) {
|
if (claim.groups().contains(group)) {
|
||||||
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.groupExist, group), Formatting.RED), false);
|
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.groupExist, group), Formatting.RED), false);
|
||||||
return 0;
|
return 0;
|
||||||
} else if (claim.editPerms(player, group, EnumPermission.EDITPERMS, -1))
|
} else if (claim.editPerms(player, group, PermissionRegistry.EDITPERMS, -1))
|
||||||
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.groupAdd, group), Formatting.GOLD), false);
|
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.groupAdd, group), Formatting.GOLD), false);
|
||||||
else {
|
else {
|
||||||
PermHelper.genericNoPermMessage(player);
|
PermHelper.genericNoPermMessage(player);
|
||||||
@ -467,7 +467,7 @@ public class CommandClaim {
|
|||||||
PermHelper.noClaimMessage(player);
|
PermHelper.noClaimMessage(player);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!claim.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) {
|
if (!claim.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) {
|
||||||
PermHelper.genericNoPermMessage(player);
|
PermHelper.genericNoPermMessage(player);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -488,13 +488,13 @@ public class CommandClaim {
|
|||||||
Claim claim = ClaimStorage.get(world).getClaimAt(new BlockPos(context.getSource().getPosition()));
|
Claim claim = ClaimStorage.get(world).getClaimAt(new BlockPos(context.getSource().getPosition()));
|
||||||
boolean admin = claim != null && claim.isAdminClaim();
|
boolean admin = claim != null && claim.isAdminClaim();
|
||||||
String serverWorld = world.getRegistryKey().getValue().toString();
|
String serverWorld = world.getRegistryKey().getValue().toString();
|
||||||
EnumMap<EnumPermission,Boolean> global = ConfigHandler.config.globalDefaultPerms.get(serverWorld);
|
Map<ClaimPermission, Boolean> global = ConfigHandler.config.globalDefaultPerms.get(serverWorld);
|
||||||
for (EnumPermission perm : EnumPermission.values()) {
|
for (ClaimPermission perm : PermissionRegistry.getPerms()) {
|
||||||
if (!admin && global != null && global.containsKey(perm)) {
|
if (!admin && global != null && global.containsKey(perm)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!group || !perm.isAlwaysGlobalPerm())
|
if (!group || !PermissionRegistry.globalPerms().contains(perm))
|
||||||
build.suggest(perm.toString());
|
build.suggest(perm.id);
|
||||||
}
|
}
|
||||||
return build.buildFuture();
|
return build.buildFuture();
|
||||||
}
|
}
|
||||||
@ -544,17 +544,17 @@ public class CommandClaim {
|
|||||||
PermHelper.noClaimMessage(player);
|
PermHelper.noClaimMessage(player);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!claim.canInteract(player, EnumPermission.EDITPERMS, player.getBlockPos())) {
|
if (!claim.canInteract(player, PermissionRegistry.EDITPERMS, player.getBlockPos())) {
|
||||||
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermission, Formatting.DARK_RED), false);
|
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermission, Formatting.DARK_RED), false);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EnumPermission perm;
|
ClaimPermission perm;
|
||||||
String p = StringArgumentType.getString(context, "permission");
|
String p = StringArgumentType.getString(context, "permission");
|
||||||
try {
|
try {
|
||||||
perm = EnumPermission.valueOf(p);
|
perm = PermissionRegistry.get(p);
|
||||||
if (group != null && perm.isAlwaysGlobalPerm())
|
if (group != null && PermissionRegistry.globalPerms().contains(perm))
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (NullPointerException e) {
|
||||||
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.noSuchPerm, p), Formatting.DARK_RED), false);
|
player.sendMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.noSuchPerm, p), Formatting.DARK_RED), false);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package com.flemmli97.flan.config;
|
package com.flemmli97.flan.config;
|
||||||
|
|
||||||
import com.flemmli97.flan.Flan;
|
import com.flemmli97.flan.Flan;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
@ -17,7 +18,6 @@ import java.io.File;
|
|||||||
import java.io.FileReader;
|
import java.io.FileReader;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.EnumMap;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class Config {
|
public class Config {
|
||||||
@ -42,7 +42,7 @@ public class Config {
|
|||||||
|
|
||||||
public boolean log;
|
public boolean log;
|
||||||
|
|
||||||
public final Map<String,EnumMap<EnumPermission,Boolean>> globalDefaultPerms = Maps.newHashMap();
|
public final Map<String, Map<ClaimPermission, Boolean>> globalDefaultPerms = Maps.newHashMap();
|
||||||
|
|
||||||
public Config(MinecraftServer server) {
|
public Config(MinecraftServer server) {
|
||||||
File configDir = FabricLoader.getInstance().getConfigDir().resolve("flan").toFile();
|
File configDir = FabricLoader.getInstance().getConfigDir().resolve("flan").toFile();
|
||||||
@ -85,14 +85,13 @@ public class Config {
|
|||||||
this.globalDefaultPerms.clear();
|
this.globalDefaultPerms.clear();
|
||||||
JsonObject glob = ConfigHandler.fromJson(obj, "globalDefaultPerms");
|
JsonObject glob = ConfigHandler.fromJson(obj, "globalDefaultPerms");
|
||||||
glob.entrySet().forEach(e -> {
|
glob.entrySet().forEach(e -> {
|
||||||
EnumMap<EnumPermission, Boolean> perms = new EnumMap<>(EnumPermission.class);
|
Map<ClaimPermission, Boolean> perms = Maps.newHashMap();
|
||||||
if (e.getValue().isJsonObject()) {
|
if (e.getValue().isJsonObject()) {
|
||||||
e.getValue().getAsJsonObject().entrySet().forEach(jperm -> {
|
e.getValue().getAsJsonObject().entrySet().forEach(jperm -> {
|
||||||
try {
|
try {
|
||||||
perms.put(EnumPermission.valueOf(jperm.getKey()), jperm.getValue().getAsBoolean());
|
perms.put(PermissionRegistry.get(jperm.getKey()), jperm.getValue().getAsBoolean());
|
||||||
}
|
} catch (NullPointerException ex) {
|
||||||
catch (IllegalArgumentException ex){
|
Flan.log("No permission with name {}", jperm.getKey());
|
||||||
Flan.log("No permmission with name {}", jperm.getKey());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -125,7 +124,7 @@ public class Config {
|
|||||||
JsonObject global = new JsonObject();
|
JsonObject global = new JsonObject();
|
||||||
this.globalDefaultPerms.forEach((key, value) -> {
|
this.globalDefaultPerms.forEach((key, value) -> {
|
||||||
JsonObject perm = new JsonObject();
|
JsonObject perm = new JsonObject();
|
||||||
value.forEach((key1, value1) -> perm.addProperty(key1.toString(), value1));
|
value.forEach((key1, value1) -> perm.addProperty(key1.id, value1));
|
||||||
global.add(key, perm);
|
global.add(key, perm);
|
||||||
});
|
});
|
||||||
obj.add("globalDefaultPerms", global);
|
obj.add("globalDefaultPerms", global);
|
||||||
@ -139,7 +138,8 @@ public class Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean globallyDefined(ServerWorld world, EnumPermission perm){
|
public boolean globallyDefined(ServerWorld world, ClaimPermission perm) {
|
||||||
EnumMap<EnumPermission,Boolean> global = ConfigHandler.config.globalDefaultPerms.get(world.getRegistryKey().getValue().toString());
|
Map<ClaimPermission, Boolean> global = ConfigHandler.config.globalDefaultPerms.get(world.getRegistryKey().getValue().toString());
|
||||||
return global != null && global.containsKey(perm);
|
return global != null && global.containsKey(perm);
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
@ -27,8 +27,7 @@ public class ConfigHandler {
|
|||||||
public static int fromJson(JsonObject obj, String key, int fallback) {
|
public static int fromJson(JsonObject obj, String key, int fallback) {
|
||||||
try {
|
try {
|
||||||
return obj.get(key).getAsInt();
|
return obj.get(key).getAsInt();
|
||||||
}
|
} catch (NullPointerException | UnsupportedOperationException e) {
|
||||||
catch (NullPointerException | UnsupportedOperationException e){
|
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -36,8 +35,7 @@ public class ConfigHandler {
|
|||||||
public static boolean fromJson(JsonObject obj, String key, boolean fallback) {
|
public static boolean fromJson(JsonObject obj, String key, boolean fallback) {
|
||||||
try {
|
try {
|
||||||
return obj.get(key).getAsBoolean();
|
return obj.get(key).getAsBoolean();
|
||||||
}
|
} catch (NullPointerException | UnsupportedOperationException e) {
|
||||||
catch (NullPointerException | UnsupportedOperationException e){
|
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -45,8 +43,7 @@ public class ConfigHandler {
|
|||||||
public static String fromJson(JsonObject obj, String key, String fallback) {
|
public static String fromJson(JsonObject obj, String key, String fallback) {
|
||||||
try {
|
try {
|
||||||
return obj.get(key).getAsString();
|
return obj.get(key).getAsString();
|
||||||
}
|
} catch (NullPointerException | UnsupportedOperationException e) {
|
||||||
catch (NullPointerException | UnsupportedOperationException e){
|
|
||||||
return fallback;
|
return fallback;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,8 +51,7 @@ public class ConfigHandler {
|
|||||||
public static JsonObject fromJson(JsonObject obj, String key) {
|
public static JsonObject fromJson(JsonObject obj, String key) {
|
||||||
try {
|
try {
|
||||||
return obj.get(key).getAsJsonObject();
|
return obj.get(key).getAsJsonObject();
|
||||||
}
|
} catch (NullPointerException | UnsupportedOperationException e) {
|
||||||
catch (NullPointerException | UnsupportedOperationException e){
|
|
||||||
return new JsonObject();
|
return new JsonObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -63,8 +59,7 @@ public class ConfigHandler {
|
|||||||
public static JsonArray arryFromJson(JsonObject obj, String key) {
|
public static JsonArray arryFromJson(JsonObject obj, String key) {
|
||||||
try {
|
try {
|
||||||
return obj.get(key).getAsJsonArray();
|
return obj.get(key).getAsJsonArray();
|
||||||
}
|
} catch (NullPointerException | UnsupportedOperationException e) {
|
||||||
catch (NullPointerException | UnsupportedOperationException e){
|
|
||||||
return new JsonArray();
|
return new JsonArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.flemmli97.flan.config;
|
package com.flemmli97.flan.config;
|
||||||
|
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
@ -102,9 +103,9 @@ public class LangConfig {
|
|||||||
field.set(this, obj.get(field.getName()).getAsString());
|
field.set(this, obj.get(field.getName()).getAsString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(EnumPermission perm : EnumPermission.values()){
|
for (ClaimPermission perm : PermissionRegistry.getPerms()) {
|
||||||
if(obj.has(perm.toString()+".desc"))
|
if (obj.has(perm.id + ".desc"))
|
||||||
perm.translation = obj.get(perm.toString()+".desc").getAsString();
|
perm.desc = obj.get(perm.id + ".desc").getAsString();
|
||||||
}
|
}
|
||||||
} catch (IOException | IllegalAccessException e) {
|
} catch (IOException | IllegalAccessException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -120,8 +121,8 @@ public class LangConfig {
|
|||||||
obj.addProperty(field.getName(), (String) field.get(this));
|
obj.addProperty(field.getName(), (String) field.get(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(EnumPermission perm : EnumPermission.values())
|
for (ClaimPermission perm : PermissionRegistry.getPerms())
|
||||||
obj.addProperty(perm.toString()+".desc", perm.translation);
|
obj.addProperty(perm.id + ".desc", perm.desc);
|
||||||
FileWriter writer = new FileWriter(this.config);
|
FileWriter writer = new FileWriter(this.config);
|
||||||
ConfigHandler.GSON.toJson(obj, writer);
|
ConfigHandler.GSON.toJson(obj, writer);
|
||||||
writer.close();
|
writer.close();
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.flemmli97.flan.event;
|
package com.flemmli97.flan.event;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
||||||
import com.flemmli97.flan.claim.ClaimStorage;
|
import com.flemmli97.flan.claim.ClaimStorage;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.IPermissionContainer;
|
import com.flemmli97.flan.claim.IPermissionContainer;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import com.flemmli97.flan.gui.LockedLecternScreenHandler;
|
import com.flemmli97.flan.gui.LockedLecternScreenHandler;
|
||||||
@ -39,7 +40,7 @@ public class BlockInteractEvents {
|
|||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null) {
|
if (claim != null) {
|
||||||
if (!claim.canInteract(player, EnumPermission.BREAK, pos, true)) {
|
if (!claim.canInteract(player, PermissionRegistry.BREAK, pos, true)) {
|
||||||
PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.getBlockPos().getY());
|
PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.getBlockPos().getY());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -68,9 +69,9 @@ public class BlockInteractEvents {
|
|||||||
boolean cancelBlockInteract = player.shouldCancelInteraction() && emptyHand;
|
boolean cancelBlockInteract = player.shouldCancelInteraction() && emptyHand;
|
||||||
if (!cancelBlockInteract) {
|
if (!cancelBlockInteract) {
|
||||||
BlockState state = world.getBlockState(hitResult.getBlockPos());
|
BlockState state = world.getBlockState(hitResult.getBlockPos());
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
||||||
//Pressureplate handled elsewhere
|
//Pressureplate handled elsewhere
|
||||||
if (perm != null && perm != EnumPermission.PRESSUREPLATE) {
|
if (perm != null && perm != PermissionRegistry.PRESSUREPLATE) {
|
||||||
if (claim.canInteract(player, perm, hitResult.getBlockPos(), true))
|
if (claim.canInteract(player, perm, hitResult.getBlockPos(), true))
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
if (state.getBlock() instanceof DoorBlock) {
|
if (state.getBlock() instanceof DoorBlock) {
|
||||||
@ -89,14 +90,14 @@ public class BlockInteractEvents {
|
|||||||
BlockEntity blockEntity = world.getBlockEntity(hitResult.getBlockPos());
|
BlockEntity blockEntity = world.getBlockEntity(hitResult.getBlockPos());
|
||||||
if (blockEntity != null) {
|
if (blockEntity != null) {
|
||||||
if (blockEntity instanceof LecternBlockEntity) {
|
if (blockEntity instanceof LecternBlockEntity) {
|
||||||
if (claim.canInteract(player, EnumPermission.LECTERNTAKE, hitResult.getBlockPos(), false))
|
if (claim.canInteract(player, PermissionRegistry.LECTERNTAKE, hitResult.getBlockPos(), false))
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
if (state.get(LecternBlock.HAS_BOOK))
|
if (state.get(LecternBlock.HAS_BOOK))
|
||||||
LockedLecternScreenHandler.create(player, (LecternBlockEntity) blockEntity);
|
LockedLecternScreenHandler.create(player, (LecternBlockEntity) blockEntity);
|
||||||
return ActionResult.FAIL;
|
return ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
if (!ConfigHandler.config.lenientBlockEntityCheck || blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider) {
|
if (!ConfigHandler.config.lenientBlockEntityCheck || blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider) {
|
||||||
if (claim.canInteract(player, EnumPermission.OPENCONTAINER, hitResult.getBlockPos(), true))
|
if (claim.canInteract(player, PermissionRegistry.OPENCONTAINER, hitResult.getBlockPos(), true))
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.getBlockPos().getY());
|
PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.getBlockPos().getY());
|
||||||
return ActionResult.FAIL;
|
return ActionResult.FAIL;
|
||||||
@ -111,16 +112,20 @@ public class BlockInteractEvents {
|
|||||||
if (entity.world.isClient)
|
if (entity.world.isClient)
|
||||||
return false;
|
return false;
|
||||||
if (entity instanceof ServerPlayerEntity) {
|
if (entity instanceof ServerPlayerEntity) {
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
||||||
if (perm != EnumPermission.PRESSUREPLATE && perm != EnumPermission.PORTAL)
|
if (perm == null)
|
||||||
|
return false;
|
||||||
|
if (perm != PermissionRegistry.PRESSUREPLATE && perm != PermissionRegistry.PORTAL)
|
||||||
return false;
|
return false;
|
||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null)
|
if (claim != null)
|
||||||
return !claim.canInteract((ServerPlayerEntity) entity, perm, pos, false);
|
return !claim.canInteract((ServerPlayerEntity) entity, perm, pos, false);
|
||||||
} else if (entity instanceof ProjectileEntity) {
|
} else if (entity instanceof ProjectileEntity) {
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
||||||
if (perm != EnumPermission.PRESSUREPLATE && perm != EnumPermission.BUTTONLEVER)
|
if (perm == null)
|
||||||
|
return false;
|
||||||
|
if (perm != PermissionRegistry.PRESSUREPLATE && perm != PermissionRegistry.BUTTONLEVER)
|
||||||
return false;
|
return false;
|
||||||
Entity owner = ((ProjectileEntity) entity).getOwner();
|
Entity owner = ((ProjectileEntity) entity).getOwner();
|
||||||
if (owner instanceof ServerPlayerEntity) {
|
if (owner instanceof ServerPlayerEntity) {
|
||||||
@ -137,20 +142,22 @@ public class BlockInteractEvents {
|
|||||||
if (entity.world.isClient)
|
if (entity.world.isClient)
|
||||||
return false;
|
return false;
|
||||||
if (entity instanceof ServerPlayerEntity) {
|
if (entity instanceof ServerPlayerEntity) {
|
||||||
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(landedState.getBlock());
|
||||||
|
if (perm != PermissionRegistry.TRAMPLE)
|
||||||
|
return false;
|
||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) entity.world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) entity.world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(landedPosition);
|
IPermissionContainer claim = storage.getForPermissionCheck(landedPosition);
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return false;
|
return false;
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(landedState.getBlock());
|
|
||||||
if (perm == EnumPermission.TRAMPLE)
|
|
||||||
return !claim.canInteract((ServerPlayerEntity) entity, perm, landedPosition, true);
|
return !claim.canInteract((ServerPlayerEntity) entity, perm, landedPosition, true);
|
||||||
} else if (entity instanceof ProjectileEntity) {
|
} else if (entity instanceof ProjectileEntity) {
|
||||||
Entity owner = ((ProjectileEntity) entity).getOwner();
|
Entity owner = ((ProjectileEntity) entity).getOwner();
|
||||||
if (owner instanceof ServerPlayerEntity) {
|
if (owner instanceof ServerPlayerEntity) {
|
||||||
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(landedState.getBlock());
|
||||||
|
if (perm != PermissionRegistry.TRAMPLE)
|
||||||
|
return false;
|
||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) entity.world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) entity.world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(landedPosition);
|
IPermissionContainer claim = storage.getForPermissionCheck(landedPosition);
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(landedState.getBlock());
|
|
||||||
if (perm == EnumPermission.TRAMPLE)
|
|
||||||
return !claim.canInteract((ServerPlayerEntity) owner, perm, landedPosition, true);
|
return !claim.canInteract((ServerPlayerEntity) owner, perm, landedPosition, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,7 +173,7 @@ public class BlockInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return false;
|
return false;
|
||||||
return !claim.canInteract((ServerPlayerEntity) entity, EnumPermission.TRAMPLE, pos, true);
|
return !claim.canInteract((ServerPlayerEntity) entity, PermissionRegistry.TRAMPLE, pos, true);
|
||||||
} else if (entity instanceof ProjectileEntity) {
|
} else if (entity instanceof ProjectileEntity) {
|
||||||
Entity owner = ((ProjectileEntity) entity).getOwner();
|
Entity owner = ((ProjectileEntity) entity).getOwner();
|
||||||
if (owner instanceof ServerPlayerEntity) {
|
if (owner instanceof ServerPlayerEntity) {
|
||||||
@ -174,7 +181,7 @@ public class BlockInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return false;
|
return false;
|
||||||
return !claim.canInteract((ServerPlayerEntity) owner, EnumPermission.TRAMPLE, pos, true);
|
return !claim.canInteract((ServerPlayerEntity) owner, PermissionRegistry.TRAMPLE, pos, true);
|
||||||
}
|
}
|
||||||
} else if (entity instanceof ItemEntity) {
|
} else if (entity instanceof ItemEntity) {
|
||||||
Entity owner = serverWorld.getEntity(((ItemEntity) entity).getThrower());
|
Entity owner = serverWorld.getEntity(((ItemEntity) entity).getThrower());
|
||||||
@ -183,7 +190,7 @@ public class BlockInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim == null)
|
if (claim == null)
|
||||||
return false;
|
return false;
|
||||||
return !claim.canInteract((ServerPlayerEntity) owner, EnumPermission.TRAMPLE, pos, true);
|
return !claim.canInteract((ServerPlayerEntity) owner, PermissionRegistry.TRAMPLE, pos, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
package com.flemmli97.flan.event;
|
package com.flemmli97.flan.event;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
import com.flemmli97.flan.claim.BlockToPermissionMap;
|
||||||
import com.flemmli97.flan.claim.ClaimStorage;
|
import com.flemmli97.flan.claim.ClaimStorage;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.IPermissionContainer;
|
import com.flemmli97.flan.claim.IPermissionContainer;
|
||||||
import com.flemmli97.flan.mixin.IPersistentProjectileVars;
|
import com.flemmli97.flan.mixin.IPersistentProjectileVars;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
@ -49,7 +50,7 @@ public class EntityInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null) {
|
if (claim != null) {
|
||||||
if (entity instanceof ArmorStandEntity) {
|
if (entity instanceof ArmorStandEntity) {
|
||||||
if (!claim.canInteract((ServerPlayerEntity) player, EnumPermission.ARMORSTAND, pos, true))
|
if (!claim.canInteract((ServerPlayerEntity) player, PermissionRegistry.ARMORSTAND, pos, true))
|
||||||
return ActionResult.FAIL;
|
return ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -65,22 +66,22 @@ public class EntityInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null) {
|
if (claim != null) {
|
||||||
if (entity instanceof BoatEntity)
|
if (entity instanceof BoatEntity)
|
||||||
return claim.canInteract(player, EnumPermission.BOAT, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.BOAT, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
if (entity instanceof AbstractMinecartEntity) {
|
if (entity instanceof AbstractMinecartEntity) {
|
||||||
if (entity instanceof StorageMinecartEntity)
|
if (entity instanceof StorageMinecartEntity)
|
||||||
return claim.canInteract(player, EnumPermission.OPENCONTAINER, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.OPENCONTAINER, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
return claim.canInteract(player, EnumPermission.MINECART, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.MINECART, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
if (entity instanceof VillagerEntity)
|
if (entity instanceof VillagerEntity)
|
||||||
return claim.canInteract(player, EnumPermission.TRADING, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.TRADING, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
if (entity instanceof ItemFrameEntity)
|
if (entity instanceof ItemFrameEntity)
|
||||||
return claim.canInteract(player, EnumPermission.ITEMFRAMEROTATE, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.ITEMFRAMEROTATE, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
if (entity instanceof TameableEntity) {
|
if (entity instanceof TameableEntity) {
|
||||||
TameableEntity tame = (TameableEntity) entity;
|
TameableEntity tame = (TameableEntity) entity;
|
||||||
if (tame.isOwner(player))
|
if (tame.isOwner(player))
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
}
|
}
|
||||||
return claim.canInteract(player, EnumPermission.ANIMALINTERACT, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.ANIMALINTERACT, pos, true) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
}
|
}
|
||||||
@ -95,10 +96,10 @@ public class EntityInteractEvents {
|
|||||||
BlockHitResult blockRes = (BlockHitResult) res;
|
BlockHitResult blockRes = (BlockHitResult) res;
|
||||||
BlockPos pos = blockRes.getBlockPos();
|
BlockPos pos = blockRes.getBlockPos();
|
||||||
BlockState state = proj.world.getBlockState(pos);
|
BlockState state = proj.world.getBlockState(pos);
|
||||||
EnumPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
ClaimPermission perm = BlockToPermissionMap.getFromBlock(state.getBlock());
|
||||||
if (proj instanceof EnderPearlEntity)
|
if (proj instanceof EnderPearlEntity)
|
||||||
perm = EnumPermission.ENDERPEARL;
|
perm = PermissionRegistry.ENDERPEARL;
|
||||||
if (perm != EnumPermission.ENDERPEARL && perm != EnumPermission.TARGETBLOCK && perm != EnumPermission.PROJECTILES)
|
if (perm != PermissionRegistry.ENDERPEARL && perm != PermissionRegistry.TARGETBLOCK && perm != PermissionRegistry.PROJECTILES)
|
||||||
return false;
|
return false;
|
||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) proj.world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) proj.world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
@ -130,7 +131,7 @@ public class EntityInteractEvents {
|
|||||||
if (proj instanceof EnderPearlEntity) {
|
if (proj instanceof EnderPearlEntity) {
|
||||||
ClaimStorage storage = ClaimStorage.get((ServerWorld) proj.world);
|
ClaimStorage storage = ClaimStorage.get((ServerWorld) proj.world);
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(proj.getBlockPos());
|
IPermissionContainer claim = storage.getForPermissionCheck(proj.getBlockPos());
|
||||||
return claim.canInteract(player, EnumPermission.ENDERPEARL, proj.getBlockPos(), true);
|
return claim.canInteract(player, PermissionRegistry.ENDERPEARL, proj.getBlockPos(), true);
|
||||||
}
|
}
|
||||||
return attackSimple(player, ((EntityHitResult) res).getEntity(), true) != ActionResult.PASS;
|
return attackSimple(player, ((EntityHitResult) res).getEntity(), true) != ActionResult.PASS;
|
||||||
}
|
}
|
||||||
@ -143,7 +144,7 @@ public class EntityInteractEvents {
|
|||||||
return attackSimple((ServerPlayerEntity) source.getAttacker(), entity, false) != ActionResult.PASS;
|
return attackSimple((ServerPlayerEntity) source.getAttacker(), entity, false) != ActionResult.PASS;
|
||||||
else if (source.isExplosive() && !entity.world.isClient) {
|
else if (source.isExplosive() && !entity.world.isClient) {
|
||||||
IPermissionContainer claim = ClaimStorage.get((ServerWorld) entity.world).getForPermissionCheck(entity.getBlockPos());
|
IPermissionContainer claim = ClaimStorage.get((ServerWorld) entity.world).getForPermissionCheck(entity.getBlockPos());
|
||||||
return claim != null && !claim.canInteract(null, EnumPermission.EXPLOSIONS, entity.getBlockPos());
|
return claim != null && !claim.canInteract(null, PermissionRegistry.EXPLOSIONS, entity.getBlockPos());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -159,10 +160,10 @@ public class EntityInteractEvents {
|
|||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null) {
|
if (claim != null) {
|
||||||
if (entity instanceof ArmorStandEntity || entity instanceof MinecartEntity || entity instanceof BoatEntity || entity instanceof ItemFrameEntity)
|
if (entity instanceof ArmorStandEntity || entity instanceof MinecartEntity || entity instanceof BoatEntity || entity instanceof ItemFrameEntity)
|
||||||
return claim.canInteract(player, EnumPermission.BREAKNONLIVING, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.BREAKNONLIVING, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
if (entity instanceof PlayerEntity)
|
if (entity instanceof PlayerEntity)
|
||||||
return claim.canInteract(player, EnumPermission.HURTPLAYER, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.HURTPLAYER, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
return claim.canInteract(player, EnumPermission.HURTANIMAL, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
return claim.canInteract(player, PermissionRegistry.HURTANIMAL, pos, message) ? ActionResult.PASS : ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
}
|
}
|
||||||
@ -173,7 +174,7 @@ public class EntityInteractEvents {
|
|||||||
BlockPos pos = player.getBlockPos();
|
BlockPos pos = player.getBlockPos();
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null)
|
if (claim != null)
|
||||||
return !claim.canInteract((ServerPlayerEntity) player, EnumPermission.XP, pos, false);
|
return !claim.canInteract((ServerPlayerEntity) player, PermissionRegistry.XP, pos, false);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package com.flemmli97.flan.event;
|
package com.flemmli97.flan.event;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.Claim;
|
import com.flemmli97.flan.claim.Claim;
|
||||||
import com.flemmli97.flan.claim.ClaimStorage;
|
import com.flemmli97.flan.claim.ClaimStorage;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.IPermissionContainer;
|
import com.flemmli97.flan.claim.IPermissionContainer;
|
||||||
import com.flemmli97.flan.claim.PermHelper;
|
import com.flemmli97.flan.claim.PermHelper;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
@ -64,9 +64,9 @@ public class ItemInteractEvents {
|
|||||||
if (claim == null)
|
if (claim == null)
|
||||||
return TypedActionResult.pass(stack);
|
return TypedActionResult.pass(stack);
|
||||||
if (stack.getItem() == Items.ENDER_PEARL)
|
if (stack.getItem() == Items.ENDER_PEARL)
|
||||||
return claim.canInteract(player, EnumPermission.ENDERPEARL, pos, true) ? TypedActionResult.pass(stack) : TypedActionResult.fail(stack);
|
return claim.canInteract(player, PermissionRegistry.ENDERPEARL, pos, true) ? TypedActionResult.pass(stack) : TypedActionResult.fail(stack);
|
||||||
if (stack.getItem() instanceof BucketItem)
|
if (stack.getItem() instanceof BucketItem)
|
||||||
return claim.canInteract(player, EnumPermission.BUCKET, pos, true) ? TypedActionResult.pass(stack) : TypedActionResult.fail(stack);
|
return claim.canInteract(player, PermissionRegistry.BUCKET, pos, true) ? TypedActionResult.pass(stack) : TypedActionResult.fail(stack);
|
||||||
return TypedActionResult.pass(stack);
|
return TypedActionResult.pass(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,14 +86,14 @@ public class ItemInteractEvents {
|
|||||||
boolean actualInClaim = !(claim instanceof Claim) || placePos.getY() >= ((Claim) claim).getDimensions()[4];
|
boolean actualInClaim = !(claim instanceof Claim) || placePos.getY() >= ((Claim) claim).getDimensions()[4];
|
||||||
ServerPlayerEntity player = (ServerPlayerEntity) context.getPlayer();
|
ServerPlayerEntity player = (ServerPlayerEntity) context.getPlayer();
|
||||||
if (context.getStack().getItem() == Items.END_CRYSTAL) {
|
if (context.getStack().getItem() == Items.END_CRYSTAL) {
|
||||||
if (claim.canInteract(player, EnumPermission.ENDCRYSTALPLACE, placePos, false))
|
if (claim.canInteract(player, PermissionRegistry.ENDCRYSTALPLACE, placePos, false))
|
||||||
return ActionResult.PASS;
|
return ActionResult.PASS;
|
||||||
else if (actualInClaim) {
|
else if (actualInClaim) {
|
||||||
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true);
|
player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermissionSimple, Formatting.DARK_RED), true);
|
||||||
return ActionResult.FAIL;
|
return ActionResult.FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (claim.canInteract(player, EnumPermission.PLACE, placePos, false)) {
|
if (claim.canInteract(player, PermissionRegistry.PLACE, placePos, false)) {
|
||||||
if (!actualInClaim && context.getStack().getItem() instanceof BlockItem) {
|
if (!actualInClaim && context.getStack().getItem() instanceof BlockItem) {
|
||||||
((Claim) claim).extendDownwards(placePos);
|
((Claim) claim).extendDownwards(placePos);
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ public class ItemInteractEvents {
|
|||||||
return;
|
return;
|
||||||
data.setClaimActionCooldown();
|
data.setClaimActionCooldown();
|
||||||
if (claim != null) {
|
if (claim != null) {
|
||||||
if (claim.canInteract(player, EnumPermission.EDITCLAIM, target)) {
|
if (claim.canInteract(player, PermissionRegistry.EDITCLAIM, target)) {
|
||||||
if (data.getEditMode() == EnumEditMode.SUBCLAIM) {
|
if (data.getEditMode() == EnumEditMode.SUBCLAIM) {
|
||||||
Claim subClaim = claim.getSubClaim(target);
|
Claim subClaim = claim.getSubClaim(target);
|
||||||
if (subClaim != null && data.currentEdit() == null) {
|
if (subClaim != null && data.currentEdit() == null) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.flemmli97.flan.event;
|
package com.flemmli97.flan.event;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.ClaimStorage;
|
import com.flemmli97.flan.claim.ClaimStorage;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.IPermissionContainer;
|
import com.flemmli97.flan.claim.IPermissionContainer;
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.block.piston.PistonBehavior;
|
import net.minecraft.block.piston.PistonBehavior;
|
||||||
@ -20,7 +20,7 @@ public class WorldEvents {
|
|||||||
explosion.getAffectedBlocks().removeIf(pos -> {
|
explosion.getAffectedBlocks().removeIf(pos -> {
|
||||||
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
IPermissionContainer claim = storage.getForPermissionCheck(pos);
|
||||||
if (claim != null)
|
if (claim != null)
|
||||||
return !claim.canInteract(null, EnumPermission.EXPLOSIONS, pos);
|
return !claim.canInteract(null, PermissionRegistry.EXPLOSIONS, pos);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -64,11 +64,11 @@ public class WorldEvents {
|
|||||||
|
|
||||||
public static boolean canStartRaid(ServerPlayerEntity player) {
|
public static boolean canStartRaid(ServerPlayerEntity player) {
|
||||||
IPermissionContainer claim = ClaimStorage.get(player.getServerWorld()).getForPermissionCheck(player.getBlockPos());
|
IPermissionContainer claim = ClaimStorage.get(player.getServerWorld()).getForPermissionCheck(player.getBlockPos());
|
||||||
return claim == null || claim.canInteract(player, EnumPermission.RAID, player.getBlockPos());
|
return claim == null || claim.canInteract(player, PermissionRegistry.RAID, player.getBlockPos());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean canFireSpread(ServerWorld world, BlockPos pos) {
|
public static boolean canFireSpread(ServerWorld world, BlockPos pos) {
|
||||||
IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(pos);
|
IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(pos);
|
||||||
return claim == null || claim.canInteract(null, EnumPermission.FIRESPREAD, pos);
|
return claim == null || claim.canInteract(null, PermissionRegistry.FIRESPREAD, pos);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.flemmli97.flan.gui;
|
package com.flemmli97.flan.gui;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.Claim;
|
import com.flemmli97.flan.claim.Claim;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.PermHelper;
|
import com.flemmli97.flan.claim.PermHelper;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
@ -95,7 +95,7 @@ public class GroupScreenHandler extends ServerOnlyScreenHandler {
|
|||||||
if (index == 3) {
|
if (index == 3) {
|
||||||
player.closeHandledScreen();
|
player.closeHandledScreen();
|
||||||
player.getServer().execute(() -> StringResultScreenHandler.createNewStringResult(player, this.claim, (s) -> {
|
player.getServer().execute(() -> StringResultScreenHandler.createNewStringResult(player, this.claim, (s) -> {
|
||||||
this.claim.editPerms(player, s, EnumPermission.EDITPERMS, -1);
|
this.claim.editPerms(player, s, PermissionRegistry.EDITPERMS, -1);
|
||||||
player.closeHandledScreen();
|
player.closeHandledScreen();
|
||||||
player.getServer().execute(() -> GroupScreenHandler.openGroupMenu(player, this.claim));
|
player.getServer().execute(() -> GroupScreenHandler.openGroupMenu(player, this.claim));
|
||||||
ServerScreenHelper.playSongToPlayer(player, SoundEvents.BLOCK_ANVIL_USE, 1, 1f);
|
ServerScreenHelper.playSongToPlayer(player, SoundEvents.BLOCK_ANVIL_USE, 1, 1f);
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package com.flemmli97.flan.gui;
|
package com.flemmli97.flan.gui;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
|
import com.flemmli97.flan.api.PermissionRegistry;
|
||||||
import com.flemmli97.flan.claim.Claim;
|
import com.flemmli97.flan.claim.Claim;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.PermHelper;
|
import com.flemmli97.flan.claim.PermHelper;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
import net.minecraft.entity.player.PlayerInventory;
|
import net.minecraft.entity.player.PlayerInventory;
|
||||||
import net.minecraft.inventory.Inventory;
|
import net.minecraft.inventory.Inventory;
|
||||||
@ -18,6 +20,8 @@ import net.minecraft.text.Style;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
||||||
|
|
||||||
private final Claim claim;
|
private final Claim claim;
|
||||||
@ -63,6 +67,9 @@ public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void fillInventoryWith(PlayerEntity player, Inventory inv, Object... additionalData) {
|
protected void fillInventoryWith(PlayerEntity player, Inventory inv, Object... additionalData) {
|
||||||
|
List<ClaimPermission> perms = Lists.newArrayList(PermissionRegistry.getPerms());
|
||||||
|
if (this.group != null)
|
||||||
|
perms.removeAll(PermissionRegistry.globalPerms());
|
||||||
for (int i = 0; i < 54; i++) {
|
for (int i = 0; i < 54; i++) {
|
||||||
int page = (int) additionalData[2];
|
int page = (int) additionalData[2];
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
@ -82,31 +89,32 @@ public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
|||||||
else {
|
else {
|
||||||
int row = i / 9 - 1;
|
int row = i / 9 - 1;
|
||||||
int id = (i % 9) + row * 7 - 1 + page * 28;
|
int id = (i % 9) + row * 7 - 1 + page * 28;
|
||||||
int length = EnumPermission.values().length;
|
if (id < perms.size())
|
||||||
if (this.group != null)
|
inv.setStack(i, ServerScreenHelper.fromPermission((Claim) additionalData[0], perms.get(id), additionalData[1] == null ? null : additionalData[1].toString()));
|
||||||
length -= EnumPermission.alwaysGlobalLength();
|
|
||||||
if (id < length)
|
|
||||||
inv.setStack(i, ServerScreenHelper.fromPermission((Claim) additionalData[0], EnumPermission.values()[id], additionalData[1] == null ? null : additionalData[1].toString()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void flipPage() {
|
private void flipPage() {
|
||||||
|
List<ClaimPermission> perms = Lists.newArrayList(PermissionRegistry.getPerms());
|
||||||
|
if (this.group != null)
|
||||||
|
perms.removeAll(PermissionRegistry.globalPerms());
|
||||||
|
int maxPages = perms.size() / 28;
|
||||||
for (int i = 0; i < 54; i++) {
|
for (int i = 0; i < 54; i++) {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
ItemStack close = new ItemStack(Items.TNT);
|
ItemStack close = new ItemStack(Items.TNT);
|
||||||
close.setCustomName(new LiteralText("Back").setStyle(Style.EMPTY.withFormatting(Formatting.DARK_RED)));
|
close.setCustomName(new LiteralText("Back").setStyle(Style.EMPTY.withFormatting(Formatting.DARK_RED)));
|
||||||
this.slots.get(i).setStack(close);
|
this.slots.get(i).setStack(close);
|
||||||
} else if (i == 47) {
|
} else if (i == 47) {
|
||||||
ItemStack stack = ItemStack.EMPTY;
|
ItemStack stack = ServerScreenHelper.emptyFiller();
|
||||||
if (this.page == 1) {
|
if (this.page >= 1) {
|
||||||
stack = new ItemStack(Items.ARROW);
|
stack = new ItemStack(Items.ARROW);
|
||||||
stack.setCustomName(new LiteralText("Prev").setStyle(Style.EMPTY.withFormatting(Formatting.WHITE)));
|
stack.setCustomName(new LiteralText("Prev").setStyle(Style.EMPTY.withFormatting(Formatting.WHITE)));
|
||||||
}
|
}
|
||||||
this.slots.get(i).setStack(stack);
|
this.slots.get(i).setStack(stack);
|
||||||
} else if (i == 51) {
|
} else if (i == 51) {
|
||||||
ItemStack stack = ItemStack.EMPTY;
|
ItemStack stack = ServerScreenHelper.emptyFiller();
|
||||||
if (this.page == 0) {
|
if (this.page < maxPages) {
|
||||||
stack = new ItemStack(Items.ARROW);
|
stack = new ItemStack(Items.ARROW);
|
||||||
stack.setCustomName(new LiteralText("Next").setStyle(Style.EMPTY.withFormatting(Formatting.WHITE)));
|
stack.setCustomName(new LiteralText("Next").setStyle(Style.EMPTY.withFormatting(Formatting.WHITE)));
|
||||||
}
|
}
|
||||||
@ -116,11 +124,8 @@ public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
|||||||
else {
|
else {
|
||||||
int row = i / 9 - 1;
|
int row = i / 9 - 1;
|
||||||
int id = (i % 9) + row * 7 - 1 + this.page * 28;
|
int id = (i % 9) + row * 7 - 1 + this.page * 28;
|
||||||
int length = EnumPermission.values().length;
|
if (id < perms.size()) {
|
||||||
if (this.group != null)
|
this.slots.get(i).setStack(ServerScreenHelper.fromPermission(this.claim, perms.get(id), this.group));
|
||||||
length -= EnumPermission.alwaysGlobalLength();
|
|
||||||
if (id < length) {
|
|
||||||
this.slots.get(i).setStack(ServerScreenHelper.fromPermission(this.claim, EnumPermission.values()[id], this.group));
|
|
||||||
} else
|
} else
|
||||||
this.slots.get(i).setStack(ItemStack.EMPTY);
|
this.slots.get(i).setStack(ItemStack.EMPTY);
|
||||||
}
|
}
|
||||||
@ -153,10 +158,10 @@ public class PermissionScreenHandler extends ServerOnlyScreenHandler {
|
|||||||
}
|
}
|
||||||
ItemStack stack = slot.getStack();
|
ItemStack stack = slot.getStack();
|
||||||
String name = stack.getName().asString();
|
String name = stack.getName().asString();
|
||||||
EnumPermission perm;
|
ClaimPermission perm;
|
||||||
try {
|
try {
|
||||||
perm = EnumPermission.valueOf(name);
|
perm = PermissionRegistry.get(name);
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (NullPointerException e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
boolean success;
|
boolean success;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.flemmli97.flan.gui;
|
package com.flemmli97.flan.gui;
|
||||||
|
|
||||||
|
import com.flemmli97.flan.api.ClaimPermission;
|
||||||
import com.flemmli97.flan.claim.Claim;
|
import com.flemmli97.flan.claim.Claim;
|
||||||
import com.flemmli97.flan.claim.EnumPermission;
|
|
||||||
import com.flemmli97.flan.claim.PermHelper;
|
import com.flemmli97.flan.claim.PermHelper;
|
||||||
import com.flemmli97.flan.config.ConfigHandler;
|
import com.flemmli97.flan.config.ConfigHandler;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@ -17,7 +17,7 @@ import net.minecraft.text.Style;
|
|||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
import net.minecraft.util.Formatting;
|
import net.minecraft.util.Formatting;
|
||||||
|
|
||||||
import java.util.EnumMap;
|
import java.util.Map;
|
||||||
|
|
||||||
public class ServerScreenHelper {
|
public class ServerScreenHelper {
|
||||||
|
|
||||||
@ -27,21 +27,20 @@ public class ServerScreenHelper {
|
|||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ItemStack fromPermission(Claim claim, EnumPermission perm, String group) {
|
public static ItemStack fromPermission(Claim claim, ClaimPermission perm, String group) {
|
||||||
ItemStack stack = perm.getItem();
|
ItemStack stack = perm.getItem();
|
||||||
stack.setCustomName(new LiteralText(perm.toString()).setStyle(Style.EMPTY.withFormatting(Formatting.GOLD)));
|
stack.setCustomName(new LiteralText(perm.id).setStyle(Style.EMPTY.withFormatting(Formatting.GOLD)));
|
||||||
ListTag lore = new ListTag();
|
ListTag lore = new ListTag();
|
||||||
Text trans = new LiteralText(perm.translation).setStyle(Style.EMPTY.withFormatting(Formatting.YELLOW));
|
Text trans = new LiteralText(perm.desc).setStyle(Style.EMPTY.withFormatting(Formatting.YELLOW));
|
||||||
lore.add(StringTag.of(Text.Serializer.toJson(trans)));
|
lore.add(StringTag.of(Text.Serializer.toJson(trans)));
|
||||||
EnumMap<EnumPermission,Boolean> global = ConfigHandler.config.globalDefaultPerms.get(claim.getWorld().getRegistryKey().getValue().toString());
|
Map<ClaimPermission, Boolean> global = ConfigHandler.config.globalDefaultPerms.get(claim.getWorld().getRegistryKey().getValue().toString());
|
||||||
if (!claim.isAdminClaim() && global != null && global.containsKey(perm)) {
|
if (!claim.isAdminClaim() && global != null && global.containsKey(perm)) {
|
||||||
Text text = new LiteralText("Non Editable.").setStyle(Style.EMPTY.withFormatting(Formatting.DARK_RED));
|
Text text = new LiteralText("Non Editable.").setStyle(Style.EMPTY.withFormatting(Formatting.DARK_RED));
|
||||||
lore.add(StringTag.of(Text.Serializer.toJson(text)));
|
lore.add(StringTag.of(Text.Serializer.toJson(text)));
|
||||||
String permFlag = global.get(perm).toString();
|
String permFlag = global.get(perm).toString();
|
||||||
Text text2 = new LiteralText("Enabled: " + permFlag).setStyle(Style.EMPTY.withFormatting(permFlag.equals("true") ? Formatting.GREEN : Formatting.RED));
|
Text text2 = new LiteralText("Enabled: " + permFlag).setStyle(Style.EMPTY.withFormatting(permFlag.equals("true") ? Formatting.GREEN : Formatting.RED));
|
||||||
lore.add(StringTag.of(Text.Serializer.toJson(text2)));
|
lore.add(StringTag.of(Text.Serializer.toJson(text2)));
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
String permFlag;
|
String permFlag;
|
||||||
if (group == null) {
|
if (group == null) {
|
||||||
if (claim.parentClaim() == null)
|
if (claim.parentClaim() == null)
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
package com.flemmli97.flan.permission;
|
|
||||||
|
|
||||||
import com.flemmli97.flan.claim.Claim;
|
|
||||||
import net.minecraft.entity.player.PlayerEntity;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
|
|
||||||
import java.util.function.Supplier;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unused. might expand on this idea later
|
|
||||||
*/
|
|
||||||
public class ClaimPermission {
|
|
||||||
|
|
||||||
public interface ClaimTest{
|
|
||||||
boolean test(Claim claim, PlayerEntity player, BlockPos pos, PermissionFlag flag);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final ClaimTest alwaysTrue = (claim, player, pos, flag)->true;
|
|
||||||
|
|
||||||
public enum PermissionFlag{
|
|
||||||
YES,
|
|
||||||
NO,
|
|
||||||
PASS
|
|
||||||
}
|
|
||||||
|
|
||||||
private final Supplier<ItemStack> guiItem;
|
|
||||||
public String desc;
|
|
||||||
public final ClaimTest test;
|
|
||||||
public final String id;
|
|
||||||
|
|
||||||
public ClaimPermission(String id, Supplier<ItemStack> guiItem, String defaultDescription){
|
|
||||||
this(id, guiItem, defaultDescription, alwaysTrue);
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClaimPermission(String id, Supplier<ItemStack> guiItem, String defaultDescription, ClaimTest test){
|
|
||||||
this.id = id;
|
|
||||||
this.guiItem = guiItem;
|
|
||||||
this.desc = defaultDescription;
|
|
||||||
this.test = test;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack getItem(){
|
|
||||||
return this.guiItem.get();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user