add ftbranks support

This commit is contained in:
Flemmli97 2021-07-21 00:27:08 +02:00
parent 73d944799c
commit a6098c02f8
16 changed files with 175 additions and 86 deletions

View File

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

View File

@ -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");

View File

@ -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<ServerCommandSource> dispatcher, boolean dedicated) {
LiteralArgumentBuilder<ServerCommandSource> 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;
}

View File

@ -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;
}

View File

@ -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();
}
}

View File

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

View File

@ -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
*/

View File

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

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

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

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

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