diff --git a/Changelog.txt b/Changelog.txt index 9dabd24..3854fb1 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -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 ====================== diff --git a/common/src/main/java/io/github/flemmli97/flan/CrossPlatformStuff.java b/common/src/main/java/io/github/flemmli97/flan/CrossPlatformStuff.java index 7730e2f..a469bbb 100644 --- a/common/src/main/java/io/github/flemmli97/flan/CrossPlatformStuff.java +++ b/common/src/main/java/io/github/flemmli97/flan/CrossPlatformStuff.java @@ -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(); + } } diff --git a/common/src/main/java/io/github/flemmli97/flan/config/Config.java b/common/src/main/java/io/github/flemmli97/flan/config/Config.java index a88e7d6..025ce09 100644 --- a/common/src/main/java/io/github/flemmli97/flan/config/Config.java +++ b/common/src/main/java/io/github/flemmli97/flan/config/Config.java @@ -40,7 +40,8 @@ public class Config { ); public List blockEntityTagIgnore = Lists.newArrayList( "IsDeathChest", //vanilla death chest - "gunpowder.owner" //gunpowder + "gunpowder.owner", //gunpowder + "shop-activated" //dicemc-money ); public List entityTagIgnore = Lists.newArrayList( "graves.marker" //vanilla tweaks diff --git a/common/src/main/java/io/github/flemmli97/flan/event/BlockInteractEvents.java b/common/src/main/java/io/github/flemmli97/flan/event/BlockInteractEvents.java index d80aaa8..77ec80a 100644 --- a/common/src/main/java/io/github/flemmli97/flan/event/BlockInteractEvents.java +++ b/common/src/main/java/io/github/flemmli97/flan/event/BlockInteractEvents.java @@ -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) { diff --git a/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java b/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java index 4d785aa..7d8adf8 100644 --- a/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java +++ b/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java @@ -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(); } } \ No newline at end of file diff --git a/common/src/main/java/io/github/flemmli97/flan/player/PlayerClaimData.java b/common/src/main/java/io/github/flemmli97/flan/player/PlayerClaimData.java index 59c6090..6402bec 100644 --- a/common/src/main/java/io/github/flemmli97/flan/player/PlayerClaimData.java +++ b/common/src/main/java/io/github/flemmli97/flan/player/PlayerClaimData.java @@ -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 diff --git a/fabric/src/main/java/io/github/flemmli97/flan/fabric/CrossPlatformStuffImpl.java b/fabric/src/main/java/io/github/flemmli97/flan/fabric/CrossPlatformStuffImpl.java index d4ce159..8d70370 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/fabric/CrossPlatformStuffImpl.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/fabric/CrossPlatformStuffImpl.java @@ -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); + } } diff --git a/fabric/src/main/java/io/github/flemmli97/flan/integration/permissions/fabric/PermissionNodeHandlerImpl.java b/fabric/src/main/java/io/github/flemmli97/flan/integration/permissions/fabric/PermissionNodeHandlerImpl.java index 283def6..a7ea631 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/integration/permissions/fabric/PermissionNodeHandlerImpl.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/integration/permissions/fabric/PermissionNodeHandlerImpl.java @@ -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; } } diff --git a/forge/src/main/java/io/github/flemmli97/flan/forge/CrossPlatformStuffImpl.java b/forge/src/main/java/io/github/flemmli97/flan/forge/CrossPlatformStuffImpl.java index 4afb7ed..86ae096 100644 --- a/forge/src/main/java/io/github/flemmli97/flan/forge/CrossPlatformStuffImpl.java +++ b/forge/src/main/java/io/github/flemmli97/flan/forge/CrossPlatformStuffImpl.java @@ -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); + } } diff --git a/forge/src/main/java/io/github/flemmli97/flan/integration/currency/forge/CommandCurrencyImpl.java b/forge/src/main/java/io/github/flemmli97/flan/integration/currency/forge/CommandCurrencyImpl.java index a909744..e39922e 100644 --- a/forge/src/main/java/io/github/flemmli97/flan/integration/currency/forge/CommandCurrencyImpl.java +++ b/forge/src/main/java/io/github/flemmli97/flan/integration/currency/forge/CommandCurrencyImpl.java @@ -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; diff --git a/forge/src/main/java/io/github/flemmli97/flan/integration/permissions/forge/PermissionNodeHandlerImpl.java b/forge/src/main/java/io/github/flemmli97/flan/integration/permissions/forge/PermissionNodeHandlerImpl.java index 953e709..7b17d75 100644 --- a/forge/src/main/java/io/github/flemmli97/flan/integration/permissions/forge/PermissionNodeHandlerImpl.java +++ b/forge/src/main/java/io/github/flemmli97/flan/integration/permissions/forge/PermissionNodeHandlerImpl.java @@ -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; } }