remove @ExpectedPlatform for an arch independent implementation

This commit is contained in:
Flemmli97 2022-02-18 19:11:51 +01:00
parent 81b2fa9b9b
commit 87c878f9ee
36 changed files with 302 additions and 245 deletions

View File

@ -1,49 +0,0 @@
package io.github.flemmli97.flan;
import dev.architectury.injectables.annotations.ExpectPlatform;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import java.nio.file.Path;
public class CrossPlatformStuff {
@ExpectPlatform
public static Path configPath() {
throw new AssertionError();
}
@ExpectPlatform
public static SimpleRegistryWrapper<MobEffect> registryStatusEffects() {
throw new AssertionError();
}
@ExpectPlatform
public static SimpleRegistryWrapper<Block> registryBlocks() {
throw new AssertionError();
}
@ExpectPlatform
public static SimpleRegistryWrapper<Item> registryItems() {
throw new AssertionError();
}
@ExpectPlatform
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() {
throw new AssertionError();
}
@ExpectPlatform
public static boolean isInventoryTile(BlockEntity blockEntity) {
throw new AssertionError();
}
@ExpectPlatform
public static boolean blockDataContains(CompoundTag nbt, String tag) {
throw new AssertionError();
}
}

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.api.permission; package io.github.flemmli97.flan.api.permission;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
@ -56,10 +56,10 @@ public class ObjectToPermissionMap {
public static void reload(MinecraftServer server) { public static void reload(MinecraftServer server) {
blockToPermission.clear(); blockToPermission.clear();
itemToPermission.clear(); itemToPermission.clear();
for (Block block : CrossPlatformStuff.registryBlocks().getIterator()) { for (Block block : CrossPlatformStuff.instance().registryBlocks().getIterator()) {
blockPermissionBuilder.entrySet().stream().filter(e -> e.getKey().test(block)).map(Map.Entry::getValue).findFirst().ifPresent(sub -> blockToPermission.put(block, sub.get())); blockPermissionBuilder.entrySet().stream().filter(e -> e.getKey().test(block)).map(Map.Entry::getValue).findFirst().ifPresent(sub -> blockToPermission.put(block, sub.get()));
} }
for (Item item : CrossPlatformStuff.registryItems().getIterator()) { for (Item item : CrossPlatformStuff.instance().registryItems().getIterator()) {
itemPermissionBuilder.entrySet().stream().filter(e -> e.getKey().test(item)).map(Map.Entry::getValue).findFirst().ifPresent(sub -> itemToPermission.put(item, sub.get())); itemPermissionBuilder.entrySet().stream().filter(e -> e.getKey().test(item)).map(Map.Entry::getValue).findFirst().ifPresent(sub -> itemToPermission.put(item, sub.get()));
} }
for (String s : ConfigHandler.config.itemPermission) { for (String s : ConfigHandler.config.itemPermission) {
@ -77,9 +77,9 @@ public class ObjectToPermissionMap {
} }
} else { } else {
if (remove) if (remove)
itemToPermission.remove(CrossPlatformStuff.registryItems().getFromId(new ResourceLocation(sub[0]))); itemToPermission.remove(CrossPlatformStuff.instance().registryItems().getFromId(new ResourceLocation(sub[0])));
else else
itemToPermission.put(CrossPlatformStuff.registryItems().getFromId(new ResourceLocation(sub[0])), PermissionRegistry.get(sub[1])); itemToPermission.put(CrossPlatformStuff.instance().registryItems().getFromId(new ResourceLocation(sub[0])), PermissionRegistry.get(sub[1]));
} }
} }
for (String s : ConfigHandler.config.blockPermission) { for (String s : ConfigHandler.config.blockPermission) {
@ -96,9 +96,9 @@ public class ObjectToPermissionMap {
}); });
} else { } else {
if (remove) if (remove)
blockToPermission.remove(CrossPlatformStuff.registryBlocks().getFromId(new ResourceLocation(sub[0]))); blockToPermission.remove(CrossPlatformStuff.instance().registryBlocks().getFromId(new ResourceLocation(sub[0])));
else else
blockToPermission.put(CrossPlatformStuff.registryBlocks().getFromId(new ResourceLocation(sub[0])), PermissionRegistry.get(sub[1])); blockToPermission.put(CrossPlatformStuff.instance().registryBlocks().getFromId(new ResourceLocation(sub[0])), PermissionRegistry.get(sub[1]));
} }
} }
} }

View File

@ -6,13 +6,14 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.data.IPermissionContainer; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.config.Config; import io.github.flemmli97.flan.config.Config;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.ClaimPermissionCheck;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import io.github.flemmli97.flan.player.LogoutTracker; import io.github.flemmli97.flan.player.LogoutTracker;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
@ -267,7 +268,7 @@ public class Claim implements IPermissionContainer {
perm = PermissionRegistry.FAKEPLAYER; perm = PermissionRegistry.FAKEPLAYER;
} }
} }
InteractionResult res = ClaimPermissionCheck.check(player, perm, pos); InteractionResult res = ClaimPermissionCheck.instance().check(player, perm, pos);
if (res != InteractionResult.PASS) if (res != InteractionResult.PASS)
return res != InteractionResult.FAIL; return res != InteractionResult.FAIL;
if (perm != null) { if (perm != null) {
@ -633,7 +634,7 @@ public class Claim implements IPermissionContainer {
else else
this.leaveSubtitle = null; this.leaveSubtitle = null;
JsonObject potion = ConfigHandler.fromJson(obj, "Potions"); JsonObject potion = ConfigHandler.fromJson(obj, "Potions");
potion.entrySet().forEach(e -> this.potions.put(CrossPlatformStuff.registryStatusEffects().getFromId(new ResourceLocation(e.getKey())), e.getValue().getAsInt())); potion.entrySet().forEach(e -> this.potions.put(CrossPlatformStuff.instance().registryStatusEffects().getFromId(new ResourceLocation(e.getKey())), e.getValue().getAsInt()));
if (ConfigHandler.fromJson(obj, "AdminClaim", false)) if (ConfigHandler.fromJson(obj, "AdminClaim", false))
this.owner = null; this.owner = null;
else else
@ -703,7 +704,7 @@ public class Claim implements IPermissionContainer {
obj.addProperty("LeaveTitle", this.leaveTitle == null ? "" : Component.Serializer.toJson(this.leaveTitle)); obj.addProperty("LeaveTitle", this.leaveTitle == null ? "" : Component.Serializer.toJson(this.leaveTitle));
obj.addProperty("LeaveSubtitle", this.leaveSubtitle == null ? "" : Component.Serializer.toJson(this.leaveSubtitle)); obj.addProperty("LeaveSubtitle", this.leaveSubtitle == null ? "" : Component.Serializer.toJson(this.leaveSubtitle));
JsonObject potions = new JsonObject(); JsonObject potions = new JsonObject();
this.potions.forEach((effect, amp) -> potions.addProperty(CrossPlatformStuff.registryStatusEffects().getIDFrom(effect).toString(), amp)); this.potions.forEach((effect, amp) -> potions.addProperty(CrossPlatformStuff.instance().registryStatusEffects().getIDFrom(effect).toString(), amp));
obj.add("Potions", potions); obj.add("Potions", potions);
if (this.parent != null) if (this.parent != null)
obj.addProperty("Parent", this.parent.toString()); obj.addProperty("Parent", this.parent.toString());

View File

@ -1,15 +0,0 @@
package io.github.flemmli97.flan.claim;
import dev.architectury.injectables.annotations.ExpectPlatform;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult;
public class ClaimPermissionCheck {
@ExpectPlatform
public static InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos) {
throw new AssertionError();
}
}

View File

@ -14,7 +14,7 @@ import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;
import io.github.flemmli97.flan.player.EnumEditMode; import io.github.flemmli97.flan.player.EnumEditMode;
import io.github.flemmli97.flan.player.OfflinePlayerData; import io.github.flemmli97.flan.player.OfflinePlayerData;
@ -90,7 +90,7 @@ public class ClaimStorage implements IPermissionStorage {
player.displayClientMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.langManager.get("minClaimSize"), ConfigHandler.config.minClaimsize), ChatFormatting.RED), false); player.displayClientMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.langManager.get("minClaimSize"), ConfigHandler.config.minClaimsize), ChatFormatting.RED), false);
return false; return false;
} }
if (!data.isAdminIgnoreClaim() && ConfigHandler.config.maxClaims != -1 && !PermissionNodeHandler.permBelowEqVal(player, PermissionNodeHandler.permMaxClaims, this.playerClaimMap.getOrDefault(player.getUUID(), Sets.newHashSet()).size() + 1, ConfigHandler.config.maxClaims)) { if (!data.isAdminIgnoreClaim() && ConfigHandler.config.maxClaims != -1 && !PermissionNodeHandler.instance().permBelowEqVal(player, PermissionNodeHandler.permMaxClaims, this.playerClaimMap.getOrDefault(player.getUUID(), Sets.newHashSet()).size() + 1, ConfigHandler.config.maxClaims)) {
player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("maxClaims"), ChatFormatting.RED), false); player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("maxClaims"), ChatFormatting.RED), false);
return false; return false;
} }

