From 370498851325a185a1d6e036b5f213672314923a Mon Sep 17 00:00:00 2001 From: Flemmli97 Date: Mon, 19 Apr 2021 13:48:47 +0200 Subject: [PATCH] add chorus fruit permission. fix wither permission --- Changelog.txt | 6 ++++++ gradle.properties | 2 +- src/main/java/com/flemmli97/flan/IClaimData.java | 4 ++-- .../java/com/flemmli97/flan/api/PermissionRegistry.java | 3 ++- src/main/java/com/flemmli97/flan/claim/ClaimStorage.java | 2 +- .../com/flemmli97/flan/claim/ObjectToPermissionMap.java | 1 + .../java/com/flemmli97/flan/event/EntityInteractEvents.java | 4 +++- src/main/java/com/flemmli97/flan/event/WorldEvents.java | 5 +---- .../java/com/flemmli97/flan/mixin/PlayerClaimMixin.java | 3 +-- .../java/com/flemmli97/flan/mixin/ServerWorldMixin.java | 2 +- .../java/com/flemmli97/flan/player/PlayerClaimData.java | 3 +-- 11 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 73d20be..15faa5c 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,9 @@ +Flan 1.2.6 +====================== +- Fix giveClaimBlocks not working for players that never joined the server +- Add chorus fruit eating permission +- Fix wither permission not toggable + Flan 1.2.5 ====================== - Fix inventory desync after closing gui diff --git a/gradle.properties b/gradle.properties index 9a0e9a9..ed922a2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx2G loader_version=0.9.1+build.205 # Mod Properties - mod_version = 1.2.5 + mod_version = 1.2.6 maven_group = com.flemmli97.flan archives_base_name = flan diff --git a/src/main/java/com/flemmli97/flan/IClaimData.java b/src/main/java/com/flemmli97/flan/IClaimData.java index 156f07a..034856d 100644 --- a/src/main/java/com/flemmli97/flan/IClaimData.java +++ b/src/main/java/com/flemmli97/flan/IClaimData.java @@ -1,6 +1,6 @@ package com.flemmli97.flan; -public interface IClaimData { +public interface IClaimData { - Object getClaimData(); + T getClaimData(); } diff --git a/src/main/java/com/flemmli97/flan/api/PermissionRegistry.java b/src/main/java/com/flemmli97/flan/api/PermissionRegistry.java index 5ec1024..50a6966 100644 --- a/src/main/java/com/flemmli97/flan/api/PermissionRegistry.java +++ b/src/main/java/com/flemmli97/flan/api/PermissionRegistry.java @@ -56,6 +56,7 @@ public class PermissionRegistry { public static ClaimPermission MINECART = register(new ClaimPermission("MINECART", () -> new ItemStack(Items.MINECART), "Permission to sit in minecarts")); public static ClaimPermission BUCKET = register(new ClaimPermission("BUCKET", () -> new ItemStack(Items.BUCKET), "Permission to take liquids with buckets")); public static ClaimPermission ENDERPEARL = register(new ClaimPermission("ENDERPEARL", () -> new ItemStack(Items.ENDER_PEARL), "Permission to use enderpearls")); + public static ClaimPermission CHORUSFRUIT = register(new ClaimPermission("CHORUSFRUIT", () -> new ItemStack(Items.CHORUS_FRUIT), "Permission to eat chorus fruits")); public static ClaimPermission ANIMALINTERACT = register(new ClaimPermission("ANIMALINTERACT", () -> new ItemStack(Items.CHICKEN_SPAWN_EGG), "Permission to interact with animals (e.g. shearing sheeps)")); public static ClaimPermission HURTANIMAL = register(new ClaimPermission("HURTANIMAL", () -> new ItemStack(Items.BEEF), "Permission to hurt animals")); public static ClaimPermission XP = register(new ClaimPermission("XP", () -> new ItemStack(Items.EXPERIENCE_BOTTLE), "Permission to pick up xp orbs")); @@ -71,7 +72,7 @@ public class PermissionRegistry { public static ClaimPermission WATERBORDER = global(new ClaimPermission("WATERBORDER", () -> new ItemStack(Items.WATER_BUCKET), "Toggle water crossing claim borders")); public static ClaimPermission PISTONBORDER = global(new ClaimPermission("PISTONBORDER", () -> new ItemStack(Items.PISTON), "Toggle piston pull/push across claim borders")); public static ClaimPermission MOBSPAWN = global(new ClaimPermission("MOBSPAWN", () -> new ItemStack(Items.ZOMBIE_SPAWN_EGG), "Prevent hostile mobspawn in claim")); - public static ClaimPermission ANIMALSPAWN = global(new ClaimPermission("MOBSPAWN", () -> new ItemStack(Items.CHICKEN_SPAWN_EGG), "Prevent other spawn in claim")); + public static ClaimPermission ANIMALSPAWN = global(new ClaimPermission("ANIMALSPAWN", () -> new ItemStack(Items.CHICKEN_SPAWN_EGG), "Prevent other spawn in claim")); private static ClaimPermission register(ClaimPermission perm) { if (locked) { diff --git a/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java b/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java index ccd3ea6..a8764f1 100644 --- a/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java +++ b/src/main/java/com/flemmli97/flan/claim/ClaimStorage.java @@ -53,7 +53,7 @@ public class ClaimStorage { private final GlobalClaim globalClaim; public static ClaimStorage get(ServerWorld world) { - return (ClaimStorage) ((IClaimData) world).getClaimData(); + return ((IClaimData) world).getClaimData(); } public ClaimStorage(MinecraftServer server, ServerWorld world) { diff --git a/src/main/java/com/flemmli97/flan/claim/ObjectToPermissionMap.java b/src/main/java/com/flemmli97/flan/claim/ObjectToPermissionMap.java index e04d070..33c8cec 100644 --- a/src/main/java/com/flemmli97/flan/claim/ObjectToPermissionMap.java +++ b/src/main/java/com/flemmli97/flan/claim/ObjectToPermissionMap.java @@ -111,5 +111,6 @@ public class ObjectToPermissionMap { registerItemPredicateMap(item -> item instanceof EnderPearlItem, () -> PermissionRegistry.ENDERPEARL); registerItemPredicateMap(item -> item instanceof BucketItem, () -> PermissionRegistry.BUCKET); registerItemPredicateMap(item -> item == Items.END_CRYSTAL, () -> PermissionRegistry.ENDCRYSTALPLACE); + registerItemPredicateMap(item -> item == Items.CHORUS_FRUIT, () -> PermissionRegistry.CHORUSFRUIT); } } diff --git a/src/main/java/com/flemmli97/flan/event/EntityInteractEvents.java b/src/main/java/com/flemmli97/flan/event/EntityInteractEvents.java index 7588cc7..a4b665c 100644 --- a/src/main/java/com/flemmli97/flan/event/EntityInteractEvents.java +++ b/src/main/java/com/flemmli97/flan/event/EntityInteractEvents.java @@ -243,9 +243,11 @@ public class EntityInteractEvents { if (wither.world.isClient) return true; ClaimStorage storage = ClaimStorage.get((ServerWorld) wither.world); + BlockPos.Mutable pos = wither.getBlockPos().mutableCopy(); for (int x = -1; x <= 1; x++) for (int z = -1; z <= 1; z++) { - if (storage.getForPermissionCheck(wither.getBlockPos().add(x, 0, z)) != null) + IPermissionContainer claim = storage.getForPermissionCheck(wither.getBlockPos().add(x, 0, z)); + if (!claim.canInteract(null, PermissionRegistry.WITHER, pos.set(pos.getX() + x, pos.getY() + 0, pos.getZ() + z), false)) return false; } return true; diff --git a/src/main/java/com/flemmli97/flan/event/WorldEvents.java b/src/main/java/com/flemmli97/flan/event/WorldEvents.java index dd5be82..5f88268 100644 --- a/src/main/java/com/flemmli97/flan/event/WorldEvents.java +++ b/src/main/java/com/flemmli97/flan/event/WorldEvents.java @@ -1,6 +1,5 @@ package com.flemmli97.flan.event; -import com.flemmli97.flan.api.ClaimPermission; import com.flemmli97.flan.api.PermissionRegistry; import com.flemmli97.flan.claim.ClaimStorage; import com.flemmli97.flan.claim.IPermissionContainer; @@ -8,8 +7,6 @@ import com.flemmli97.flan.config.ConfigHandler; import net.minecraft.block.BlockState; import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.mob.MobEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; @@ -78,7 +75,7 @@ public class WorldEvents { if (!ConfigHandler.config.allowMobSpawnToggle) return false; IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(entity.getBlockPos()); - if(entity.getType().getSpawnGroup() == SpawnGroup.MONSTER) + if (entity.getType().getSpawnGroup() == SpawnGroup.MONSTER) return claim.canInteract(null, PermissionRegistry.MOBSPAWN, entity.getBlockPos()); return claim.canInteract(null, PermissionRegistry.ANIMALSPAWN, entity.getBlockPos()); } diff --git a/src/main/java/com/flemmli97/flan/mixin/PlayerClaimMixin.java b/src/main/java/com/flemmli97/flan/mixin/PlayerClaimMixin.java index d6a6f27..16b3d17 100644 --- a/src/main/java/com/flemmli97/flan/mixin/PlayerClaimMixin.java +++ b/src/main/java/com/flemmli97/flan/mixin/PlayerClaimMixin.java @@ -12,9 +12,8 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - @Mixin(ServerPlayerEntity.class) -public abstract class PlayerClaimMixin implements IClaimData { +public abstract class PlayerClaimMixin implements IClaimData { @Unique private PlayerClaimData claimData; diff --git a/src/main/java/com/flemmli97/flan/mixin/ServerWorldMixin.java b/src/main/java/com/flemmli97/flan/mixin/ServerWorldMixin.java index f2dd578..aaf8636 100644 --- a/src/main/java/com/flemmli97/flan/mixin/ServerWorldMixin.java +++ b/src/main/java/com/flemmli97/flan/mixin/ServerWorldMixin.java @@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.LocalCapture; @Mixin(ServerWorld.class) -public abstract class ServerWorldMixin implements IClaimData { +public abstract class ServerWorldMixin implements IClaimData { @Unique private ClaimStorage claimData; diff --git a/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java b/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java index 9120d98..0bdaec2 100644 --- a/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java +++ b/src/main/java/com/flemmli97/flan/player/PlayerClaimData.java @@ -56,7 +56,7 @@ public class PlayerClaimData { } public static PlayerClaimData get(PlayerEntity player) { - return (PlayerClaimData) ((IClaimData) player).getClaimData(); + return ((IClaimData) player).getClaimData(); } public int getClaimBlocks() { @@ -288,7 +288,6 @@ public class PlayerClaimData { } - private int calculateUsedClaimBlocks() { int usedClaimsBlocks = 0; for (ServerWorld world : this.player.getServer().getWorlds()) {