fix ftbranks fallback

This commit is contained in:
Flemmli97 2021-07-30 19:56:12 +02:00
parent f372579bfc
commit 57e03502de
11 changed files with 40 additions and 28 deletions

View File

@ -1,6 +1,8 @@
Flan 1.6.1 Flan 1.6.1
====================== ======================
- Better performance - Improve performance
- Support for Money and Sign Shops currency (forge)
- Fix unusable admin cmd with FTBRanks if its not defined in Ranks
Flan 1.6.0 Flan 1.6.0
====================== ======================

View File

@ -6,6 +6,7 @@ import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.EntityType; import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import java.nio.file.Path; import java.nio.file.Path;
@ -41,4 +42,8 @@ public class CrossPlatformStuff {
throw new AssertionError(); throw new AssertionError();
} }
@ExpectPlatform
public static boolean blockDataContains(CompoundTag nbt, String tag) {
throw new AssertionError();
}
} }

View File

@ -40,7 +40,8 @@ public class Config {
); );
public List<String> blockEntityTagIgnore = Lists.newArrayList( public List<String> blockEntityTagIgnore = Lists.newArrayList(
"IsDeathChest", //vanilla death chest "IsDeathChest", //vanilla death chest
"gunpowder.owner" //gunpowder "gunpowder.owner", //gunpowder
"shop-activated" //dicemc-money
); );
public List<String> entityTagIgnore = Lists.newArrayList( public List<String> entityTagIgnore = Lists.newArrayList(
"graves.marker" //vanilla tweaks "graves.marker" //vanilla tweaks

View File

@ -120,10 +120,14 @@ public class BlockInteractEvents {
} }
public static boolean alwaysAllowBlock(Identifier id, BlockEntity blockEntity) { public static boolean alwaysAllowBlock(Identifier id, BlockEntity blockEntity) {
return ConfigHandler.config.ignoredBlocks.contains(id.getNamespace()) if (ConfigHandler.config.ignoredBlocks.contains(id.getNamespace())
|| ConfigHandler.config.ignoredBlocks.contains(id.toString()) || ConfigHandler.config.ignoredBlocks.contains(id.toString()))
|| (blockEntity != null return true;
&& ConfigHandler.config.blockEntityTagIgnore.stream().anyMatch(blockEntity.toTag(new CompoundTag())::contains)); if (blockEntity != null) {
CompoundTag nbt = blockEntity.toTag(new CompoundTag());
return ConfigHandler.config.blockEntityTagIgnore.stream().anyMatch(tag -> CrossPlatformStuff.blockDataContains(nbt, tag));
}
return false;
} }
public static boolean cancelEntityBlockCollision(BlockState state, World world, BlockPos pos, Entity entity) { public static boolean cancelEntityBlockCollision(BlockState state, World world, BlockPos pos, Entity entity) {

View File

@ -61,7 +61,7 @@ public class PermissionNodeHandler {
} }
@ExpectPlatform @ExpectPlatform
public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val, int fallback) {
throw new AssertionError(); throw new AssertionError();
} }
} }

View File

@ -104,7 +104,7 @@ public class PlayerClaimData implements IPlayerData {
} }
private boolean canIncrease(int blocks) { private boolean canIncrease(int blocks) {
return blocks <= ConfigHandler.config.maxClaimBlocks || PermissionNodeHandler.permBelowEqVal(this.player, PermissionNodeHandler.permClaimBlocks, blocks); return PermissionNodeHandler.permBelowEqVal(this.player, PermissionNodeHandler.permClaimBlocks, blocks, ConfigHandler.config.maxClaimBlocks);
} }
@Override @Override

View File

@ -10,6 +10,7 @@ import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.inventory.Inventory; import net.minecraft.inventory.Inventory;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry; import net.minecraft.util.registry.Registry;
@ -48,4 +49,8 @@ public class CrossPlatformStuffImpl {
public static boolean isInventoryTile(BlockEntity blockEntity) { public static boolean isInventoryTile(BlockEntity blockEntity) {
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider; return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider;
} }
public static boolean blockDataContains(CompoundTag nbt, String tag) {
return nbt.contains(tag);
}
} }

View File

@ -17,9 +17,7 @@ public class PermissionNodeHandlerImpl {
} }
if (Flan.ftbRanks && src.getEntity() instanceof ServerPlayerEntity) { if (Flan.ftbRanks && src.getEntity() instanceof ServerPlayerEntity) {
ServerPlayerEntity player = (ServerPlayerEntity) src.getEntity(); ServerPlayerEntity player = (ServerPlayerEntity) src.getEntity();
if (adminCmd) return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissionLevel(ConfigHandler.config.permissionLevel));
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrTrue();
} }
return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel);
} }
@ -31,18 +29,16 @@ public class PermissionNodeHandlerImpl {
return Permissions.check(src, perm, true); return Permissions.check(src, perm, true);
} }
if (Flan.ftbRanks) { if (Flan.ftbRanks) {
if (adminCmd) return FTBRanksAPI.getPermissionValue(src, perm).asBoolean().orElse(!adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel));
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrTrue();
} }
return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel);
} }
public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val, int fallback) {
if (Flan.ftbRanks) { if (Flan.ftbRanks) {
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(0); int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback);
return val <= max; return val <= max;
} }
return false; return val <= fallback;
} }
} }

View File

@ -9,6 +9,7 @@ import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.inventory.Inventory; import net.minecraft.inventory.Inventory;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import net.minecraftforge.fml.loading.FMLPaths; import net.minecraftforge.fml.loading.FMLPaths;
import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
@ -40,4 +41,8 @@ public class CrossPlatformStuffImpl {
public static boolean isInventoryTile(BlockEntity blockEntity) { public static boolean isInventoryTile(BlockEntity blockEntity) {
return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent(); return blockEntity instanceof Inventory || blockEntity instanceof InventoryProvider || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent();
} }
public static boolean blockDataContains(CompoundTag nbt, String tag) {
return nbt.contains(tag) || nbt.getCompound("ForgeData").contains(tag);
}
} }

View File

@ -5,7 +5,6 @@ import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException;
import dicemc.money.MoneyMod; import dicemc.money.MoneyMod;
import dicemc.money.api.MoneyManager;
import dicemc.money.storage.MoneyWSD; import dicemc.money.storage.MoneyWSD;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.claim.PermHelper;
@ -13,7 +12,6 @@ import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.util.Formatting; import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.util.UUID; import java.util.UUID;

View File

@ -12,24 +12,20 @@ public class PermissionNodeHandlerImpl {
if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayerEntity)) if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayerEntity))
return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel);
ServerPlayerEntity player = (ServerPlayerEntity) src.getEntity(); ServerPlayerEntity player = (ServerPlayerEntity) src.getEntity();
if (adminCmd) return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissionLevel(ConfigHandler.config.permissionLevel));
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrTrue();
} }
public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) { public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) {
if (!Flan.ftbRanks) if (!Flan.ftbRanks)
return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel);
if (adminCmd) return FTBRanksAPI.getPermissionValue(src, perm).asBoolean().orElse(!adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel));
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrTrue();
} }
public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val, int fallback) {
if (Flan.ftbRanks) { if (Flan.ftbRanks) {
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(0); int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback);
return val <= max; return val <= max;
} }
return false; return val <= fallback;
} }
} }