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
======================
- 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
======================

View File

@ -6,6 +6,7 @@ import net.minecraft.block.entity.BlockEntity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import java.nio.file.Path;
@ -41,4 +42,8 @@ public class CrossPlatformStuff {
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(
"IsDeathChest", //vanilla death chest
"gunpowder.owner" //gunpowder
"gunpowder.owner", //gunpowder
"shop-activated" //dicemc-money
);
public List<String> entityTagIgnore = Lists.newArrayList(
"graves.marker" //vanilla tweaks

View File

@ -120,10 +120,14 @@ public class BlockInteractEvents {
}
public static boolean alwaysAllowBlock(Identifier id, BlockEntity blockEntity) {
return ConfigHandler.config.ignoredBlocks.contains(id.getNamespace())
|| ConfigHandler.config.ignoredBlocks.contains(id.toString())
|| (blockEntity != null
&& ConfigHandler.config.blockEntityTagIgnore.stream().anyMatch(blockEntity.toTag(new CompoundTag())::contains));
if (ConfigHandler.config.ignoredBlocks.contains(id.getNamespace())
|| ConfigHandler.config.ignoredBlocks.contains(id.toString()))
return true;
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) {

View File

@ -61,7 +61,7 @@ public class PermissionNodeHandler {
}
@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();
}
}

View File

@ -104,7 +104,7 @@ public class PlayerClaimData implements IPlayerData {
}
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

View File

@ -10,6 +10,7 @@ import net.minecraft.entity.EntityType;
import net.minecraft.entity.effect.StatusEffect;
import net.minecraft.inventory.Inventory;
import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
@ -48,4 +49,8 @@ public class CrossPlatformStuffImpl {
public static boolean isInventoryTile(BlockEntity blockEntity) {
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) {
ServerPlayerEntity player = (ServerPlayerEntity) src.getEntity();
if (adminCmd)
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(player, perm).asBooleanOrTrue();
return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissionLevel(ConfigHandler.config.permissionLevel));
}
return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel);
}
@ -31,18 +29,16 @@ public class PermissionNodeHandlerImpl {
return Permissions.check(src, perm, true);
}
if (Flan.ftbRanks) {
if (adminCmd)
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrFalse();
return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrTrue();
return FTBRanksAPI.getPermissionValue(src, perm).asBoolean().orElse(!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) {
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(0);
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback);
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.inventory.Inventory;
import net.minecraft.item.Item;
import net.minecraft.nbt.CompoundTag;
import net.minecraftforge.fml.loading.FMLPaths;
import net.minecraftforge.items.CapabilityItemHandler;
import net.minecraftforge.registries.ForgeRegistries;
@ -40,4 +41,8 @@ public class CrossPlatformStuffImpl {
public static boolean isInventoryTile(BlockEntity blockEntity) {
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.exceptions.CommandSyntaxException;
import dicemc.money.MoneyMod;
import dicemc.money.api.MoneyManager;
import dicemc.money.storage.MoneyWSD;
import io.github.flemmli97.flan.Flan;
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 net.minecraft.server.command.ServerCommandSource;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import java.util.UUID;

View File

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