add chorus fruit permission. fix wither permission

This commit is contained in:
Flemmli97 2021-04-19 13:48:47 +02:00
parent b86285bc63
commit 3704988513
11 changed files with 20 additions and 15 deletions

View File

@ -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 Flan 1.2.5
====================== ======================
- Fix inventory desync after closing gui - Fix inventory desync after closing gui

View File

@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx2G
loader_version=0.9.1+build.205 loader_version=0.9.1+build.205
# Mod Properties # Mod Properties
mod_version = 1.2.5 mod_version = 1.2.6
maven_group = com.flemmli97.flan maven_group = com.flemmli97.flan
archives_base_name = flan archives_base_name = flan

View File

@ -1,6 +1,6 @@
package com.flemmli97.flan; package com.flemmli97.flan;
public interface IClaimData { public interface IClaimData<T> {
Object getClaimData(); T getClaimData();
} }

View File

@ -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 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 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 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 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 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")); 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 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 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 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) { private static ClaimPermission register(ClaimPermission perm) {
if (locked) { if (locked) {

View File

@ -53,7 +53,7 @@ public class ClaimStorage {
private final GlobalClaim globalClaim; private final GlobalClaim globalClaim;
public static ClaimStorage get(ServerWorld world) { public static ClaimStorage get(ServerWorld world) {
return (ClaimStorage) ((IClaimData) world).getClaimData(); return ((IClaimData<ClaimStorage>) world).getClaimData();
} }
public ClaimStorage(MinecraftServer server, ServerWorld world) { public ClaimStorage(MinecraftServer server, ServerWorld world) {

View File

@ -111,5 +111,6 @@ public class ObjectToPermissionMap {
registerItemPredicateMap(item -> item instanceof EnderPearlItem, () -> PermissionRegistry.ENDERPEARL); registerItemPredicateMap(item -> item instanceof EnderPearlItem, () -> PermissionRegistry.ENDERPEARL);
registerItemPredicateMap(item -> item instanceof BucketItem, () -> PermissionRegistry.BUCKET); registerItemPredicateMap(item -> item instanceof BucketItem, () -> PermissionRegistry.BUCKET);
registerItemPredicateMap(item -> item == Items.END_CRYSTAL, () -> PermissionRegistry.ENDCRYSTALPLACE); registerItemPredicateMap(item -> item == Items.END_CRYSTAL, () -> PermissionRegistry.ENDCRYSTALPLACE);
registerItemPredicateMap(item -> item == Items.CHORUS_FRUIT, () -> PermissionRegistry.CHORUSFRUIT);
} }
} }

View File

@ -243,9 +243,11 @@ public class EntityInteractEvents {
if (wither.world.isClient) if (wither.world.isClient)
return true; return true;
ClaimStorage storage = ClaimStorage.get((ServerWorld) wither.world); ClaimStorage storage = ClaimStorage.get((ServerWorld) wither.world);
BlockPos.Mutable pos = wither.getBlockPos().mutableCopy();
for (int x = -1; x <= 1; x++) for (int x = -1; x <= 1; x++)
for (int z = -1; z <= 1; z++) { 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 false;
} }
return true; return true;

View File

@ -1,6 +1,5 @@
package com.flemmli97.flan.event; package com.flemmli97.flan.event;
import com.flemmli97.flan.api.ClaimPermission;
import com.flemmli97.flan.api.PermissionRegistry; import com.flemmli97.flan.api.PermissionRegistry;
import com.flemmli97.flan.claim.ClaimStorage; import com.flemmli97.flan.claim.ClaimStorage;
import com.flemmli97.flan.claim.IPermissionContainer; import com.flemmli97.flan.claim.IPermissionContainer;
@ -8,8 +7,6 @@ import com.flemmli97.flan.config.ConfigHandler;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.SpawnGroup; import net.minecraft.entity.SpawnGroup;
import net.minecraft.entity.mob.MobEntity; 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.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld; import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -78,7 +75,7 @@ public class WorldEvents {
if (!ConfigHandler.config.allowMobSpawnToggle) if (!ConfigHandler.config.allowMobSpawnToggle)
return false; return false;
IPermissionContainer claim = ClaimStorage.get(world).getForPermissionCheck(entity.getBlockPos()); 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.MOBSPAWN, entity.getBlockPos());
return claim.canInteract(null, PermissionRegistry.ANIMALSPAWN, entity.getBlockPos()); return claim.canInteract(null, PermissionRegistry.ANIMALSPAWN, entity.getBlockPos());
} }

View File

@ -12,9 +12,8 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(ServerPlayerEntity.class) @Mixin(ServerPlayerEntity.class)
public abstract class PlayerClaimMixin implements IClaimData { public abstract class PlayerClaimMixin implements IClaimData<PlayerClaimData> {
@Unique @Unique
private PlayerClaimData claimData; private PlayerClaimData claimData;

View File

@ -17,7 +17,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture; import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
@Mixin(ServerWorld.class) @Mixin(ServerWorld.class)
public abstract class ServerWorldMixin implements IClaimData { public abstract class ServerWorldMixin implements IClaimData<ClaimStorage> {
@Unique @Unique
private ClaimStorage claimData; private ClaimStorage claimData;

View File

@ -56,7 +56,7 @@ public class PlayerClaimData {
} }
public static PlayerClaimData get(PlayerEntity player) { public static PlayerClaimData get(PlayerEntity player) {
return (PlayerClaimData) ((IClaimData) player).getClaimData(); return ((IClaimData<PlayerClaimData>) player).getClaimData();
} }
public int getClaimBlocks() { public int getClaimBlocks() {
@ -288,7 +288,6 @@ public class PlayerClaimData {
} }
private int calculateUsedClaimBlocks() { private int calculateUsedClaimBlocks() {
int usedClaimsBlocks = 0; int usedClaimsBlocks = 0;
for (ServerWorld world : this.player.getServer().getWorlds()) { for (ServerWorld world : this.player.getServer().getWorlds()) {