View File

@ -18,7 +18,7 @@ import io.github.flemmli97.flan.claim.PermHelper;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.gui.ClaimMenuScreenHandler; import io.github.flemmli97.flan.gui.ClaimMenuScreenHandler;
import io.github.flemmli97.flan.gui.PersonalGroupScreenHandler; import io.github.flemmli97.flan.gui.PersonalGroupScreenHandler;
import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;
import io.github.flemmli97.flan.player.EnumEditMode; import io.github.flemmli97.flan.player.EnumEditMode;
import io.github.flemmli97.flan.player.OfflinePlayerData; import io.github.flemmli97.flan.player.OfflinePlayerData;
@ -52,46 +52,46 @@ public class CommandClaim {
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean dedicated) { public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean dedicated) {
LiteralArgumentBuilder<CommandSourceStack> builder = Commands.literal("flan") LiteralArgumentBuilder<CommandSourceStack> builder = Commands.literal("flan")
.then(Commands.literal("reload").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdReload, true)).executes(CommandClaim::reloadConfig)) .then(Commands.literal("reload").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdReload, true)).executes(CommandClaim::reloadConfig))
.then(Commands.literal("addClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.claimCreate)) .then(Commands.literal("addClaim").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.claimCreate))
.then(Commands.argument("from", BlockPosArgument.blockPos()).then(Commands.argument("to", BlockPosArgument.blockPos()).executes(CommandClaim::addClaim))) .then(Commands.argument("from", BlockPosArgument.blockPos()).then(Commands.argument("to", BlockPosArgument.blockPos()).executes(CommandClaim::addClaim)))
.then(Commands.literal("all").executes(CommandClaim::addClaimAll)) .then(Commands.literal("all").executes(CommandClaim::addClaimAll))
.then(Commands.literal("rect").then(Commands.argument("x", IntegerArgumentType.integer()).then(Commands.argument("z", IntegerArgumentType.integer()).executes(ctx -> CommandClaim.addClaimRect(ctx, IntegerArgumentType.getInteger(ctx, "x"), IntegerArgumentType.getInteger(ctx, "z"))))))) .then(Commands.literal("rect").then(Commands.argument("x", IntegerArgumentType.integer()).then(Commands.argument("z", IntegerArgumentType.integer()).executes(ctx -> CommandClaim.addClaimRect(ctx, IntegerArgumentType.getInteger(ctx, "x"), IntegerArgumentType.getInteger(ctx, "z")))))))
.then(Commands.literal("menu").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdMenu)).executes(CommandClaim::openMenu)) .then(Commands.literal("menu").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdMenu)).executes(CommandClaim::openMenu))
.then(Commands.literal("setHome").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdHome)).executes(CommandClaim::setClaimHome)) .then(Commands.literal("setHome").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdHome)).executes(CommandClaim::setClaimHome))
.then(Commands.literal("trapped").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTrapped)).executes(CommandClaim::trapped)) .then(Commands.literal("trapped").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTrapped)).executes(CommandClaim::trapped))
.then(Commands.literal("name").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdName)).then(Commands.argument("name", StringArgumentType.string()).executes(CommandClaim::nameClaim))) .then(Commands.literal("name").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdName)).then(Commands.argument("name", StringArgumentType.string()).executes(CommandClaim::nameClaim)))
.then(Commands.literal("unlockDrops").executes(CommandClaim::unlockDrops) .then(Commands.literal("unlockDrops").executes(CommandClaim::unlockDrops)
.then(Commands.argument("players", GameProfileArgument.gameProfile()).requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdUnlockAll, true)).executes(CommandClaim::unlockDropsPlayers))) .then(Commands.argument("players", GameProfileArgument.gameProfile()).requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdUnlockAll, true)).executes(CommandClaim::unlockDropsPlayers)))
.then(Commands.literal("personalGroups").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdPGroup)).executes(CommandClaim::openPersonalGroups)) .then(Commands.literal("personalGroups").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdPGroup)).executes(CommandClaim::openPersonalGroups))
.then(Commands.literal("claimInfo").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdInfo)).executes(ctx -> CommandClaim.claimInfo(ctx, Claim.InfoType.ALL)) .then(Commands.literal("claimInfo").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdInfo)).executes(ctx -> CommandClaim.claimInfo(ctx, Claim.InfoType.ALL))
.then(Commands.argument("type", StringArgumentType.word()).suggests((src, b) -> CommandHelpers.enumSuggestion(Claim.InfoType.class, b)).executes(CommandClaim::claimInfo))) .then(Commands.argument("type", StringArgumentType.word()).suggests((src, b) -> CommandHelpers.enumSuggestion(Claim.InfoType.class, b)).executes(CommandClaim::claimInfo)))
.then(Commands.literal("transferClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).then(Commands.argument("player", GameProfileArgument.gameProfile()).executes(CommandClaim::transferClaim))) .then(Commands.literal("transferClaim").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTransfer)).then(Commands.argument("player", GameProfileArgument.gameProfile()).executes(CommandClaim::transferClaim)))
.then(Commands.literal("delete").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteClaim)) .then(Commands.literal("delete").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteClaim))
.then(Commands.literal("deleteAll").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllClaim)) .then(Commands.literal("deleteAll").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllClaim))
.then(Commands.literal("deleteSubClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteSubClaim)) .then(Commands.literal("deleteSubClaim").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteSubClaim))
.then(Commands.literal("deleteAllSubClaims").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllSubClaim)) .then(Commands.literal("deleteAllSubClaims").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTransfer)).executes(CommandClaim::deleteAllSubClaim))
.then(Commands.literal("list").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdList)).executes(CommandClaim::listClaims).then(Commands.argument("player", GameProfileArgument.gameProfile()).requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdListAll, true)) .then(Commands.literal("list").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdList)).executes(CommandClaim::listClaims).then(Commands.argument("player", GameProfileArgument.gameProfile()).requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdListAll, true))
.executes(cmd -> listClaims(cmd, GameProfileArgument.getGameProfiles(cmd, "player"))))) .executes(cmd -> listClaims(cmd, GameProfileArgument.getGameProfiles(cmd, "player")))))
.then(Commands.literal("switchMode").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdClaimMode)).executes(CommandClaim::switchClaimMode)) .then(Commands.literal("switchMode").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdClaimMode)).executes(CommandClaim::switchClaimMode))
.then(Commands.literal("adminMode").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminMode, true)).executes(CommandClaim::switchAdminMode)) .then(Commands.literal("adminMode").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdAdminMode, true)).executes(CommandClaim::switchAdminMode))
.then(Commands.literal("readGriefPrevention").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdGriefPrevention, true)).executes(CommandClaim::readGriefPreventionData)) .then(Commands.literal("readGriefPrevention").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdGriefPrevention, true)).executes(CommandClaim::readGriefPreventionData))
.then(Commands.literal("setAdminClaim").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminSet, true)).then(Commands.argument("toggle", BoolArgumentType.bool()).executes(CommandClaim::toggleAdminClaim))) .then(Commands.literal("setAdminClaim").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdAdminSet, true)).then(Commands.argument("toggle", BoolArgumentType.bool()).executes(CommandClaim::toggleAdminClaim)))
.then(Commands.literal("listAdminClaims").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminList, true)).executes(CommandClaim::listAdminClaims)) .then(Commands.literal("listAdminClaims").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdAdminList, true)).executes(CommandClaim::listAdminClaims))
.then(Commands.literal("adminDelete").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminDelete, true)).executes(CommandClaim::adminDelete) .then(Commands.literal("adminDelete").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdAdminDelete, true)).executes(CommandClaim::adminDelete)
.then(Commands.literal("all").then(Commands.argument("players", GameProfileArgument.gameProfile()) .then(Commands.literal("all").then(Commands.argument("players", GameProfileArgument.gameProfile())
.executes(CommandClaim::adminDeleteAll)))) .executes(CommandClaim::adminDeleteAll))))
.then(Commands.literal("giveClaimBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdAdminGive, true)).then(Commands.argument("players", GameProfileArgument.gameProfile()) .then(Commands.literal("giveClaimBlocks").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdAdminGive, true)).then(Commands.argument("players", GameProfileArgument.gameProfile())
.then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::giveClaimBlocks)))) .then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::giveClaimBlocks))))
.then(Commands.literal("buyBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdBuy, false)) .then(Commands.literal("buyBlocks").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdBuy, false))
.then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::buyClaimBlocks))) .then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::buyClaimBlocks)))
.then(Commands.literal("sellBlocks").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdSell, false)) .then(Commands.literal("sellBlocks").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdSell, false))
.then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::sellClaimBlocks))) .then(Commands.argument("amount", IntegerArgumentType.integer()).executes(CommandClaim::sellClaimBlocks)))
.then(Commands.literal("claimMessage").then(Commands.argument("type", StringArgumentType.word()).suggests((ctx, b) -> SharedSuggestionProvider.suggest(new String[]{"enter", "leave"}, b)) .then(Commands.literal("claimMessage").then(Commands.argument("type", StringArgumentType.word()).suggests((ctx, b) -> SharedSuggestionProvider.suggest(new String[]{"enter", "leave"}, b))
.then(Commands.argument("title", StringArgumentType.word()).suggests((ctx, b) -> SharedSuggestionProvider.suggest(new String[]{"title", "subtitle"}, b)) .then(Commands.argument("title", StringArgumentType.word()).suggests((ctx, b) -> SharedSuggestionProvider.suggest(new String[]{"title", "subtitle"}, b))
.then(Commands.literal("text").then(Commands.argument("component", ComponentArgument.textComponent()).executes(ctx -> CommandClaim.editClaimMessages(ctx, ComponentArgument.getComponent(ctx, "component"))))) .then(Commands.literal("text").then(Commands.argument("component", ComponentArgument.textComponent()).executes(ctx -> CommandClaim.editClaimMessages(ctx, ComponentArgument.getComponent(ctx, "component")))))
.then(Commands.literal("string").then(Commands.argument("message", StringArgumentType.string()).executes(CommandClaim::editClaimMessages)))))) .then(Commands.literal("string").then(Commands.argument("message", StringArgumentType.string()).executes(CommandClaim::editClaimMessages))))))
.then(Commands.literal("group").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdGroup)) .then(Commands.literal("group").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdGroup))
.then(Commands.literal("add").then(Commands.argument("group", StringArgumentType.string()).executes(CommandClaim::addGroup))) .then(Commands.literal("add").then(Commands.argument("group", StringArgumentType.string()).executes(CommandClaim::addGroup)))
.then(Commands.literal("remove").then(Commands.argument("group", StringArgumentType.string()) .then(Commands.literal("remove").then(Commands.argument("group", StringArgumentType.string())
.suggests(CommandHelpers::groupSuggestion).executes(CommandClaim::removeGroup))) .suggests(CommandHelpers::groupSuggestion).executes(CommandClaim::removeGroup)))
@ -111,14 +111,14 @@ public class CommandClaim {
} }
return SharedSuggestionProvider.suggest(list, build); return SharedSuggestionProvider.suggest(list, build);
}).executes(CommandClaim::removePlayer)))))) }).executes(CommandClaim::removePlayer))))))
.then(Commands.literal("teleport").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdTeleport)) .then(Commands.literal("teleport").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdTeleport))
.then(Commands.literal("self").then(Commands.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, ctx.getSource().getPlayerOrException().getUUID())) .then(Commands.literal("self").then(Commands.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, ctx.getSource().getPlayerOrException().getUUID()))
.executes(CommandClaim::teleport))) .executes(CommandClaim::teleport)))
.then(Commands.literal("admin").then(Commands.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, null)) .then(Commands.literal("admin").then(Commands.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, null))
.executes(CommandClaim::teleportAdminClaims))) .executes(CommandClaim::teleportAdminClaims)))
.then(Commands.literal("other").then(Commands.argument("player", GameProfileArgument.gameProfile()).then(Commands.argument("claim", StringArgumentType.string()).suggests((ctx, b) -> CommandHelpers.claimSuggestions(ctx, b, CommandHelpers.singleProfile(ctx, "player").getId())) .then(Commands.literal("other").then(Commands.argument("player", GameProfileArgument.gameProfile()).then(Commands.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())))))) .executes(src -> CommandClaim.teleport(src, CommandHelpers.singleProfile(src, "player").getId()))))))
.then(Commands.literal("permission").requires(src -> PermissionNodeHandler.perm(src, PermissionNodeHandler.cmdPermission)) .then(Commands.literal("permission").requires(src -> PermissionNodeHandler.instance().perm(src, PermissionNodeHandler.cmdPermission))
.then(Commands.literal("personal").then(Commands.argument("group", StringArgumentType.string()).suggests(CommandHelpers::personalGroupSuggestion) .then(Commands.literal("personal").then(Commands.argument("group", StringArgumentType.string()).suggests(CommandHelpers::personalGroupSuggestion)
.then(Commands.argument("permission", StringArgumentType.word()).suggests((ctx, b) -> CommandHelpers.permSuggestions(ctx, b, true)) .then(Commands.argument("permission", StringArgumentType.word()).suggests((ctx, b) -> CommandHelpers.permSuggestions(ctx, b, true))
.then(Commands.argument("toggle", StringArgumentType.word()) .then(Commands.argument("toggle", StringArgumentType.word())
@ -194,7 +194,7 @@ public class CommandClaim {
} }
if (!enoughBlocks) { if (!enoughBlocks) {
player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("ownerTransferNoBlocks"), ChatFormatting.RED), false); player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("ownerTransferNoBlocks"), ChatFormatting.RED), false);
if (PermissionNodeHandler.perm(context.getSource(), PermissionNodeHandler.cmdAdminMode, true)) if (PermissionNodeHandler.instance().perm(context.getSource(), PermissionNodeHandler.cmdAdminMode, true))
player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("ownerTransferNoBlocksAdmin"), ChatFormatting.RED), false); player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("ownerTransferNoBlocksAdmin"), ChatFormatting.RED), false);
return 0; return 0;
} }

View File

@ -3,7 +3,7 @@ package io.github.flemmli97.flan.config;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParseException; import com.google.gson.JsonParseException;
import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.claim.PermHelper;
import io.github.flemmli97.flan.integration.currency.CommandCurrency; import io.github.flemmli97.flan.platform.integration.currency.CommandCurrency;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
@ -44,7 +44,7 @@ public class BuySellHandler {
} }
switch (this.buyType) { switch (this.buyType) {
case MONEY -> { case MONEY -> {
return CommandCurrency.buyClaimBlocks(player, blocks, this.buyAmount, message); return CommandCurrency.instance().buyClaimBlocks(player, blocks, this.buyAmount, message);
} }
case ITEM -> { case ITEM -> {
int deduct = Mth.ceil(blocks * this.buyAmount); int deduct = Mth.ceil(blocks * this.buyAmount);
@ -111,7 +111,7 @@ public class BuySellHandler {
} }
switch (this.sellType) { switch (this.sellType) {
case MONEY -> { case MONEY -> {
return CommandCurrency.sellClaimBlocks(player, blocks, this.sellAmount, message); return CommandCurrency.instance().sellClaimBlocks(player, blocks, this.sellAmount, message);
} }
case ITEM -> { case ITEM -> {
ItemStack[] stacks = this.ingredient.getItems(); ItemStack[] stacks = this.ingredient.getItems();

View File

@ -3,10 +3,10 @@ package io.github.flemmli97.flan.config;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;
@ -124,7 +124,7 @@ public class Config {
}))); })));
public Config(MinecraftServer server) { public Config(MinecraftServer server) {
File configDir = CrossPlatformStuff.configPath().resolve("flan").toFile(); File configDir = CrossPlatformStuff.instance().configPath().resolve("flan").toFile();
try { try {
if (!configDir.exists()) if (!configDir.exists())
configDir.mkdirs(); configDir.mkdirs();
@ -162,9 +162,9 @@ public class Config {
this.worldWhitelist = ConfigHandler.fromJson(obj, "worldWhitelist", this.worldWhitelist); this.worldWhitelist = ConfigHandler.fromJson(obj, "worldWhitelist", this.worldWhitelist);
if (obj.has("claimingItem")) if (obj.has("claimingItem"))
this.claimingItem = CrossPlatformStuff.registryItems().getFromId(new ResourceLocation((obj.get("claimingItem").getAsString()))); this.claimingItem = CrossPlatformStuff.instance().registryItems().getFromId(new ResourceLocation((obj.get("claimingItem").getAsString())));
if (obj.has("inspectionItem")) if (obj.has("inspectionItem"))
this.inspectionItem = CrossPlatformStuff.registryItems().getFromId(new ResourceLocation((obj.get("inspectionItem").getAsString()))); this.inspectionItem = CrossPlatformStuff.instance().registryItems().getFromId(new ResourceLocation((obj.get("inspectionItem").getAsString())));
this.claimDisplayTime = ConfigHandler.fromJson(obj, "claimDisplayTime", this.claimDisplayTime); this.claimDisplayTime = ConfigHandler.fromJson(obj, "claimDisplayTime", this.claimDisplayTime);
this.permissionLevel = ConfigHandler.fromJson(obj, "permissionLevel", this.permissionLevel); this.permissionLevel = ConfigHandler.fromJson(obj, "permissionLevel", this.permissionLevel);
@ -259,8 +259,8 @@ public class Config {
obj.add("blacklistedWorlds", arr); obj.add("blacklistedWorlds", arr);
obj.addProperty("worldWhitelist", this.worldWhitelist); obj.addProperty("worldWhitelist", this.worldWhitelist);
obj.addProperty("claimingItem", CrossPlatformStuff.registryItems().getIDFrom(this.claimingItem).toString()); obj.addProperty("claimingItem", CrossPlatformStuff.instance().registryItems().getIDFrom(this.claimingItem).toString());
obj.addProperty("inspectionItem", CrossPlatformStuff.registryItems().getIDFrom(this.inspectionItem).toString()); obj.addProperty("inspectionItem", CrossPlatformStuff.instance().registryItems().getIDFrom(this.inspectionItem).toString());
obj.addProperty("claimDisplayTime", this.claimDisplayTime); obj.addProperty("claimDisplayTime", this.claimDisplayTime);
obj.addProperty("permissionLevel", this.permissionLevel); obj.addProperty("permissionLevel", this.permissionLevel);

View File

@ -4,9 +4,9 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@ -229,7 +229,7 @@ public class LangManager {
public LangManager() { public LangManager() {
this.loadDefault(); this.loadDefault();
Path configDir = CrossPlatformStuff.configPath().resolve("flan").resolve("lang"); Path configDir = CrossPlatformStuff.instance().configPath().resolve("flan").resolve("lang");
this.confDir = configDir; this.confDir = configDir;
try { try {
File dir = configDir.toFile(); File dir = configDir.toFile();
@ -261,7 +261,7 @@ public class LangManager {
} }
File def = configDir.resolve("en_us.json").toFile(); File def = configDir.resolve("en_us.json").toFile();
if (!def.exists()) { if (!def.exists()) {
File legacy = CrossPlatformStuff.configPath().resolve("flan").resolve("flan_lang.json").toFile(); File legacy = CrossPlatformStuff.instance().configPath().resolve("flan").resolve("flan_lang.json").toFile();
Map<String, String> translation; Map<String, String> translation;
Map<String, String[]> translationArr; Map<String, String[]> translationArr;
if (legacy.exists()) { if (legacy.exists()) {

View File

@ -1,6 +1,5 @@
package io.github.flemmli97.flan.event; package io.github.flemmli97.flan.event;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.api.data.IPermissionContainer; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
@ -8,6 +7,7 @@ import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.ClaimStorage; import io.github.flemmli97.flan.claim.ClaimStorage;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.gui.LockedLecternScreenHandler; import io.github.flemmli97.flan.gui.LockedLecternScreenHandler;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
@ -47,7 +47,7 @@ public class BlockInteractEvents {
ClaimStorage storage = ClaimStorage.get((ServerLevel) world); ClaimStorage storage = ClaimStorage.get((ServerLevel) world);
IPermissionContainer claim = storage.getForPermissionCheck(pos); IPermissionContainer claim = storage.getForPermissionCheck(pos);
if (claim != null) { if (claim != null) {
ResourceLocation id = CrossPlatformStuff.registryBlocks().getIDFrom(state.getBlock()); ResourceLocation id = CrossPlatformStuff.instance().registryBlocks().getIDFrom(state.getBlock());
if (contains(id, world.getBlockEntity(pos), ConfigHandler.config.breakBlockBlacklist, ConfigHandler.config.breakBETagBlacklist)) if (contains(id, world.getBlockEntity(pos), ConfigHandler.config.breakBlockBlacklist, ConfigHandler.config.breakBETagBlacklist))
return true; return true;
if (!claim.canInteract(player, PermissionRegistry.BREAK, pos, true)) { if (!claim.canInteract(player, PermissionRegistry.BREAK, pos, true)) {
@ -75,7 +75,7 @@ public class BlockInteractEvents {
IPermissionContainer claim = storage.getForPermissionCheck(hitResult.getBlockPos()); IPermissionContainer claim = storage.getForPermissionCheck(hitResult.getBlockPos());
if (claim != null) { if (claim != null) {
BlockState state = world.getBlockState(hitResult.getBlockPos()); BlockState state = world.getBlockState(hitResult.getBlockPos());
ResourceLocation id = CrossPlatformStuff.registryBlocks().getIDFrom(state.getBlock()); ResourceLocation id = CrossPlatformStuff.instance().registryBlocks().getIDFrom(state.getBlock());
BlockEntity blockEntity = world.getBlockEntity(hitResult.getBlockPos()); BlockEntity blockEntity = world.getBlockEntity(hitResult.getBlockPos());
if (contains(id, blockEntity, ConfigHandler.config.interactBlockBlacklist, ConfigHandler.config.interactBETagBlacklist)) if (contains(id, blockEntity, ConfigHandler.config.interactBlockBlacklist, ConfigHandler.config.interactBETagBlacklist))
return InteractionResult.PASS; return InteractionResult.PASS;
@ -107,7 +107,7 @@ public class BlockInteractEvents {
LockedLecternScreenHandler.create(player, (LecternBlockEntity) blockEntity); LockedLecternScreenHandler.create(player, (LecternBlockEntity) blockEntity);
return InteractionResult.FAIL; return InteractionResult.FAIL;
} }
if (!ConfigHandler.config.lenientBlockEntityCheck || CrossPlatformStuff.isInventoryTile(blockEntity)) { if (!ConfigHandler.config.lenientBlockEntityCheck || CrossPlatformStuff.instance().isInventoryTile(blockEntity)) {
if (claim.canInteract(player, PermissionRegistry.OPENCONTAINER, hitResult.getBlockPos(), true)) if (claim.canInteract(player, PermissionRegistry.OPENCONTAINER, hitResult.getBlockPos(), true))
return InteractionResult.PASS; return InteractionResult.PASS;
PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.blockPosition().getY()); PlayerClaimData.get(player).addDisplayClaim(claim, EnumDisplayType.MAIN, player.blockPosition().getY());
@ -129,7 +129,7 @@ public class BlockInteractEvents {
return true; return true;
if (blockEntity != null && !tagList.isEmpty()) { if (blockEntity != null && !tagList.isEmpty()) {
CompoundTag nbt = blockEntity.saveWithoutMetadata(); CompoundTag nbt = blockEntity.saveWithoutMetadata();
return tagList.stream().anyMatch(tag -> CrossPlatformStuff.blockDataContains(nbt, tag)); return tagList.stream().anyMatch(tag -> CrossPlatformStuff.instance().blockDataContains(nbt, tag));
} }
return false; return false;
} }

View File

@ -1,6 +1,5 @@
package io.github.flemmli97.flan.event; package io.github.flemmli97.flan.event;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.api.data.IPermissionContainer; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
@ -10,6 +9,7 @@ import io.github.flemmli97.flan.claim.ClaimStorage;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.mixin.IHungerAccessor; import io.github.flemmli97.flan.mixin.IHungerAccessor;
import io.github.flemmli97.flan.mixin.IPersistentProjectileVars; import io.github.flemmli97.flan.mixin.IPersistentProjectileVars;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import io.github.flemmli97.flan.player.IOwnedItem; import io.github.flemmli97.flan.player.IOwnedItem;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import io.github.flemmli97.flan.player.TeleportUtils; import io.github.flemmli97.flan.player.TeleportUtils;
@ -105,7 +105,7 @@ public class EntityInteractEvents {
} }
public static boolean canInteract(Entity entity) { public static boolean canInteract(Entity entity) {
ResourceLocation id = CrossPlatformStuff.registryEntities().getIDFrom(entity.getType()); ResourceLocation id = CrossPlatformStuff.instance().registryEntities().getIDFrom(entity.getType());
return ConfigHandler.config.ignoredEntityTypes.contains(id.getNamespace()) return ConfigHandler.config.ignoredEntityTypes.contains(id.getNamespace())
|| ConfigHandler.config.ignoredEntityTypes.contains(id.toString()) || ConfigHandler.config.ignoredEntityTypes.contains(id.toString())
|| entity.getTags().stream().anyMatch(ConfigHandler.config.entityTagIgnore::contains); || entity.getTags().stream().anyMatch(ConfigHandler.config.entityTagIgnore::contains);

View File

@ -10,8 +10,8 @@ import io.github.flemmli97.flan.claim.Claim;
import io.github.flemmli97.flan.claim.ClaimStorage; import io.github.flemmli97.flan.claim.ClaimStorage;
import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.claim.PermHelper;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler;
import io.github.flemmli97.flan.mixin.IItemAccessor; import io.github.flemmli97.flan.mixin.IItemAccessor;
import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import io.github.flemmli97.flan.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;
import io.github.flemmli97.flan.player.EnumEditMode; import io.github.flemmli97.flan.player.EnumEditMode;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
@ -148,7 +148,7 @@ public class ItemInteractEvents {
} }
public static void claimLandHandling(ServerPlayer player, BlockPos target) { public static void claimLandHandling(ServerPlayer player, BlockPos target) {
if (!PermissionNodeHandler.perm(player, PermissionNodeHandler.claimCreate, false)) { if (!PermissionNodeHandler.instance().perm(player, PermissionNodeHandler.claimCreate, false)) {
player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("noPermission"), ChatFormatting.DARK_RED), true); player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.langManager.get("noPermission"), ChatFormatting.DARK_RED), true);
return; return;
} }

View File

@ -1,11 +1,11 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.claim.Claim; import io.github.flemmli97.flan.claim.Claim;
import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.claim.PermHelper;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.gui.inv.SeparateInv; import io.github.flemmli97.flan.gui.inv.SeparateInv;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
@ -60,7 +60,7 @@ public class PotionEditScreenHandler extends ServerOnlyScreenHandler<Claim> {
protected void fillInventoryWith(Player player, SeparateInv inv, Claim claim) { protected void fillInventoryWith(Player player, SeparateInv inv, Claim claim) {
Map<MobEffect, Integer> potions = claim.getPotions(); Map<MobEffect, Integer> potions = claim.getPotions();
List<MobEffect> key = Lists.newArrayList(potions.keySet()); List<MobEffect> key = Lists.newArrayList(potions.keySet());
key.sort(Comparator.comparing(eff -> CrossPlatformStuff.registryStatusEffects().getIDFrom(eff).toString())); key.sort(Comparator.comparing(eff -> CrossPlatformStuff.instance().registryStatusEffects().getIDFrom(eff).toString()));
for (int i = 0; i < 54; i++) { for (int i = 0; i < 54; i++) {
if (i == 0) { if (i == 0) {
ItemStack close = new ItemStack(Items.TNT); ItemStack close = new ItemStack(Items.TNT);
@ -84,7 +84,7 @@ public class PotionEditScreenHandler extends ServerOnlyScreenHandler<Claim> {
ItemStack effectStack = new ItemStack(Items.POTION); ItemStack effectStack = new ItemStack(Items.POTION);
TranslatableComponent txt = new TranslatableComponent(effect.getDescriptionId()); TranslatableComponent txt = new TranslatableComponent(effect.getDescriptionId());
Collection<MobEffectInstance> inst = Collections.singleton(new MobEffectInstance(effect, 0, potions.get(effect))); Collection<MobEffectInstance> inst = Collections.singleton(new MobEffectInstance(effect, 0, potions.get(effect)));
effectStack.getOrCreateTag().putString("FlanEffect", CrossPlatformStuff.registryStatusEffects().getIDFrom(effect).toString()); effectStack.getOrCreateTag().putString("FlanEffect", CrossPlatformStuff.instance().registryStatusEffects().getIDFrom(effect).toString());
effectStack.getTag().putInt("CustomPotionColor", PotionUtils.getColor(inst)); effectStack.getTag().putInt("CustomPotionColor", PotionUtils.getColor(inst));
effectStack.setHoverName(txt.setStyle(txt.getStyle().withItalic(false).applyFormat(ChatFormatting.DARK_BLUE)).append(ServerScreenHelper.coloredGuiText("-" + potions.get(effect), ChatFormatting.DARK_BLUE))); effectStack.setHoverName(txt.setStyle(txt.getStyle().withItalic(false).applyFormat(ChatFormatting.DARK_BLUE)).append(ServerScreenHelper.coloredGuiText("-" + potions.get(effect), ChatFormatting.DARK_BLUE)));
inv.updateStack(i, effectStack); inv.updateStack(i, effectStack);
@ -111,7 +111,7 @@ public class PotionEditScreenHandler extends ServerOnlyScreenHandler<Claim> {
player.getServer().execute(() -> StringResultScreenHandler.createNewStringResult(player, (s) -> { player.getServer().execute(() -> StringResultScreenHandler.createNewStringResult(player, (s) -> {
String[] potion = s.split(";"); String[] potion = s.split(";");
int amp = 1; int amp = 1;
MobEffect effect = CrossPlatformStuff.registryStatusEffects().getFromId(new ResourceLocation(potion[0])); MobEffect effect = CrossPlatformStuff.instance().registryStatusEffects().getFromId(new ResourceLocation(potion[0]));
if (effect == null || (effect == MobEffects.LUCK && !potion[0].equals("minecraft:luck"))) { if (effect == null || (effect == MobEffects.LUCK && !potion[0].equals("minecraft:luck"))) {
ServerScreenHelper.playSongToPlayer(player, SoundEvents.VILLAGER_NO, 1, 1f); ServerScreenHelper.playSongToPlayer(player, SoundEvents.VILLAGER_NO, 1, 1f);
return; return;
@ -145,7 +145,7 @@ public class PotionEditScreenHandler extends ServerOnlyScreenHandler<Claim> {
ItemStack stack = slot.getItem(); ItemStack stack = slot.getItem();
if (!stack.isEmpty() && this.removeMode) { if (!stack.isEmpty() && this.removeMode) {
String effect = stack.getOrCreateTag().getString("FlanEffect"); String effect = stack.getOrCreateTag().getString("FlanEffect");
this.claim.removePotion(CrossPlatformStuff.registryStatusEffects().getFromId(new ResourceLocation(effect))); this.claim.removePotion(CrossPlatformStuff.instance().registryStatusEffects().getFromId(new ResourceLocation(effect)));
slot.set(ItemStack.EMPTY); slot.set(ItemStack.EMPTY);
ServerScreenHelper.playSongToPlayer(player, SoundEvents.BAT_DEATH, 1, 1f); ServerScreenHelper.playSongToPlayer(player, SoundEvents.BAT_DEATH, 1, 1f);
} }

View File

@ -1,20 +0,0 @@
package io.github.flemmli97.flan.integration.currency;
import dev.architectury.injectables.annotations.ExpectPlatform;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import java.util.function.Consumer;
public class CommandCurrency {
@ExpectPlatform
public static boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
throw new AssertionError();
}
@ExpectPlatform
public static boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
throw new AssertionError();
}
}

View File

@ -0,0 +1,17 @@
package io.github.flemmli97.flan.platform;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult;
public abstract class ClaimPermissionCheck {
protected static ClaimPermissionCheck INSTANCE;
public static ClaimPermissionCheck instance() {
return INSTANCE;
}
public abstract InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos);
}

View File

@ -0,0 +1,34 @@
package io.github.flemmli97.flan.platform;
import io.github.flemmli97.flan.SimpleRegistryWrapper;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import java.nio.file.Path;
public abstract class CrossPlatformStuff {
protected static CrossPlatformStuff INSTANCE;
public static CrossPlatformStuff instance() {
return INSTANCE;
}
public abstract Path configPath();
public abstract SimpleRegistryWrapper<MobEffect> registryStatusEffects();
public abstract SimpleRegistryWrapper<Block> registryBlocks();
public abstract SimpleRegistryWrapper<Item> registryItems();
public abstract SimpleRegistryWrapper<EntityType<?>> registryEntities();
public abstract boolean isInventoryTile(BlockEntity blockEntity);
public abstract boolean blockDataContains(CompoundTag nbt, String tag);
}

View File

@ -0,0 +1,19 @@
package io.github.flemmli97.flan.platform.integration.currency;
import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerPlayer;
import java.util.function.Consumer;
public abstract class CommandCurrency {
protected static CommandCurrency INSTANCE;
public static CommandCurrency instance() {
return INSTANCE;
}
public abstract boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message);
public abstract boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message);
}

View File

@ -1,10 +1,9 @@
package io.github.flemmli97.flan.integration.permissions; package io.github.flemmli97.flan.platform.integration.permissions;
import dev.architectury.injectables.annotations.ExpectPlatform;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
public class PermissionNodeHandler { public abstract class PermissionNodeHandler {
public static final String cmdReload = "flan.command.reload"; public static final String cmdReload = "flan.command.reload";
public static final String cmdGriefPrevention = "flan.command.read.griefprevention"; public static final String cmdGriefPrevention = "flan.command.read.griefprevention";
@ -47,22 +46,19 @@ public class PermissionNodeHandler {
public static final String permClaimBlocks = "flan.claim.blocks.max"; public static final String permClaimBlocks = "flan.claim.blocks.max";
public static final String permMaxClaims = "flan.claims.amount"; public static final String permMaxClaims = "flan.claims.amount";
public static boolean perm(CommandSourceStack src, String perm) { protected static PermissionNodeHandler INSTANCE;
public static PermissionNodeHandler instance() {
return INSTANCE;
}
public boolean perm(CommandSourceStack src, String perm) {
return perm(src, perm, false); return perm(src, perm, false);
} }
@ExpectPlatform public abstract boolean perm(CommandSourceStack src, String perm, boolean adminCmd);
public static boolean perm(CommandSourceStack src, String perm, boolean adminCmd) {
throw new AssertionError();
}
@ExpectPlatform public abstract boolean perm(ServerPlayer src, String perm, boolean adminCmd);
public static boolean perm(ServerPlayer src, String perm, boolean adminCmd) {
throw new AssertionError();
}
@ExpectPlatform public abstract boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback);
public static boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback) {
throw new AssertionError();
}
} }

View File

@ -14,7 +14,7 @@ import io.github.flemmli97.flan.claim.ParticleIndicators;
import io.github.flemmli97.flan.claim.PermHelper; import io.github.flemmli97.flan.claim.PermHelper;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.event.EntityInteractEvents; import io.github.flemmli97.flan.event.EntityInteractEvents;
import io.github.flemmli97.flan.integration.permissions.PermissionNodeHandler; import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import io.github.flemmli97.flan.scoreboard.ClaimCriterias;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
@ -105,7 +105,7 @@ public class PlayerClaimData implements IPlayerData {
} }
private boolean canIncrease(int blocks) { private boolean canIncrease(int blocks) {
return PermissionNodeHandler.permBelowEqVal(this.player, PermissionNodeHandler.permClaimBlocks, blocks, ConfigHandler.config.maxClaimBlocks); return PermissionNodeHandler.instance().permBelowEqVal(this.player, PermissionNodeHandler.permClaimBlocks, blocks, ConfigHandler.config.maxClaimBlocks);
} }
@Override @Override

View File

@ -1,14 +0,0 @@
package io.github.flemmli97.flan.claim.fabric;
import io.github.flemmli97.flan.api.fabric.PermissionCheckEvent;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult;
public class ClaimPermissionCheckImpl {
public static InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos) {
return PermissionCheckEvent.CHECK.invoker().check(player, permission, pos);
}
}

View File

@ -8,7 +8,11 @@ import io.github.flemmli97.flan.event.EntityInteractEvents;
import io.github.flemmli97.flan.event.ItemInteractEvents; import io.github.flemmli97.flan.event.ItemInteractEvents;
import io.github.flemmli97.flan.event.PlayerEvents; import io.github.flemmli97.flan.event.PlayerEvents;
import io.github.flemmli97.flan.event.WorldEvents; import io.github.flemmli97.flan.event.WorldEvents;
import io.github.flemmli97.flan.integration.playerability.PlayerAbilityEvents; import io.github.flemmli97.flan.fabric.platform.ClaimPermissionCheckImpl;
import io.github.flemmli97.flan.fabric.platform.CrossPlatformStuffImpl;
import io.github.flemmli97.flan.fabric.platform.integration.currency.fabric.CommandCurrencyImpl;
import io.github.flemmli97.flan.fabric.platform.integration.permissions.fabric.PermissionNodeHandlerImpl;
import io.github.flemmli97.flan.fabric.platform.integration.playerability.PlayerAbilityEvents;
import io.github.flemmli97.flan.player.PlayerDataHandler; import io.github.flemmli97.flan.player.PlayerDataHandler;
import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import io.github.flemmli97.flan.scoreboard.ClaimCriterias;
import net.fabricmc.api.ModInitializer; import net.fabricmc.api.ModInitializer;
@ -40,6 +44,10 @@ public class FlanFabric implements ModInitializer {
@Override @Override
public void onInitialize() { public void onInitialize() {
CrossPlatformStuffImpl.init();
ClaimPermissionCheckImpl.init();
CommandCurrencyImpl.init();
PermissionNodeHandlerImpl.init();
PlayerBlockBreakEvents.BEFORE.register(BlockInteractEvents::breakBlocks); PlayerBlockBreakEvents.BEFORE.register(BlockInteractEvents::breakBlocks);
AttackBlockCallback.EVENT.register(BlockInteractEvents::startBreakBlocks); AttackBlockCallback.EVENT.register(BlockInteractEvents::startBreakBlocks);
UseBlockCallback.EVENT.addPhaseOrdering(EventPhase, Event.DEFAULT_PHASE); UseBlockCallback.EVENT.addPhaseOrdering(EventPhase, Event.DEFAULT_PHASE);

View File

@ -0,0 +1,20 @@
package io.github.flemmli97.flan.fabric.platform;
import io.github.flemmli97.flan.api.fabric.PermissionCheckEvent;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.platform.ClaimPermissionCheck;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult;
public class ClaimPermissionCheckImpl extends ClaimPermissionCheck {
public static void init() {
INSTANCE = new ClaimPermissionCheckImpl();
}
@Override
public InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos) {
return PermissionCheckEvent.CHECK.invoker().check(player, permission, pos);
}
}

View File

@ -1,10 +1,11 @@
package io.github.flemmli97.flan.fabric; package io.github.flemmli97.flan.fabric.platform;
import io.github.flemmli97.flan.SimpleRegistryWrapper; import io.github.flemmli97.flan.SimpleRegistryWrapper;
import io.github.flemmli97.flan.fabric.FabricRegistryWrapper;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.core.Registry; import net.minecraft.core.Registry;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.Container; import net.minecraft.world.Container;
import net.minecraft.world.WorldlyContainerHolder; import net.minecraft.world.WorldlyContainerHolder;
import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffect;
@ -15,41 +16,44 @@ import net.minecraft.world.level.block.entity.BlockEntity;
import java.nio.file.Path; import java.nio.file.Path;
public class CrossPlatformStuffImpl { public class CrossPlatformStuffImpl extends CrossPlatformStuff {
public static Path configPath() { public static void init() {
INSTANCE = new CrossPlatformStuffImpl();
}
@Override
public Path configPath() {
return FabricLoader.getInstance().getConfigDir(); return FabricLoader.getInstance().getConfigDir();
} }
public static MobEffect effectFromString(String s) { @Override
return Registry.MOB_EFFECT.get(new ResourceLocation(s)); public SimpleRegistryWrapper<MobEffect> registryStatusEffects() {
}
public static String stringFromEffect(MobEffect s) {
return Registry.MOB_EFFECT.getKey(s).toString();
}
public static SimpleRegistryWrapper<MobEffect> registryStatusEffects() {
return new FabricRegistryWrapper<>(Registry.MOB_EFFECT); return new FabricRegistryWrapper<>(Registry.MOB_EFFECT);
} }
public static SimpleRegistryWrapper<Block> registryBlocks() { @Override
public SimpleRegistryWrapper<Block> registryBlocks() {
return new FabricRegistryWrapper<>(Registry.BLOCK); return new FabricRegistryWrapper<>(Registry.BLOCK);
} }
public static SimpleRegistryWrapper<Item> registryItems() { @Override
public SimpleRegistryWrapper<Item> registryItems() {
return new FabricRegistryWrapper<>(Registry.ITEM); return new FabricRegistryWrapper<>(Registry.ITEM);
} }
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() { @Override
public SimpleRegistryWrapper<EntityType<?>> registryEntities() {
return new FabricRegistryWrapper<>(Registry.ENTITY_TYPE); return new FabricRegistryWrapper<>(Registry.ENTITY_TYPE);
} }
public static boolean isInventoryTile(BlockEntity blockEntity) { @Override
public boolean isInventoryTile(BlockEntity blockEntity) {
return blockEntity instanceof Container || blockEntity instanceof WorldlyContainerHolder; return blockEntity instanceof Container || blockEntity instanceof WorldlyContainerHolder;
} }
public static boolean blockDataContains(CompoundTag nbt, String tag) { @Override
public boolean blockDataContains(CompoundTag nbt, String tag) {
return nbt.contains(tag); return nbt.contains(tag);
} }
} }

View File

@ -1,8 +1,9 @@
package io.github.flemmli97.flan.integration.currency.fabric; package io.github.flemmli97.flan.fabric.platform.integration.currency.fabric;
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;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.integration.currency.CommandCurrency;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import io.github.gunpowder.entities.StoredBalance; import io.github.gunpowder.entities.StoredBalance;
import io.github.gunpowder.modelhandlers.BalanceHandler; import io.github.gunpowder.modelhandlers.BalanceHandler;
@ -13,9 +14,14 @@ import net.minecraft.server.level.ServerPlayer;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.function.Consumer; import java.util.function.Consumer;
public class CommandCurrencyImpl { public class CommandCurrencyImpl extends CommandCurrency {
public static boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) { public static void init() {
INSTANCE = new CommandCurrencyImpl();
}
@Override
public boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
if (value == -1) { if (value == -1) {
message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("sellDisabled"), ChatFormatting.DARK_RED)); message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("sellDisabled"), ChatFormatting.DARK_RED));
return false; return false;
@ -38,7 +44,8 @@ public class CommandCurrencyImpl {
return false; return false;
} }
public static boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) { @Override
public boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
if (value == -1) { if (value == -1) {
message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("buyDisabled"), ChatFormatting.DARK_RED)); message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("buyDisabled"), ChatFormatting.DARK_RED));
return false; return false;

View File

@ -1,15 +1,21 @@
package io.github.flemmli97.flan.integration.permissions.fabric; package io.github.flemmli97.flan.fabric.platform.integration.permissions.fabric;
import dev.ftb.mods.ftbranks.api.FTBRanksAPI; import dev.ftb.mods.ftbranks.api.FTBRanksAPI;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import me.lucko.fabric.api.permissions.v0.Permissions; import me.lucko.fabric.api.permissions.v0.Permissions;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
public class PermissionNodeHandlerImpl { public class PermissionNodeHandlerImpl extends PermissionNodeHandler {
public static boolean perm(CommandSourceStack src, String perm, boolean adminCmd) { public static void init() {
INSTANCE = new PermissionNodeHandlerImpl();
}
@Override
public boolean perm(CommandSourceStack src, String perm, boolean adminCmd) {
if (Flan.permissionAPI) { if (Flan.permissionAPI) {
if (adminCmd) if (adminCmd)
return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); return Permissions.check(src, perm, ConfigHandler.config.permissionLevel);
@ -21,7 +27,8 @@ public class PermissionNodeHandlerImpl {
return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel);
} }
public static boolean perm(ServerPlayer src, String perm, boolean adminCmd) { @Override
public boolean perm(ServerPlayer src, String perm, boolean adminCmd) {
if (Flan.permissionAPI) { if (Flan.permissionAPI) {
if (adminCmd) if (adminCmd)
return Permissions.check(src, perm, ConfigHandler.config.permissionLevel); return Permissions.check(src, perm, ConfigHandler.config.permissionLevel);
@ -33,7 +40,8 @@ public class PermissionNodeHandlerImpl {
return !adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel);
} }
public static boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback) { @Override
public boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback) {
if (Flan.ftbRanks) { if (Flan.ftbRanks) {
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback); int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback);
return val <= max; return val <= max;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.integration.playerability; package io.github.flemmli97.flan.fabric.platform.integration.playerability;
import io.github.flemmli97.flan.api.data.IPermissionContainer; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.permission.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;

View File

@ -1,11 +1,15 @@
package io.github.flemmli97.flan.forge; package io.github.flemmli97.flan.forge;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.forgeevent.BlockInteractEventsForge; import io.github.flemmli97.flan.forge.forgeevent.BlockInteractEventsForge;
import io.github.flemmli97.flan.forgeevent.EntityInteractEventsForge; import io.github.flemmli97.flan.forge.forgeevent.EntityInteractEventsForge;
import io.github.flemmli97.flan.forgeevent.ItemInteractEventsForge; import io.github.flemmli97.flan.forge.forgeevent.ItemInteractEventsForge;
import io.github.flemmli97.flan.forgeevent.ServerEvents; import io.github.flemmli97.flan.forge.forgeevent.ServerEvents;
import io.github.flemmli97.flan.forgeevent.WorldEventsForge; import io.github.flemmli97.flan.forge.forgeevent.WorldEventsForge;
import io.github.flemmli97.flan.forge.platform.ClaimPermissionCheckImpl;
import io.github.flemmli97.flan.forge.platform.CrossPlatformStuffImpl;
import io.github.flemmli97.flan.forge.platform.integration.currency.forge.CommandCurrencyImpl;
import io.github.flemmli97.flan.forge.platform.integration.permissions.forge.PermissionNodeHandlerImpl;
import io.github.flemmli97.flan.scoreboard.ClaimCriterias; import io.github.flemmli97.flan.scoreboard.ClaimCriterias;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.EventPriority;
@ -13,13 +17,16 @@ import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
//Moved from io.github.flemmli97.flan to here since module thingy with forge
@Mod(FlanForge.MODID) @Mod(FlanForge.MODID)
public class FlanForge { public class FlanForge {
public static final String MODID = "flan"; public static final String MODID = "flan";
public FlanForge() { public FlanForge() {
CrossPlatformStuffImpl.init();
ClaimPermissionCheckImpl.init();
CommandCurrencyImpl.init();
PermissionNodeHandlerImpl.init();
Flan.ftbRanks = ModList.get().isLoaded("ftbranks"); Flan.ftbRanks = ModList.get().isLoaded("ftbranks");
Flan.diceMCMoneySign = ModList.get().isLoaded("dicemcmm"); Flan.diceMCMoneySign = ModList.get().isLoaded("dicemcmm");

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forge.forgeevent;
import io.github.flemmli97.flan.event.BlockInteractEvents; import io.github.flemmli97.flan.event.BlockInteractEvents;
import io.github.flemmli97.flan.event.ItemInteractEvents; import io.github.flemmli97.flan.event.ItemInteractEvents;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forge.forgeevent;
import io.github.flemmli97.flan.event.EntityInteractEvents; import io.github.flemmli97.flan.event.EntityInteractEvents;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forge.forgeevent;
import io.github.flemmli97.flan.event.ItemInteractEvents; import io.github.flemmli97.flan.event.ItemInteractEvents;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forge.forgeevent;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.commands.CommandClaim; import io.github.flemmli97.flan.commands.CommandClaim;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forge.forgeevent;
import io.github.flemmli97.flan.event.WorldEvents; import io.github.flemmli97.flan.event.WorldEvents;
import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerLevel;

View File

@ -1,15 +1,21 @@
package io.github.flemmli97.flan.claim.forge; package io.github.flemmli97.flan.forge.platform;
import io.github.flemmli97.flan.api.forge.PermissionCheckEvent; import io.github.flemmli97.flan.api.forge.PermissionCheckEvent;
import io.github.flemmli97.flan.api.permission.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.platform.ClaimPermissionCheck;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
public class ClaimPermissionCheckImpl { public class ClaimPermissionCheckImpl extends ClaimPermissionCheck {
public static InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos) { public static void init() {
INSTANCE = new ClaimPermissionCheckImpl();
}
@Override
public InteractionResult check(ServerPlayer player, ClaimPermission permission, BlockPos pos) {
PermissionCheckEvent event = new PermissionCheckEvent(player, permission, pos); PermissionCheckEvent event = new PermissionCheckEvent(player, permission, pos);
MinecraftForge.EVENT_BUS.post(event); MinecraftForge.EVENT_BUS.post(event);
return event.getActionResult(); return event.getActionResult();

View File

@ -1,6 +1,8 @@
package io.github.flemmli97.flan.forge; package io.github.flemmli97.flan.forge.platform;
import io.github.flemmli97.flan.SimpleRegistryWrapper; import io.github.flemmli97.flan.SimpleRegistryWrapper;
import io.github.flemmli97.flan.forge.ForgeRegistryWrapper;
import io.github.flemmli97.flan.platform.CrossPlatformStuff;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.Container; import net.minecraft.world.Container;
import net.minecraft.world.WorldlyContainerHolder; import net.minecraft.world.WorldlyContainerHolder;
@ -15,33 +17,44 @@ import net.minecraftforge.registries.ForgeRegistries;
import java.nio.file.Path; import java.nio.file.Path;
public class CrossPlatformStuffImpl { public class CrossPlatformStuffImpl extends CrossPlatformStuff {
public static Path configPath() { public static void init() {
INSTANCE = new CrossPlatformStuffImpl();
}
@Override
public Path configPath() {
return FMLPaths.CONFIGDIR.get(); return FMLPaths.CONFIGDIR.get();
} }
public static SimpleRegistryWrapper<MobEffect> registryStatusEffects() { @Override
public SimpleRegistryWrapper<MobEffect> registryStatusEffects() {
return new ForgeRegistryWrapper<>(ForgeRegistries.MOB_EFFECTS); return new ForgeRegistryWrapper<>(ForgeRegistries.MOB_EFFECTS);
} }
public static SimpleRegistryWrapper<Block> registryBlocks() { @Override
public SimpleRegistryWrapper<Block> registryBlocks() {
return new ForgeRegistryWrapper<>(ForgeRegistries.BLOCKS); return new ForgeRegistryWrapper<>(ForgeRegistries.BLOCKS);
} }
public static SimpleRegistryWrapper<Item> registryItems() { @Override
public SimpleRegistryWrapper<Item> registryItems() {
return new ForgeRegistryWrapper<>(ForgeRegistries.ITEMS); return new ForgeRegistryWrapper<>(ForgeRegistries.ITEMS);
} }
public static SimpleRegistryWrapper<EntityType<?>> registryEntities() { @Override
public SimpleRegistryWrapper<EntityType<?>> registryEntities() {
return new ForgeRegistryWrapper<>(ForgeRegistries.ENTITIES); return new ForgeRegistryWrapper<>(ForgeRegistries.ENTITIES);
} }
public static boolean isInventoryTile(BlockEntity blockEntity) { @Override
public boolean isInventoryTile(BlockEntity blockEntity) {
return blockEntity instanceof Container || blockEntity instanceof WorldlyContainerHolder || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent(); return blockEntity instanceof Container || blockEntity instanceof WorldlyContainerHolder || blockEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).isPresent();
} }
public static boolean blockDataContains(CompoundTag nbt, String tag) { @Override
public boolean blockDataContains(CompoundTag nbt, String tag) {
return nbt.contains(tag) || nbt.getCompound("ForgeData").contains(tag); return nbt.contains(tag) || nbt.getCompound("ForgeData").contains(tag);
} }
} }

View File

@ -1,10 +1,11 @@
package io.github.flemmli97.flan.integration.currency.forge; package io.github.flemmli97.flan.forge.platform.integration.currency.forge;
import dicemc.money.MoneyMod; import dicemc.money.MoneyMod;
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;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.integration.currency.CommandCurrency;
import io.github.flemmli97.flan.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
@ -13,9 +14,14 @@ import net.minecraft.server.level.ServerPlayer;
import java.util.UUID; import java.util.UUID;
import java.util.function.Consumer; import java.util.function.Consumer;
public class CommandCurrencyImpl { public class CommandCurrencyImpl extends CommandCurrency {
public static boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) { public static void init() {
INSTANCE = new CommandCurrencyImpl();
}
@Override
public boolean sellClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
if (value == -1) { if (value == -1) {
message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("sellDisabled"), ChatFormatting.DARK_RED)); message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("sellDisabled"), ChatFormatting.DARK_RED));
return false; return false;
@ -36,7 +42,8 @@ public class CommandCurrencyImpl {
return false; return false;
} }
public static boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) { @Override
public boolean buyClaimBlocks(ServerPlayer player, int blocks, float value, Consumer<Component> message) {
if (value == -1) { if (value == -1) {
message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("buyDisabled"), ChatFormatting.DARK_RED)); message.accept(PermHelper.simpleColoredText(ConfigHandler.langManager.get("buyDisabled"), ChatFormatting.DARK_RED));
return false; return false;

View File

@ -1,26 +1,34 @@
package io.github.flemmli97.flan.integration.permissions.forge; package io.github.flemmli97.flan.forge.platform.integration.permissions.forge;
import dev.ftb.mods.ftbranks.api.FTBRanksAPI; import dev.ftb.mods.ftbranks.api.FTBRanksAPI;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.platform.integration.permissions.PermissionNodeHandler;
import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.CommandSourceStack;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
public class PermissionNodeHandlerImpl { public class PermissionNodeHandlerImpl extends PermissionNodeHandler {
public static boolean perm(CommandSourceStack src, String perm, boolean adminCmd) { public static void init() {
INSTANCE = new PermissionNodeHandlerImpl();
}
@Override
public boolean perm(CommandSourceStack src, String perm, boolean adminCmd) {
if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayer player)) if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayer player))
return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel);
return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissions(ConfigHandler.config.permissionLevel)); return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissions(ConfigHandler.config.permissionLevel));
} }
public static boolean perm(ServerPlayer src, String perm, boolean adminCmd) { @Override
public boolean perm(ServerPlayer src, String perm, boolean adminCmd) {
if (!Flan.ftbRanks) if (!Flan.ftbRanks)
return !adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel); return !adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel);
return FTBRanksAPI.getPermissionValue(src, perm).asBoolean().orElse(!adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel)); return FTBRanksAPI.getPermissionValue(src, perm).asBoolean().orElse(!adminCmd || src.hasPermissions(ConfigHandler.config.permissionLevel));
} }
public static boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback) { @Override
public boolean permBelowEqVal(ServerPlayer src, String perm, int val, int fallback) {
if (Flan.ftbRanks) { if (Flan.ftbRanks) {
int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback); int max = FTBRanksAPI.getPermissionValue(src, perm).asInteger().orElse(fallback);
return val <= max; return val <= max;