diff --git a/Changelog.txt b/Changelog.txt index 8405a23..69227d7 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -2,7 +2,12 @@ Flan 1.6.0 ====================== - Separate some stuff to make it more api like and to make it into an api jar. Breaks compat with any potential mods using the previous system. - +- Add ignoredEntities config to always ignore certain entities. + Like grave mods that add the graves as an entity (e.g. corpse mod). + Add the corpse entity from that mod to default list +- Add modid support for ignoredBlocks and ignoredEntities. + Use a modid to affect all things from that mod +- Add FTBRanks support. Permission Nodes are the same Flan 1.5.4 ====================== diff --git a/common/src/main/java/io/github/flemmli97/flan/Flan.java b/common/src/main/java/io/github/flemmli97/flan/Flan.java index 714d619..6d9ccbf 100644 --- a/common/src/main/java/io/github/flemmli97/flan/Flan.java +++ b/common/src/main/java/io/github/flemmli97/flan/Flan.java @@ -12,7 +12,7 @@ public class Flan { public static final Logger logger = LogManager.getLogger("flan"); - public static boolean permissionAPI, gunpowder, playerAbilityLib; + public static boolean permissionAPI, gunpowder, playerAbilityLib, ftbRanks; public static final DateTimeFormatter onlineTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); diff --git a/common/src/main/java/io/github/flemmli97/flan/commands/CommandClaim.java b/common/src/main/java/io/github/flemmli97/flan/commands/CommandClaim.java index 1d03ba9..766cd47 100644 --- a/common/src/main/java/io/github/flemmli97/flan/commands/CommandClaim.java +++ b/common/src/main/java/io/github/flemmli97/flan/commands/CommandClaim.java @@ -19,7 +19,7 @@ import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.gui.ClaimMenuScreenHandler; import io.github.flemmli97.flan.gui.PersonalGroupScreenHandler; import io.github.flemmli97.flan.integration.gunpowder.CommandCurrency; -import io.github.flemmli97.flan.integration.permissionapi.CommandPermission; +import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumEditMode; import io.github.flemmli97.flan.player.OfflinePlayerData; @@ -48,39 +48,39 @@ public class CommandClaim { public static void register(CommandDispatcher dispatcher, boolean dedicated) { LiteralArgumentBuilder builder = CommandManager.literal("flan") - .then(CommandManager.literal("reload").requires(src -> CommandPermission.perm(src, CommandPermission.cmdReload, true)).executes(CommandClaim::reloadConfig)) - .then(CommandManager.literal("addClaim").requires(src -> CommandPermission.perm(src, CommandPermission.claimCreate)).then(CommandManager.argument("from", BlockPosArgumentType.blockPos()).then(CommandManager.argument("to", BlockPosArgumentType.blockPos()).executes(CommandClaim::addClaim)))) - .then(CommandManager.literal("menu").requires(src -> CommandPermission.perm(src, CommandPermission.cmdMenu)).executes(CommandClaim::openMenu)) - .then(CommandManager.literal("setHome").requires(src -> CommandPermission.perm(src, CommandPermission.cmdHome)).executes(CommandClaim::setClaimHome)) - .then(CommandManager.literal("trapped").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTrapped)).executes(CommandClaim::trapped)) - .then(CommandManager.literal("name").requires(src -> CommandPermission.perm(src, CommandPermission.cmdName)).then(CommandManager.argument("name", StringArgumentType.string()).executes(CommandClaim::nameClaim))) + .then(CommandManager.literal("reload").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdReload, true)).executes(CommandClaim::reloadConfig)) + .then(CommandManager.literal("addClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.claimCreate)).then(CommandManager.argument("from", BlockPosArgumentType.blockPos()).then(CommandManager.argument("to", BlockPosArgumentType.blockPos()).executes(CommandClaim::addClaim)))) + .then(CommandManager.literal("menu").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdMenu)).executes(CommandClaim::openMenu)) + .then(CommandManager.literal("setHome").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdHome)).executes(CommandClaim::setClaimHome)) + .then(CommandManager.literal("trapped").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTrapped)).executes(CommandClaim::trapped)) + .then(CommandManager.literal("name").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdName)).then(CommandManager.argument("name", StringArgumentType.string()).executes(CommandClaim::nameClaim))) .then(CommandManager.literal("unlockDrops").executes(CommandClaim::unlockDrops) - .then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()).requires(src -> CommandPermission.perm(src, CommandPermission.cmdUnlockAll, true)).executes(CommandClaim::unlockDropsPlayers))) - .then(CommandManager.literal("personalGroups").requires(src -> CommandPermission.perm(src, CommandPermission.cmdPGroup)).executes(CommandClaim::openPersonalGroups)) - .then(CommandManager.literal("claimInfo").requires(src -> CommandPermission.perm(src, CommandPermission.cmdInfo)).executes(ctx -> CommandClaim.claimInfo(ctx, Claim.InfoType.ALL)) + .then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()).requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdUnlockAll, true)).executes(CommandClaim::unlockDropsPlayers))) + .then(CommandManager.literal("personalGroups").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdPGroup)).executes(CommandClaim::openPersonalGroups)) + .then(CommandManager.literal("claimInfo").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdInfo)).executes(ctx -> CommandClaim.claimInfo(ctx, Claim.InfoType.ALL)) .then(CommandManager.argument("type", StringArgumentType.word()).suggests((src, b) -> CommandHelpers.enumSuggestion(Claim.InfoType.class, b)).executes(CommandClaim::claimInfo))) - .then(CommandManager.literal("transferClaim").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTransfer)).then(CommandManager.argument("player", GameProfileArgumentType.gameProfile()).executes(CommandClaim::transferClaim))) - .then(CommandManager.literal("delete").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTransfer)).executes(CommandClaim::deleteClaim)) - .then(CommandManager.literal("deleteAll").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTransfer)).executes(CommandClaim::deleteAllClaim)) - .then(CommandManager.literal("deleteSubClaim").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTransfer)).executes(CommandClaim::deleteSubClaim)) - .then(CommandManager.literal("deleteAllSubClaims").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTransfer)).executes(CommandClaim::deleteAllSubClaim)) - .then(CommandManager.literal("list").requires(src -> CommandPermission.perm(src, CommandPermission.cmdList)).executes(CommandClaim::listClaims).then(CommandManager.argument("player", GameProfileArgumentType.gameProfile()).requires(src -> CommandPermission.perm(src, CommandPermission.cmdListAll, true)) + .then(CommandManager.literal("transferClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).then(CommandManager.argument("player", GameProfileArgumentType.gameProfile()).executes(CommandClaim::transferClaim))) + .then(CommandManager.literal("delete").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteClaim)) + .then(CommandManager.literal("deleteAll").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllClaim)) + .then(CommandManager.literal("deleteSubClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteSubClaim)) + .then(CommandManager.literal("deleteAllSubClaims").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllSubClaim)) + .then(CommandManager.literal("list").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdList)).executes(CommandClaim::listClaims).then(CommandManager.argument("player", GameProfileArgumentType.gameProfile()).requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdListAll, true)) .executes(cmd -> listClaims(cmd, GameProfileArgumentType.getProfileArgument(cmd, "player"))))) - .then(CommandManager.literal("switchMode").requires(src -> CommandPermission.perm(src, CommandPermission.cmdClaimMode)).executes(CommandClaim::switchClaimMode)) - .then(CommandManager.literal("adminMode").requires(src -> CommandPermission.perm(src, CommandPermission.cmdAdminMode, true)).executes(CommandClaim::switchAdminMode)) - .then(CommandManager.literal("readGriefPrevention").requires(src -> CommandPermission.perm(src, CommandPermission.cmdGriefPrevention, true)).executes(CommandClaim::readGriefPreventionData)) - .then(CommandManager.literal("setAdminClaim").requires(src -> CommandPermission.perm(src, CommandPermission.cmdAdminSet, true)).then(CommandManager.argument("toggle", BoolArgumentType.bool()).executes(CommandClaim::toggleAdminClaim))) - .then(CommandManager.literal("listAdminClaims").requires(src -> CommandPermission.perm(src, CommandPermission.cmdAdminList, true)).executes(CommandClaim::listAdminClaims)) - .then(CommandManager.literal("adminDelete").requires(src -> CommandPermission.perm(src, CommandPermission.cmdAdminDelete, true)).executes(CommandClaim::adminDelete) + .then(CommandManager.literal("switchMode").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdClaimMode)).executes(CommandClaim::switchClaimMode)) + .then(CommandManager.literal("adminMode").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminMode, true)).executes(CommandClaim::switchAdminMode)) + .then(CommandManager.literal("readGriefPrevention").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdGriefPrevention, true)).executes(CommandClaim::readGriefPreventionData)) + .then(CommandManager.literal("setAdminClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminSet, true)).then(CommandManager.argument("toggle", BoolArgumentType.bool()).executes(CommandClaim::toggleAdminClaim))) + .then(CommandManager.literal("listAdminClaims").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminList, true)).executes(CommandClaim::listAdminClaims)) + .then(CommandManager.literal("adminDelete").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminDelete, true)).executes(CommandClaim::adminDelete) .then(CommandManager.literal("all").then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()) .executes(CommandClaim::adminDeleteAll)))) - .then(CommandManager.literal("giveClaimBlocks").requires(src -> CommandPermission.perm(src, CommandPermission.cmdAdminGive, true)).then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()) + .then(CommandManager.literal("giveClaimBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminGive, true)).then(CommandManager.argument("players", GameProfileArgumentType.gameProfile()) .then(CommandManager.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::giveClaimBlocks)))) - .then(CommandManager.literal("buyBlocks").requires(src -> CommandPermission.perm(src, CommandPermission.cmdBuy, false)) + .then(CommandManager.literal("buyBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdBuy, false)) .then(CommandManager.argument("amount", IntegerArgumentType.integer()).executes(CommandCurrency::buyClaimBlocks))) - .then(CommandManager.literal("sellBlocks").requires(src -> CommandPermission.perm(src, CommandPermission.cmdSell, false)) + .then(CommandManager.literal("sellBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdSell, false)) .then(CommandManager.argument("amount", IntegerArgumentType.integer()).executes(CommandCurrency::sellClaimBlocks))) - .then(CommandManager.literal("group").requires(src -> CommandPermission.perm(src, CommandPermission.cmdGroup)) + .then(CommandManager.literal("group").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdGroup)) .then(CommandManager.literal("add").then(CommandManager.argument("group", StringArgumentType.string()).executes(CommandClaim::addGroup))) .then(CommandManager.literal("remove").then(CommandManager.argument("group", StringArgumentType.string()) .suggests(CommandHelpers::groupSuggestion).executes(CommandClaim::removeGroup))) @@ -100,14 +100,14 @@ public class CommandClaim { } return CommandSource.suggestMatching(list, build); }).executes(CommandClaim::removePlayer)))))) - .then(CommandManager.literal("teleport").requires(src -> CommandPermission.perm(src, CommandPermission.cmdTeleport)) + .then(CommandManager.literal("teleport").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTeleport)) .then(CommandManager.literal("self").then(CommandManager.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, ctx.getSource().getPlayer().getUuid())) .executes(CommandClaim::teleport))) .then(CommandManager.literal("admin").then(CommandManager.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, null)) .executes(CommandClaim::teleportAdminClaims))) .then(CommandManager.literal("other").then(CommandManager.argument("player", GameProfileArgumentType.gameProfile()).then(CommandManager.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, CommandHelpers.singleProfile(ctx, "player").getId())) .executes(src -> CommandClaim.teleport(src, CommandHelpers.singleProfile(src, "player").getId())))))) - .then(CommandManager.literal("permission").requires(src -> CommandPermission.perm(src, CommandPermission.cmdPermission)) + .then(CommandManager.literal("permission").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdPermission)) .then(CommandManager.literal("personal").then(CommandManager.argument("group", StringArgumentType.string()).suggests(CommandHelpers::personalGroupSuggestion) .then(CommandManager.argument("permission", StringArgumentType.word()).suggests((ctx, b) -> CommandHelpers.permSuggestions(ctx, b, true)) .then(CommandManager.argument("toggle", StringArgumentType.word()) @@ -164,7 +164,7 @@ public class CommandClaim { } if (!enoughBlocks) { player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.ownerTransferNoBlocks, Formatting.RED), false); - if (CommandPermission.perm(context.getSource(), CommandPermission.cmdAdminMode, true)) + if (PermissionNodeHandler.perm(context.getSource(), PermissionNodeHandler.cmdAdminMode, true)) player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.ownerTransferNoBlocksAdmin, Formatting.RED), false); return 0; } diff --git a/common/src/main/java/io/github/flemmli97/flan/event/ItemInteractEvents.java b/common/src/main/java/io/github/flemmli97/flan/event/ItemInteractEvents.java index 5b509fc..b3f867a 100644 --- a/common/src/main/java/io/github/flemmli97/flan/event/ItemInteractEvents.java +++ b/common/src/main/java/io/github/flemmli97/flan/event/ItemInteractEvents.java @@ -10,7 +10,7 @@ import io.github.flemmli97.flan.claim.Claim; import io.github.flemmli97.flan.claim.ClaimStorage; import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.config.ConfigHandler; -import io.github.flemmli97.flan.integration.permissionapi.CommandPermission; +import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.mixin.IItemAccessor; import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumEditMode; @@ -151,7 +151,7 @@ public class ItemInteractEvents { } public static void claimLandHandling(ServerPlayerEntity player, BlockPos target) { - if (!CommandPermission.perm(player, CommandPermission.claimCreate, false)) { + if (!PermissionNodeHandler.perm(player, PermissionNodeHandler.claimCreate, false)) { player.sendMessage(PermHelper.simpleColoredText(ConfigHandler.lang.noPermission, Formatting.DARK_RED), true); return; } diff --git a/common/src/main/java/io/github/flemmli97/flan/integration/permissionapi/CommandPermission.java b/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java similarity index 81% rename from common/src/main/java/io/github/flemmli97/flan/integration/permissionapi/CommandPermission.java rename to common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java index 9401730..4d785aa 100644 --- a/common/src/main/java/io/github/flemmli97/flan/integration/permissionapi/CommandPermission.java +++ b/common/src/main/java/io/github/flemmli97/flan/integration/permissions/PermissionNodeHandler.java @@ -1,10 +1,10 @@ -package io.github.flemmli97.flan.integration.permissionapi; +package io.github.flemmli97.flan.integration.permissions; import me.shedaniel.architectury.annotations.ExpectPlatform; -import net.minecraft.command.CommandSource; +import net.minecraft.server.command.ServerCommandSource; import net.minecraft.server.network.ServerPlayerEntity; -public class CommandPermission { +public class PermissionNodeHandler { public static final String cmdReload = "flan.command.reload"; public static final String cmdGriefPrevention = "flan.command.read.griefprevention"; @@ -44,12 +44,14 @@ public class CommandPermission { public static final String cmdHome = "flan.command.home"; public static final String cmdTeleport = "flan.command.teleport"; - public static boolean perm(CommandSource src, String perm) { + public static final String permClaimBlocks = "flan.claim.blocks.max"; + + public static boolean perm(ServerCommandSource src, String perm) { return perm(src, perm, false); } @ExpectPlatform - public static boolean perm(CommandSource src, String perm, boolean adminCmd) { + public static boolean perm(ServerCommandSource src, String perm, boolean adminCmd) { throw new AssertionError(); } @@ -57,4 +59,9 @@ public class CommandPermission { public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) { throw new AssertionError(); } + + @ExpectPlatform + public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { + 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 7c3b45b..5db7af4 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 @@ -12,6 +12,7 @@ import io.github.flemmli97.flan.claim.ParticleIndicators; import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.event.EntityInteractEvents; +import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import net.minecraft.block.BlockState; import net.minecraft.network.packet.s2c.play.ParticleS2CPacket; @@ -91,10 +92,15 @@ public class PlayerClaimData implements IPlayerData { } public boolean addClaimBlocks(int amount) { - if (this.claimBlocks + amount > ConfigHandler.config.maxClaimBlocks) - return false; - this.setClaimBlocks(this.claimBlocks + amount); - return true; + if (this.canIncrease(this.claimBlocks + amount)) { + this.setClaimBlocks(this.claimBlocks + amount); + return true; + } + return false; + } + + private boolean canIncrease(int blocks) { + return blocks <= ConfigHandler.config.maxClaimBlocks || PermissionNodeHandler.permBelowEqVal(this.player, PermissionNodeHandler.permClaimBlocks, blocks); } @Override diff --git a/common/src/main/java/io/github/flemmli97/flan/scoreboard/ClaimCriterias.java b/common/src/main/java/io/github/flemmli97/flan/scoreboard/ClaimCriterias.java index f792f08..1f8c76d 100644 --- a/common/src/main/java/io/github/flemmli97/flan/scoreboard/ClaimCriterias.java +++ b/common/src/main/java/io/github/flemmli97/flan/scoreboard/ClaimCriterias.java @@ -12,6 +12,10 @@ public class ClaimCriterias { public static ScoreboardCriterion FREE = create("flan:free_claimblocks", true, ScoreboardCriterion.RenderType.INTEGER); public static ScoreboardCriterion CLAIMS = create("flan:claim_number", true, ScoreboardCriterion.RenderType.INTEGER); + public static void init() { + + } + /** * Just reflection cause its only called once during init */ diff --git a/fabric/build.gradle b/fabric/build.gradle index a3bdd82..53fa1d7 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -33,6 +33,10 @@ repositories { name = "HavenKing" url = "https://hephaestus.dev/release" } + maven { + name = "FTB" + url = "https://maven.saps.dev/minecraft" + } } dependencies { @@ -57,6 +61,8 @@ dependencies { shadowCommon(project(path: ":common", configuration: "transformProductionFabric")) { transitive = false } + + modImplementation("dev.ftb.mods:ftb-ranks-fabric:1605.1.2-build.17") } processResources { @@ -101,7 +107,7 @@ task apiJar(type: Jar, dependsOn: classes) { rename("fabric.mod_api.json", "fabric.mod.json") } -task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask){ +task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask) { archiveClassifier.set "fabric-api" input.set apiJar.archiveFile addNestedDependencies = false diff --git a/fabric/src/main/java/io/github/flemmli97/flan/FlanFabric.java b/fabric/src/main/java/io/github/flemmli97/flan/FlanFabric.java index 8951702..e1a1176 100644 --- a/fabric/src/main/java/io/github/flemmli97/flan/FlanFabric.java +++ b/fabric/src/main/java/io/github/flemmli97/flan/FlanFabric.java @@ -7,6 +7,7 @@ import io.github.flemmli97.flan.event.BlockInteractEvents; import io.github.flemmli97.flan.event.EntityInteractEvents; import io.github.flemmli97.flan.event.ItemInteractEvents; import io.github.flemmli97.flan.integration.playerability.PlayerAbilityEvents; +import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; @@ -34,8 +35,10 @@ public class FlanFabric implements ModInitializer { Flan.permissionAPI = FabricLoader.getInstance().isModLoaded("fabric-permissions-api-v0"); Flan.gunpowder = FabricLoader.getInstance().isModLoaded("gunpowder-currency"); Flan.playerAbilityLib = FabricLoader.getInstance().isModLoaded("playerabilitylib"); + Flan.ftbRanks = FabricLoader.getInstance().isModLoaded("ftbranks"); if (Flan.playerAbilityLib) PlayerAbilityEvents.register(); + ClaimCriterias.init(); } public static void serverLoad(MinecraftServer server) { diff --git a/fabric/src/main/java/io/github/flemmli97/flan/integration/permissionapi/fabric/CommandPermissionImpl.java b/fabric/src/main/java/io/github/flemmli97/flan/integration/permissionapi/fabric/CommandPermissionImpl.java deleted file mode 100644 index b6a1245..0000000 --- a/fabric/src/main/java/io/github/flemmli97/flan/integration/permissionapi/fabric/CommandPermissionImpl.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.github.flemmli97.flan.integration.permissionapi.fabric; - -import io.github.flemmli97.flan.Flan; -import io.github.flemmli97.flan.config.ConfigHandler; -import me.lucko.fabric.api.permissions.v0.Permissions; -import net.minecraft.command.CommandSource; -import net.minecraft.server.network.ServerPlayerEntity; - -public class CommandPermissionImpl { - - public static boolean perm(CommandSource src, String perm, boolean adminCmd) { - if (!Flan.permissionAPI) - return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); - if (adminCmd) - return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); - return Permissions.check(src, perm, true); - } - - public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) { - if (!Flan.permissionAPI) - return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); - if (adminCmd) - return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); - return Permissions.check(src, perm, true); - } -} 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 new file mode 100644 index 0000000..283def6 --- /dev/null +++ b/fabric/src/main/java/io/github/flemmli97/flan/integration/permissions/fabric/PermissionNodeHandlerImpl.java @@ -0,0 +1,48 @@ +package io.github.flemmli97.flan.integration.permissions.fabric; + +import dev.ftb.mods.ftbranks.api.FTBRanksAPI; +import io.github.flemmli97.flan.Flan; +import io.github.flemmli97.flan.config.ConfigHandler; +import me.lucko.fabric.api.permissions.v0.Permissions; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayerEntity; + +public class PermissionNodeHandlerImpl { + + public static boolean perm(ServerCommandSource src, String perm, boolean adminCmd) { + if (Flan.permissionAPI) { + if (adminCmd) + return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); + return Permissions.check(src, perm, true); + } + 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 !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); + } + + public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) { + if (Flan.permissionAPI) { + if (adminCmd) + return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); + return Permissions.check(src, perm, true); + } + if (Flan.ftbRanks) { + if (adminCmd) + return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrFalse(); + return FTBRanksAPI.getPermissionValue(src, perm).asBooleanOrTrue(); + } + return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); + } + + public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { + if (Flan.ftbRanks) { + int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(0); + return val <= max; + } + return false; + } +} diff --git a/forge/build.gradle b/forge/build.gradle index d8ebcb0..fd29b3b 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -16,6 +16,14 @@ loom { useFabricMixin = true } +repositories { + mavenCentral() + maven { + name = "FTB" + url = "https://maven.saps.dev/minecraft" + } +} + dependencies { forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}" @@ -28,6 +36,8 @@ dependencies { shadowCommon(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } + + modImplementation("dev.ftb.mods:ftb-ranks-forge:1605.1.2-build.17") } processResources { @@ -73,7 +83,7 @@ task apiJar(type: Jar, dependsOn: classes) { include "io/github/flemmli97/flan/api/**" } -task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask){ +task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask) { archiveClassifier.set "forge-api" input.set apiJar.archiveFile addNestedDependencies = false diff --git a/forge/src/main/java/io/github/flemmli97/flan/FlanForge.java b/forge/src/main/java/io/github/flemmli97/flan/FlanForge.java index 4b211a9..c76fb24 100644 --- a/forge/src/main/java/io/github/flemmli97/flan/FlanForge.java +++ b/forge/src/main/java/io/github/flemmli97/flan/FlanForge.java @@ -5,8 +5,10 @@ import io.github.flemmli97.flan.forgeevent.EntityInteractEventsForge; import io.github.flemmli97.flan.forgeevent.ItemInteractEventsForge; import io.github.flemmli97.flan.forgeevent.ServerEvents; import io.github.flemmli97.flan.forgeevent.WorldEventsForge; +import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; @Mod(FlanForge.MODID) @@ -15,6 +17,8 @@ public class FlanForge { public static final String MODID = "flan"; public FlanForge() { + Flan.ftbRanks = ModList.get().isLoaded("ftbranks"); + IEventBus forge = MinecraftForge.EVENT_BUS; forge.addListener(WorldEventsForge::modifyExplosion); forge.addListener(WorldEventsForge::pistonCanPush); @@ -34,5 +38,7 @@ public class FlanForge { forge.addListener(ServerEvents::serverStart); forge.addListener(ServerEvents::commands); + + ClaimCriterias.init(); } } diff --git a/forge/src/main/java/io/github/flemmli97/flan/integration/permissionapi/forge/CommandPermissionImpl.java b/forge/src/main/java/io/github/flemmli97/flan/integration/permissionapi/forge/CommandPermissionImpl.java deleted file mode 100644 index e0152f5..0000000 --- a/forge/src/main/java/io/github/flemmli97/flan/integration/permissionapi/forge/CommandPermissionImpl.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.github.flemmli97.flan.integration.permissionapi.forge; - -import io.github.flemmli97.flan.config.ConfigHandler; -import net.minecraft.command.CommandSource; -import net.minecraft.server.network.ServerPlayerEntity; - -public class CommandPermissionImpl { - - public static boolean perm(CommandSource src, String perm, boolean adminCmd) { - return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); - } - - public static boolean perm(ServerPlayerEntity src, String perm, boolean adminCmd) { - return !adminCmd || src.hasPermissionLevel(ConfigHandler.config.permissionLevel); - } -} 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 new file mode 100644 index 0000000..953e709 --- /dev/null +++ b/forge/src/main/java/io/github/flemmli97/flan/integration/permissions/forge/PermissionNodeHandlerImpl.java @@ -0,0 +1,35 @@ +package io.github.flemmli97.flan.integration.permissions.forge; + +import dev.ftb.mods.ftbranks.api.FTBRanksAPI; +import io.github.flemmli97.flan.Flan; +import io.github.flemmli97.flan.config.ConfigHandler; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.server.network.ServerPlayerEntity; + +public class PermissionNodeHandlerImpl { + + public static boolean perm(ServerCommandSource src, String perm, boolean adminCmd) { + 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(); + } + + 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(); + } + + public static boolean permBelowEqVal(ServerPlayerEntity src, String perm, int val) { + if (Flan.ftbRanks) { + int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(0); + return val <= max; + } + return false; + } +} diff --git a/gradle.properties b/gradle.properties index 6026ac0..9457356 100644 --- a/gradle.properties +++ b/gradle.properties @@ -18,6 +18,7 @@ gunpowder_version=0.5.7+1.16.5 gunpowder_currency_version=1.0.2+gunpowder.0.3.7.mc.1.16.5 fabric_permissions_api=0.1-SNAPSHOT player_ability_lib=1.2.2 +ftb_ranks=1605.1.2-build.17 # Curse properties curse_page_fabric=https://www.curseforge.com/minecraft/mc-mods/flan curse_versions=1.16.5, Java 8