improve api and add api jar to build.gradle

This commit is contained in:
Flemmli97 2021-07-20 22:57:34 +02:00
parent 63e54bbffc
commit 44a4767612
41 changed files with 219 additions and 70 deletions

View File

@ -1,3 +1,9 @@
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.
Flan 1.5.4 Flan 1.5.4
====================== ======================
- Safe read player data so it doesnt crash when the file is wrong - Safe read player data so it doesnt crash when the file is wrong

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan; package io.github.flemmli97.flan;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;

View File

@ -0,0 +1,42 @@
package io.github.flemmli97.flan.api;
import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.data.IPermissionStorage;
import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.claim.ClaimStorage;
import io.github.flemmli97.flan.player.OfflinePlayerData;
import io.github.flemmli97.flan.player.PlayerClaimData;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import java.util.UUID;
public class ClaimHandler {
/**
* Get the permission storage for the world to check for permissions.
* You can then use IPermissionContainer#getForPermissionCheck
* to return an {@link IPermissionContainer} for which you can then check permissions against
*/
public static IPermissionStorage getPermissionStorage(ServerWorld world) {
return ClaimStorage.get(world);
}
/**
* Gets the claim data for the given player
*/
public static IPlayerData getPlayerData(ServerPlayerEntity player) {
return PlayerClaimData.get(player);
}
/**
* Same as the above but with an uuid. Use this if the player is not online.
*/
public static IPlayerData getPlayerData(MinecraftServer server, UUID uuid) {
ServerPlayerEntity player = server.getPlayerManager().getPlayer(uuid);
if (player != null)
return getPlayerData(player);
return new OfflinePlayerData(server, uuid);
}
}

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.claim; package io.github.flemmli97.flan.api.data;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -10,6 +10,11 @@ public interface IPermissionContainer {
return this.canInteract(player, perm, pos, false); return this.canInteract(player, perm, pos, false);
} }
/**
* Return true of the action for the given ClamPermission is allowed here at the BlockPos
*
* @param player The player doing the action. Can be null
*/
boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message); boolean canInteract(ServerPlayerEntity player, ClaimPermission perm, BlockPos pos, boolean message);
} }

View File

