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

View File

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

View File

@ -1,6 +1,6 @@
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 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) {

View File

@ -53,7 +53,7 @@ public class ClaimStorage {
private final GlobalClaim globalClaim;
public static ClaimStorage get(ServerWorld world) {
return (ClaimStorage) ((IClaimData) world).getClaimData();
return ((IClaimData<ClaimStorage>) world).getClaimData();
}
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 BucketItem, () -> PermissionRegistry.BUCKET);
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)
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;

View File

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

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.callback.CallbackInfo;
@Mixin(ServerPlayerEntity.class)
public abstract class PlayerClaimMixin implements IClaimData {
public abstract class PlayerClaimMixin implements IClaimData<PlayerClaimData> {
@Unique
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;
@Mixin(ServerWorld.class)
public abstract class ServerWorldMixin implements IClaimData {
public abstract class ServerWorldMixin implements IClaimData<ClaimStorage> {
@Unique
private ClaimStorage claimData;

View File

@ -56,7 +56,7 @@ public class PlayerClaimData {
}
public static PlayerClaimData get(PlayerEntity player) {
return (PlayerClaimData) ((IClaimData) player).getClaimData();
return ((IClaimData<PlayerClaimData>) 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()) {