@ -0,0 +1,8 @@
package io.github.flemmli97.flan.api.data;
import net.minecraft.util.math.BlockPos;
public interface IPermissionStorage {
IPermissionContainer getForPermissionCheck(BlockPos pos);
}

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.api; package io.github.flemmli97.flan.api.data;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
@ -10,6 +10,8 @@ public interface IPlayerData {
int usedClaimBlocks(); int usedClaimBlocks();
void setAdditionalClaims(int amount);
default boolean canUseClaimBlocks(int amount) { default boolean canUseClaimBlocks(int amount) {
if (ConfigHandler.config.maxClaimBlocks == -1) if (ConfigHandler.config.maxClaimBlocks == -1)
return true; return true;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.api; package io.github.flemmli97.flan.api.permission;
import io.github.flemmli97.flan.claim.Claim; import io.github.flemmli97.flan.claim.Claim;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.api; package io.github.flemmli97.flan.api.permission;
import io.github.flemmli97.flan.CrossPlatformStuff; import io.github.flemmli97.flan.CrossPlatformStuff;
import net.minecraft.block.AbstractButtonBlock; import net.minecraft.block.AbstractButtonBlock;

View File

@ -1,4 +1,4 @@
package io.github.flemmli97.flan.api; package io.github.flemmli97.flan.api.permission;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;

View File

@ -8,8 +8,9 @@ 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.CrossPlatformStuff;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ClaimPermission;
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.config.ConfigUpdater; import io.github.flemmli97.flan.config.ConfigUpdater;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.claim; package io.github.flemmli97.flan.claim;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import me.shedaniel.architectury.annotations.ExpectPlatform; import me.shedaniel.architectury.annotations.ExpectPlatform;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;

View File

@ -6,9 +6,11 @@ import com.google.common.collect.Sets;
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.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.IPlayerData; import io.github.flemmli97.flan.api.data.IPermissionStorage;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
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.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;
import io.github.flemmli97.flan.player.EnumEditMode; import io.github.flemmli97.flan.player.EnumEditMode;
@ -46,7 +48,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.UUID; import java.util.UUID;
public class ClaimStorage { public class ClaimStorage implements IPermissionStorage {
public static final String adminClaimString = "!AdminClaims"; public static final String adminClaimString = "!AdminClaims";
private final Long2ObjectArrayMap<List<Claim>> claims = new Long2ObjectArrayMap<>(); private final Long2ObjectArrayMap<List<Claim>> claims = new Long2ObjectArrayMap<>();
@ -203,6 +205,7 @@ public class ClaimStorage {
return null; return null;
} }
@Override
public IPermissionContainer getForPermissionCheck(BlockPos pos) { public IPermissionContainer getForPermissionCheck(BlockPos pos) {
Claim claim = this.getClaimAt(pos); Claim claim = this.getClaimAt(pos);
if (claim != null) if (claim != null)

View File

@ -1,7 +1,8 @@
package io.github.flemmli97.flan.claim; package io.github.flemmli97.flan.claim;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ClaimPermission;
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.player.PlayerClaimData; import io.github.flemmli97.flan.player.PlayerClaimData;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.claim; package io.github.flemmli97.flan.claim;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.LiteralText; import net.minecraft.text.LiteralText;

View File

@ -9,9 +9,9 @@ import com.mojang.brigadier.arguments.StringArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder; import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.context.CommandContext;
import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.CommandSyntaxException;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.api.IPlayerData; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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;
@ -415,7 +415,7 @@ public class CommandClaim {
} else { } else {
OfflinePlayerData data = new OfflinePlayerData(server, of); OfflinePlayerData data = new OfflinePlayerData(server, of);
context.getSource().sendFeedback(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimBlocksFormat, context.getSource().sendFeedback(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimBlocksFormat,
data.claimBlocks, data.additionalClaimBlocks, data.usedClaimBlocks()), Formatting.GOLD), false); data.claimBlocks, data.getAdditionalClaims(), data.usedClaimBlocks()), Formatting.GOLD), false);
} }
} }
context.getSource().sendFeedback(PermHelper.simpleColoredText(ConfigHandler.lang.listClaims, Formatting.GOLD), false); context.getSource().sendFeedback(PermHelper.simpleColoredText(ConfigHandler.lang.listClaims, Formatting.GOLD), false);

View File

@ -6,8 +6,8 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException;
import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType;
import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.Suggestions;
import com.mojang.brigadier.suggestion.SuggestionsBuilder; import com.mojang.brigadier.suggestion.SuggestionsBuilder;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;

View File

@ -5,8 +5,8 @@ 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.CrossPlatformStuff;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.Items; import net.minecraft.item.Items;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
@ -35,6 +35,7 @@ public class Config {
public int defaultClaimDepth = 10; public int defaultClaimDepth = 10;
public boolean lenientBlockEntityCheck; public boolean lenientBlockEntityCheck;
public List<String> ignoredBlocks = new ArrayList<>(); public List<String> ignoredBlocks = new ArrayList<>();
public List<String> ignoredEntityTypes = new ArrayList<>();
public List<String> blockEntityTagIgnore = Lists.newArrayList( public List<String> blockEntityTagIgnore = Lists.newArrayList(
"IsDeathChest", //vanilla death chest "IsDeathChest", //vanilla death chest
"gunpowder.owner" //gunpowder "gunpowder.owner" //gunpowder
@ -120,6 +121,8 @@ public class Config {
this.lenientBlockEntityCheck = ConfigHandler.fromJson(obj, "lenientBlockEntityCheck", this.lenientBlockEntityCheck); this.lenientBlockEntityCheck = ConfigHandler.fromJson(obj, "lenientBlockEntityCheck", this.lenientBlockEntityCheck);
this.ignoredBlocks.clear(); this.ignoredBlocks.clear();
ConfigHandler.arryFromJson(obj, "ignoredBlocks").forEach(e -> this.ignoredBlocks.add(e.getAsString())); ConfigHandler.arryFromJson(obj, "ignoredBlocks").forEach(e -> this.ignoredBlocks.add(e.getAsString()));
this.ignoredEntityTypes.clear();
ConfigHandler.arryFromJson(obj, "ignoredEntities").forEach(e -> this.ignoredEntityTypes.add(e.getAsString()));
this.blockEntityTagIgnore.clear(); this.blockEntityTagIgnore.clear();
ConfigHandler.arryFromJson(obj, "blockEntityTagIgnore").forEach(e -> this.blockEntityTagIgnore.add(e.getAsString())); ConfigHandler.arryFromJson(obj, "blockEntityTagIgnore").forEach(e -> this.blockEntityTagIgnore.add(e.getAsString()));
this.entityTagIgnore.clear(); this.entityTagIgnore.clear();
@ -195,13 +198,16 @@ public class Config {
JsonArray blocks = new JsonArray(); JsonArray blocks = new JsonArray();
this.ignoredBlocks.forEach(blocks::add); this.ignoredBlocks.forEach(blocks::add);
obj.add("ignoredBlocks", blocks); obj.add("ignoredBlocks", blocks);
JsonArray entities = new JsonArray();
this.ignoredEntityTypes.forEach(entities::add);
obj.add("ignoredEntities", entities);
obj.addProperty("lenientBlockEntityCheck", this.lenientBlockEntityCheck); obj.addProperty("lenientBlockEntityCheck", this.lenientBlockEntityCheck);
JsonArray blocksEntities = new JsonArray(); JsonArray blocksEntities = new JsonArray();
this.blockEntityTagIgnore.forEach(blocksEntities::add); this.blockEntityTagIgnore.forEach(blocksEntities::add);
obj.add("blockEntityTagIgnore", blocksEntities); obj.add("blockEntityTagIgnore", blocksEntities);
JsonArray entities = new JsonArray(); JsonArray entitiesTags = new JsonArray();
this.entityTagIgnore.forEach(entities::add); this.entityTagIgnore.forEach(entitiesTags::add);
obj.add("entityTagIgnore", entities); obj.add("entityTagIgnore", entitiesTags);
JsonArray arr = new JsonArray(); JsonArray arr = new JsonArray();
for (String blacklistedWorld : this.blacklistedWorlds) for (String blacklistedWorld : this.blacklistedWorlds)

View File

@ -5,8 +5,8 @@ import com.google.gson.JsonElement;
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.CrossPlatformStuff; import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import net.minecraft.server.MinecraftServer; import net.minecraft.server.MinecraftServer;
import java.io.File; import java.io.File;

View File

@ -1,11 +1,11 @@
package io.github.flemmli97.flan.event; package io.github.flemmli97.flan.event;
import io.github.flemmli97.flan.CrossPlatformStuff; import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
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.claim.IPermissionContainer;
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.player.EnumDisplayType; import io.github.flemmli97.flan.player.EnumDisplayType;

View File

@ -1,11 +1,11 @@
package io.github.flemmli97.flan.event; package io.github.flemmli97.flan.event;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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.IPermissionContainer;
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;

View File

@ -2,12 +2,12 @@ package io.github.flemmli97.flan.event;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfile;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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.IPermissionContainer;
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.permissionapi.CommandPermission; import io.github.flemmli97.flan.integration.permissionapi.CommandPermission;

View File

@ -1,8 +1,8 @@
package io.github.flemmli97.flan.event; package io.github.flemmli97.flan.event;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.data.IPermissionContainer;
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.claim.IPermissionContainer;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.LightningEntity; import net.minecraft.entity.LightningEntity;
import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.SpawnGroup;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
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.gui.inv.SeparateInv; import io.github.flemmli97.flan.gui.inv.SeparateInv;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
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;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
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;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.PermissionRegistry;
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;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.gui; package io.github.flemmli97.flan.gui;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
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.Config; import io.github.flemmli97.flan.config.Config;

View File

@ -2,7 +2,7 @@ package io.github.flemmli97.flan.player;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.IPlayerData; import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.claim.Claim; 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.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
@ -14,7 +14,6 @@ import java.io.File;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.time.DateTimeException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
@ -23,13 +22,16 @@ import java.util.UUID;
public class OfflinePlayerData implements IPlayerData { public class OfflinePlayerData implements IPlayerData {
public final int claimBlocks, additionalClaimBlocks; public final int claimBlocks;
private int additionalClaimBlocks;
public final LocalDateTime lastOnline; public final LocalDateTime lastOnline;
public final UUID owner; public final UUID owner;
public final MinecraftServer server; public final MinecraftServer server;
public final File saveFile;
public OfflinePlayerData(MinecraftServer server, UUID uuid) { public OfflinePlayerData(MinecraftServer server, UUID uuid) {
File dir = new File(server.getSavePath(WorldSavePath.PLAYERDATA).toFile(), "/claimData/"); File dir = new File(server.getSavePath(WorldSavePath.PLAYERDATA).toFile(), "/claimData/");
this.saveFile = new File(dir, uuid + ".json");
int claim = ConfigHandler.config.startingBlocks; int claim = ConfigHandler.config.startingBlocks;
int add = 0; int add = 0;
this.owner = uuid; this.owner = uuid;
@ -43,7 +45,7 @@ public class OfflinePlayerData implements IPlayerData {
reader.close(); reader.close();
claim = ConfigHandler.fromJson(obj, "ClaimBlocks", claim); claim = ConfigHandler.fromJson(obj, "ClaimBlocks", claim);
add = ConfigHandler.fromJson(obj, "AdditionalBlocks", add); add = ConfigHandler.fromJson(obj, "AdditionalBlocks", add);
if(obj.has("LastSeen")) { if (obj.has("LastSeen")) {
try { try {
last = LocalDateTime.parse(obj.get("LastSeen").getAsString(), Flan.onlineTimeFormatter); last = LocalDateTime.parse(obj.get("LastSeen").getAsString(), Flan.onlineTimeFormatter);
} catch (RuntimeException e) { } catch (RuntimeException e) {
@ -62,6 +64,7 @@ public class OfflinePlayerData implements IPlayerData {
} }
private OfflinePlayerData(MinecraftServer server, File dataFile, UUID uuid) { private OfflinePlayerData(MinecraftServer server, File dataFile, UUID uuid) {
this.saveFile = dataFile;
int claim = ConfigHandler.config.startingBlocks; int claim = ConfigHandler.config.startingBlocks;
int add = 0; int add = 0;
LocalDateTime last = LocalDateTime.now(); LocalDateTime last = LocalDateTime.now();
@ -115,6 +118,36 @@ public class OfflinePlayerData implements IPlayerData {
return usedClaimsBlocks; return usedClaimsBlocks;
} }
@Override
public void setAdditionalClaims(int amount) {
this.additionalClaimBlocks = amount;
try {
if (!this.saveFile.getParentFile().exists()) {
this.saveFile.getParentFile().mkdirs();
this.saveFile.createNewFile();
} else if (!this.saveFile.exists())
this.saveFile.createNewFile();
FileReader reader = new FileReader(this.saveFile);
JsonObject obj = ConfigHandler.GSON.fromJson(reader, JsonObject.class);
reader.close();
if (obj == null) {
obj = new JsonObject();
obj.addProperty("ClaimBlocks", this.claimBlocks);
obj.addProperty("AdditionalBlocks", this.additionalClaimBlocks);
obj.addProperty("LastSeen", this.lastOnline.format(Flan.onlineTimeFormatter));
JsonObject defPerm = new JsonObject();
obj.add("DefaultGroups", defPerm);
} else
obj.addProperty("AdditionalBlocks", this.additionalClaimBlocks);
Flan.debug("Attempting to write following json data {} to file {}", obj, this.saveFile.getName());
FileWriter writer = new FileWriter(this.saveFile);
ConfigHandler.GSON.toJson(obj, writer);
writer.close();
} catch (IOException e) {
Flan.log("Error adding additional claimblocks to offline player {}", this.owner);
}
}
public static Map<UUID, OfflinePlayerData> collectAllPlayerData(MinecraftServer server) { public static Map<UUID, OfflinePlayerData> collectAllPlayerData(MinecraftServer server) {
File dir = new File(server.getSavePath(WorldSavePath.PLAYERDATA).toFile(), "/claimData/"); File dir = new File(server.getSavePath(WorldSavePath.PLAYERDATA).toFile(), "/claimData/");
Map<UUID, OfflinePlayerData> playerDatas = new HashMap<>(); Map<UUID, OfflinePlayerData> playerDatas = new HashMap<>();

View File

@ -2,12 +2,12 @@ package io.github.flemmli97.flan.player;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.data.IPermissionContainer;
import io.github.flemmli97.flan.api.IPlayerData; import io.github.flemmli97.flan.api.data.IPlayerData;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import io.github.flemmli97.flan.api.permission.PermissionRegistry;
import io.github.flemmli97.flan.claim.Claim; 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.IPermissionContainer;
import io.github.flemmli97.flan.claim.ParticleIndicators; 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;
@ -102,6 +102,7 @@ public class PlayerClaimData implements IPlayerData {
return this.additionalClaimBlocks; return this.additionalClaimBlocks;
} }
@Override
public void setAdditionalClaims(int amount) { public void setAdditionalClaims(int amount) {
this.additionalClaimBlocks = Math.max(0, amount); this.additionalClaimBlocks = Math.max(0, amount);
updateScoreFor(this.player, ClaimCriterias.AMOUNT, this.claimBlocks + this.additionalClaimBlocks); updateScoreFor(this.player, ClaimCriterias.AMOUNT, this.claimBlocks + this.additionalClaimBlocks);

View File

@ -93,6 +93,26 @@ sourcesJar {
classifier "fabric-source" classifier "fabric-source"
} }
task apiJar(type: Jar, dependsOn: classes) {
archiveClassifier.set "fabric-api-source"
from project(":common").sourceSets.main.output + sourceSets.main.output
include "io/github/flemmli97/flan/api/**"
include "fabric.mod_api.json" //Include this so it gets remapped as a dependency
rename("fabric.mod_api.json", "fabric.mod.json")
}
task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask){
archiveClassifier.set "fabric-api"
input.set apiJar.archiveFile
addNestedDependencies = false
dependsOn apiJar
from sourceSets.main.output
/* Putting it here doesnt seem to work...
include "fabric.mod_api.json" //Include this so it gets remapped as a dependency
rename("fabric.mod_api.json", "fabric.mod.json")
*/
}
publishing { publishing {
publications { publications {
mavenJava(MavenPublication) { mavenJava(MavenPublication) {
@ -103,6 +123,7 @@ publishing {
artifact(sourcesJar) { artifact(sourcesJar) {
builtBy remapSourcesJar builtBy remapSourcesJar
} }
artifact(remapApiJar)
artifactId project.archives_base_name artifactId project.archives_base_name
version project.version version project.version
} }

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan; package io.github.flemmli97.flan;
import io.github.flemmli97.flan.api.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
import io.github.flemmli97.flan.commands.CommandClaim; import io.github.flemmli97.flan.commands.CommandClaim;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import io.github.flemmli97.flan.event.BlockInteractEvents; import io.github.flemmli97.flan.event.BlockInteractEvents;

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.api.fabric; package io.github.flemmli97.flan.api.fabric;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.fabricmc.fabric.api.event.Event; import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory; import net.fabricmc.fabric.api.event.EventFactory;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.claim.fabric; package io.github.flemmli97.flan.claim.fabric;
import io.github.flemmli97.flan.api.ClaimPermission;
import io.github.flemmli97.flan.api.fabric.PermissionCheckEvent; import io.github.flemmli97.flan.api.fabric.PermissionCheckEvent;
import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;

View File

@ -1,8 +1,8 @@
package io.github.flemmli97.flan.integration.playerability; package io.github.flemmli97.flan.integration.playerability;
import io.github.flemmli97.flan.api.PermissionRegistry; import io.github.flemmli97.flan.api.data.IPermissionContainer;
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.claim.IPermissionContainer;
import io.github.ladysnake.pal.AbilitySource; import io.github.ladysnake.pal.AbilitySource;
import io.github.ladysnake.pal.PlayerAbility; import io.github.ladysnake.pal.PlayerAbility;
import io.github.ladysnake.pal.PlayerAbilityEnableCallback; import io.github.ladysnake.pal.PlayerAbilityEnableCallback;

View File

@ -0,0 +1,5 @@
{
"schemaVersion": 1,
"id": "flan",
"version": "${version}"
}

View File

@ -66,6 +66,20 @@ sourcesJar {
classifier "forge-sources" classifier "forge-sources"
} }
task apiJar(type: Jar, dependsOn: classes) {
archiveClassifier.set "forge-api-source"
from project(":common").sourceSets.main.output + sourceSets.main.output
include "io/github/flemmli97/flan/api/**"
}
task remapApiJar(type: net.fabricmc.loom.task.RemapJarTask){
archiveClassifier.set "forge-api"
input.set apiJar.archiveFile
addNestedDependencies = false
dependsOn apiJar
}
publishing { publishing {
publications { publications {
mavenJava(MavenPublication) { mavenJava(MavenPublication) {
@ -76,6 +90,7 @@ publishing {
artifact(sourcesJar) { artifact(sourcesJar) {
builtBy remapSourcesJar builtBy remapSourcesJar
} }
artifact(remapApiJar)
artifactId project.archives_base_name artifactId project.archives_base_name
version project.version version project.version
} }

View File

@ -1,6 +1,6 @@
package io.github.flemmli97.flan.api.forge; package io.github.flemmli97.flan.api.forge;
import io.github.flemmli97.flan.api.ClaimPermission; import io.github.flemmli97.flan.api.permission.ClaimPermission;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.claim.forge; package io.github.flemmli97.flan.claim.forge;
import io.github.flemmli97.flan.api.ClaimPermission;
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 net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;

View File

@ -1,7 +1,7 @@
package io.github.flemmli97.flan.forgeevent; package io.github.flemmli97.flan.forgeevent;
import io.github.flemmli97.flan.Flan; import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.ObjectToPermissionMap; import io.github.flemmli97.flan.api.permission.ObjectToPermissionMap;
import io.github.flemmli97.flan.commands.CommandClaim; import io.github.flemmli97.flan.commands.CommandClaim;
import io.github.flemmli97.flan.config.ConfigHandler; import io.github.flemmli97.flan.config.ConfigHandler;
import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.event.RegisterCommandsEvent;

View File

@ -8,7 +8,7 @@ minecraft_version=1.16.5
yarn_mappings=1.16.5+build.9 yarn_mappings=1.16.5+build.9
loader_version=0.11.3 loader_version=0.11.3
# Mod Properties # Mod Properties
mod_version=1.5.4 mod_version=1.6.0
maven_group=io.github.flemmli97 maven_group=io.github.flemmli97
archives_base_name=flan archives_base_name=flan
# Dependencies # Dependencies