less strict check for fake players. also some reformatting

This commit is contained in:
Flemmli97 2022-01-08 14:53:13 +01:00
parent bea0349ddc
commit 0ac9453f7b
23 changed files with 119 additions and 257 deletions

View File

@ -4,7 +4,6 @@ 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.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
@ -47,8 +46,4 @@ public class CrossPlatformStuff {
public static boolean blockDataContains(CompoundTag nbt, String tag) {
throw new AssertionError();
}
public static boolean isRealPlayer(Player player) {
throw new AssertionError();
}
}

View File

@ -5,6 +5,7 @@ import com.google.common.collect.Lists;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.mojang.authlib.GameProfile;
import io.github.flemmli97.flan.CrossPlatformStuff;
import io.github.flemmli97.flan.Flan;
import io.github.flemmli97.flan.api.data.IPermissionContainer;
@ -237,6 +238,7 @@ public class Claim implements IPermissionContainer {
@Override
public boolean canInteract(ServerPlayer player, ClaimPermission perm, BlockPos pos, boolean message) {
message = message && player.getClass().equals(ServerPlayer.class); //dont send messages to fake players
InteractionResult res = ClaimPermissionCheck.check(player, perm, pos);
if (res != InteractionResult.PASS)
return res != InteractionResult.FAIL;
@ -706,8 +708,7 @@ public class Claim implements IPermissionContainer {
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj instanceof Claim) {
Claim other = (Claim) obj;
if (obj instanceof Claim other) {
if (this.claimID == null && other.claimID == null)
return Arrays.equals(this.getDimensions(), ((Claim) obj).getDimensions());
if (this.claimID != null)
@ -731,7 +732,7 @@ public class Claim implements IPermissionContainer {
boolean perms = this.canInteract(player, PermissionRegistry.EDITPERMS, player.blockPosition());
List<Component> l = new ArrayList<>();
l.add(PermHelper.simpleColoredText("=============================================", ChatFormatting.GREEN));
String ownerName = this.isAdminClaim() ? "Admin" : player.getServer().getProfileCache().get(this.owner).map(prof -> prof.getName()).orElse("<UNKNOWN>");
String ownerName = this.isAdminClaim() ? "Admin" : player.getServer().getProfileCache().get(this.owner).map(GameProfile::getName).orElse("<UNKNOWN>");
if (this.parent == null) {
if (this.claimName.isEmpty())
l.add(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.claimBasicInfo, ownerName, this.minX, this.minZ, this.maxX, this.maxZ, this.subClaims.size()), ChatFormatting.GOLD));
@ -778,9 +779,7 @@ public class Claim implements IPermissionContainer {
interface ClaimUpdater {
Map<Integer, ClaimUpdater> updater = Config.createHashMap(map -> {
map.put(2, claim -> claim.globalPerm.put(PermissionRegistry.LOCKITEMS, true));
});
Map<Integer, ClaimUpdater> updater = Config.createHashMap(map -> map.put(2, claim -> claim.globalPerm.put(PermissionRegistry.LOCKITEMS, true)));
static void updateClaim(Claim claim) {
updater.entrySet().stream().filter(e -> e.getKey() > ConfigHandler.config.preConfigVersion).map(Map.Entry::getValue)

View File

@ -91,7 +91,7 @@ public class ClaimStorage implements IPermissionStorage {
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)) {
player.displayClientMessage(PermHelper.simpleColoredText(String.format(ConfigHandler.lang.maxClaims), ChatFormatting.RED), false);
player.displayClientMessage(PermHelper.simpleColoredText(ConfigHandler.lang.maxClaims, ChatFormatting.RED), false);
return false;
}
if (!data.isAdminIgnoreClaim() && !data.canUseClaimBlocks(claim.getPlane())) {

View File

@ -11,16 +11,11 @@ import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
public class GlobalClaim implements IPermissionContainer {
private final ServerLevel world;
public GlobalClaim(ServerLevel world) {
this.world = world;
}
public record GlobalClaim(ServerLevel world) implements IPermissionContainer {
@Override
public boolean canInteract(ServerPlayer player, ClaimPermission perm, BlockPos pos, boolean message) {
message = message && player.getClass().equals(ServerPlayer.class); //dont send messages to fake players
Config.GlobalType global = ConfigHandler.config.getGlobal(this.world, perm);
if (global != Config.GlobalType.NONE && (player == null || !PlayerClaimData.get(player).isAdminIgnoreClaim())) {
if (global.getValue())

View File

@ -487,8 +487,7 @@ public class CommandClaim {
private static int adminDeleteAll(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
CommandSourceStack src = context.getSource();
if (src.getEntity() instanceof ServerPlayer) {
ServerPlayer player = (ServerPlayer) src.getEntity();
if (src.getEntity() instanceof ServerPlayer player) {
PlayerClaimData data = PlayerClaimData.get(player);
if (!data.confirmedDeleteAll()) {
data.setConfirmDeleteAll(true);
@ -634,34 +633,22 @@ public class CommandClaim {
}
private static int editGlobalPerm(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
int mode = 0;
switch (StringArgumentType.getString(context, "toggle")) {
case "true":
mode = 1;
break;
case "false":
mode = 0;
break;
case "default":
mode = -1;
break;
}
int mode = switch (StringArgumentType.getString(context, "toggle")) {
case "true" -> 1;
case "false" -> 0;
case "default" -> -1;
default -> 0;
};
return editPerms(context, null, mode);
}
private static int editGroupPerm(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
int mode = 0;
switch (StringArgumentType.getString(context, "toggle")) {
case "true":
mode = 1;
break;
case "false":
mode = 0;
break;
case "default":
mode = -1;
break;
}
int mode = switch (StringArgumentType.getString(context, "toggle")) {
case "true" -> 1;
case "false" -> 0;
case "default" -> -1;
default -> 0;
};
return editPerms(context, StringArgumentType.getString(context, "group"), mode);
}
@ -706,18 +693,12 @@ public class CommandClaim {
private static int editPersonalPerm(CommandContext<CommandSourceStack> context) throws CommandSyntaxException {
ServerPlayer player = context.getSource().getPlayerOrException();
String group = StringArgumentType.getString(context, "group");
int mode = 0;
switch (StringArgumentType.getString(context, "toggle")) {
case "true":
mode = 1;
break;
case "false":
mode = 0;
break;
case "default":
mode = -1;
break;
}
int mode = switch (StringArgumentType.getString(context, "toggle")) {
case "true" -> 1;
case "false" -> 0;
case "default" -> -1;
default -> 0;
};
ClaimPermission perm;
String p = StringArgumentType.getString(context, "permission");
try {

View File

@ -43,9 +43,8 @@ public class BlockInteractEvents {
}
public static boolean breakBlocks(Level world, Player p, BlockPos pos, BlockState state, BlockEntity tile) {
if (world.isClientSide || p.isSpectator())
if (!(p instanceof ServerPlayer player) || p.isSpectator())
return true;
ServerPlayer player = (ServerPlayer) p;
ClaimStorage storage = ClaimStorage.get((ServerLevel) world);
IPermissionContainer claim = storage.getForPermissionCheck(pos);
if (claim != null) {
@ -62,9 +61,8 @@ public class BlockInteractEvents {
//Right click block
public static InteractionResult useBlocks(Player p, Level world, InteractionHand hand, BlockHitResult hitResult) {
if (world.isClientSide)
if (!(p instanceof ServerPlayer player))
return InteractionResult.PASS;
ServerPlayer player = (ServerPlayer) p;
ItemStack stack = player.getItemInHand(hand);
if (stack.getItem() == ConfigHandler.config.claimingItem) {
ItemInteractEvents.claimLandHandling(player, hitResult.getBlockPos());

View File

@ -63,7 +63,7 @@ public class EntityInteractEvents {
}
public static InteractionResult useAtEntity(Player player, Level world, InteractionHand hand, Entity entity, /* Nullable */ EntityHitResult hitResult) {
if (player.level.isClientSide || player.isSpectator() || canInteract(entity))
if (!(player instanceof ServerPlayer) || player.isSpectator() || canInteract(entity))
return InteractionResult.PASS;
ClaimStorage storage = ClaimStorage.get((ServerLevel) world);
BlockPos pos = entity.blockPosition();
@ -78,9 +78,8 @@ public class EntityInteractEvents {
}
public static InteractionResult useEntity(Player p, Level world, InteractionHand hand, Entity entity) {
if (p.level.isClientSide || p.isSpectator() || canInteract(entity))
if (!(p instanceof ServerPlayer player) || p.isSpectator() || canInteract(entity))
return InteractionResult.PASS;
ServerPlayer player = (ServerPlayer) p;
ClaimStorage storage = ClaimStorage.get((ServerLevel) world);
BlockPos pos = entity.blockPosition();
IPermissionContainer claim = storage.getForPermissionCheck(pos);
@ -96,8 +95,7 @@ public class EntityInteractEvents {
return claim.canInteract(player, PermissionRegistry.TRADING, pos, true) ? InteractionResult.PASS : InteractionResult.FAIL;
if (entity instanceof ItemFrame)
return claim.canInteract(player, PermissionRegistry.ITEMFRAMEROTATE, pos, true) ? InteractionResult.PASS : InteractionResult.FAIL;
if (entity instanceof TamableAnimal) {
TamableAnimal tame = (TamableAnimal) entity;
if (entity instanceof TamableAnimal tame) {
if (tame.isOwnedBy(player))
return InteractionResult.PASS;
}
@ -117,8 +115,7 @@ public class EntityInteractEvents {
if (proj.level.isClientSide)
return false;
Entity owner = proj.getOwner();
if (owner instanceof ServerPlayer) {
ServerPlayer player = (ServerPlayer) owner;
if (owner instanceof ServerPlayer player) {
if (res.getType() == HitResult.Type.BLOCK) {
BlockHitResult blockRes = (BlockHitResult) res;
BlockPos pos = blockRes.getBlockPos();
@ -138,8 +135,7 @@ public class EntityInteractEvents {
return false;
boolean flag = !claim.canInteract(player, perm, pos, true);
if (flag) {
if (proj instanceof AbstractArrow) {
AbstractArrow pers = (AbstractArrow) proj;
if (proj instanceof AbstractArrow pers) {
((IPersistentProjectileVars) pers).setInBlockState(pers.level.getBlockState(pos));
Vec3 vec3d = blockRes.getLocation().subtract(pers.getX(), pers.getY(), pers.getZ());
pers.setDeltaMovement(vec3d);
@ -168,8 +164,7 @@ public class EntityInteractEvents {
}
Entity hit = ((EntityHitResult) res).getEntity();
boolean fail = attackSimple(player, hit, true) != InteractionResult.PASS;
if (fail && proj instanceof AbstractArrow && ((AbstractArrow) proj).getPierceLevel() > 0) {
AbstractArrow pers = (AbstractArrow) proj;
if (fail && proj instanceof AbstractArrow pers && ((AbstractArrow) proj).getPierceLevel() > 0) {
IntOpenHashSet pierced = ((IPersistentProjectileVars) pers).getPiercedEntities();
if (pierced == null)
pierced = new IntOpenHashSet(5);
@ -194,11 +189,10 @@ public class EntityInteractEvents {
}
public static InteractionResult attackSimple(Player p, Entity entity, boolean message) {
if (p.level.isClientSide || p.isSpectator() || canInteract(entity))
if (!(p instanceof ServerPlayer player) || p.isSpectator() || canInteract(entity))
return InteractionResult.PASS;
if (entity instanceof Enemy)
return InteractionResult.PASS;
ServerPlayer player = (ServerPlayer) p;
ClaimStorage storage = ClaimStorage.get(player.getLevel());
BlockPos pos = entity.blockPosition();
IPermissionContainer claim = storage.getForPermissionCheck(pos);
@ -224,8 +218,7 @@ public class EntityInteractEvents {
}
public static boolean canCollideWith(Player player, Entity entity) {
if (player instanceof ServerPlayer) {
ServerPlayer sPlayer = (ServerPlayer) player;
if (player instanceof ServerPlayer sPlayer) {
if (entity instanceof ItemEntity) {
IOwnedItem ownedItem = (IOwnedItem) entity;
if (ownedItem.getDeathPlayer() != null) {
@ -329,7 +322,7 @@ public class EntityInteractEvents {
if (!currentClaim.canInteract(player, PermissionRegistry.CANSTAY, bPos, true)) {
Claim sub = currentClaim.getSubClaim(bPos);
Vec3 tp = TeleportUtils.getTeleportPos(player, pos, storage, sub != null ? sub.getDimensions() : currentClaim.getDimensions(), true, bPos, (claim, nPos) -> claim.canInteract(player, PermissionRegistry.CANSTAY, nPos, false));
if(player.isPassenger())
if (player.isPassenger())
player.stopRiding();
player.teleportToWithTicket(tp.x(), tp.y(), tp.z());
}

View File

@ -43,9 +43,8 @@ import java.util.Set;
public class ItemInteractEvents {
public static InteractionResultHolder<ItemStack> useItem(Player p, Level world, InteractionHand hand) {
if (world.isClientSide || p.isSpectator())
if (!(p instanceof ServerPlayer player) || p.isSpectator())
return InteractionResultHolder.pass(p.getItemInHand(hand));
ServerPlayer player = (ServerPlayer) p;
ItemStack stack = player.getItemInHand(hand);
if (stack.getItem() == ConfigHandler.config.claimingItem) {
HitResult ray = player.pick(64, 0, false);
@ -96,8 +95,7 @@ public class ItemInteractEvents {
private static final Set<Item> blackListedItems = Sets.newHashSet(Items.COMPASS, Items.FILLED_MAP, Items.FIREWORK_ROCKET);
public static InteractionResult onItemUseBlock(UseOnContext context) {
//Check for Fakeplayer. Since there is no api for that directly check the class
if (!(context.getPlayer() instanceof ServerPlayer) || !context.getPlayer().getClass().equals(ServerPlayer.class) || context.getItemInHand().isEmpty())
if (!(context.getPlayer() instanceof ServerPlayer player) || context.getItemInHand().isEmpty())
return InteractionResult.PASS;
ClaimStorage storage = ClaimStorage.get((ServerLevel) context.getLevel());
BlockPos placePos = new BlockPlaceContext(context).getClickedPos();
@ -107,7 +105,6 @@ public class ItemInteractEvents {
if (blackListedItems.contains(context.getItemInHand().getItem()))
return InteractionResult.PASS;
boolean actualInClaim = !(claim instanceof Claim) || placePos.getY() >= ((Claim) claim).getDimensions()[4];
ServerPlayer player = (ServerPlayer) context.getPlayer();
ClaimPermission perm = ObjectToPermissionMap.getFromItem(context.getItemInHand().getItem());
if (perm != null) {
if (claim.canInteract(player, perm, placePos, false))

View File

@ -81,10 +81,9 @@ public class WorldEvents {
}
public static boolean lightningFire(LightningBolt lightning) {
if (!(lightning.level instanceof ServerLevel))
if (!(lightning.level instanceof ServerLevel world))
return true;
BlockPos.MutableBlockPos mutable = lightning.blockPosition().mutable();
ServerLevel world = (ServerLevel) lightning.level;
for (int x = -1; x <= 1; x++)
for (int z = -1; z <= 1; z++) {
mutable.set(mutable.getX() + x, mutable.getY(), mutable.getZ() + z);

View File

@ -48,48 +48,47 @@ public class ClaimMenuScreenHandler extends ServerOnlyScreenHandler<Claim> {
protected void fillInventoryWith(Player player, SeparateInv inv, Claim claim) {
for (int i = 0; i < 9; i++) {
switch (i) {
case 0:
case 0 -> {
ItemStack close = new ItemStack(Items.TNT);
close.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenClose, ChatFormatting.DARK_RED));
inv.updateStack(i, close);
break;
case 2:
}
case 2 -> {
ItemStack perm = new ItemStack(Items.BEACON);
perm.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenMenuGlobal, ChatFormatting.GOLD));
if (player instanceof ServerPlayer && !this.hasEditPerm(claim, (ServerPlayer) player))
ServerScreenHelper.addLore(perm, ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNoPerm, ChatFormatting.DARK_RED));
inv.updateStack(i, perm);
break;
case 3:
}
case 3 -> {
ItemStack group = new ItemStack(Items.WRITABLE_BOOK);
group.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenMenuGroup, ChatFormatting.GOLD));
if (player instanceof ServerPlayer && !this.hasEditPerm(claim, (ServerPlayer) player))
ServerScreenHelper.addLore(group, ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNoPerm, ChatFormatting.DARK_RED));
inv.updateStack(i, group);
break;
case 4:
}
case 4 -> {
ItemStack potions = new ItemStack(Items.POTION);
potions.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenMenuPotion, ChatFormatting.GOLD));
if (player instanceof ServerPlayer && !this.hasPerm(claim, (ServerPlayer) player, PermissionRegistry.EDITPOTIONS))
ServerScreenHelper.addLore(potions, ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNoPerm, ChatFormatting.DARK_RED));
inv.updateStack(i, potions);
break;
case 5:
}
case 5 -> {
ItemStack sign = new ItemStack(Items.OAK_SIGN);
sign.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenMenuClaimText, ChatFormatting.GOLD));
if (player instanceof ServerPlayer && !this.hasPerm(claim, (ServerPlayer) player, PermissionRegistry.EDITCLAIM))
ServerScreenHelper.addLore(sign, ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNoPerm, ChatFormatting.DARK_RED));
inv.updateStack(i, sign);
break;
case 8:
}
case 8 -> {
ItemStack delete = new ItemStack(Items.BARRIER);
delete.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenMenuDelete, ChatFormatting.RED));
if (player instanceof ServerPlayer && !this.hasPerm(claim, (ServerPlayer) player, PermissionRegistry.EDITCLAIM))
ServerScreenHelper.addLore(delete, ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNoPerm, ChatFormatting.DARK_RED));
inv.updateStack(i, delete);
break;
default:
inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
default -> inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
}
}

View File

@ -51,41 +51,40 @@ public class ClaimTextHandler extends ServerOnlyScreenHandler<Claim> {
protected void fillInventoryWith(Player player, SeparateInv inv, Claim claim) {
for (int i = 0; i < 9; i++) {
switch (i) {
case 0:
case 0 -> {
ItemStack close = new ItemStack(Items.TNT);
close.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenBack, ChatFormatting.DARK_RED));
inv.updateStack(i, close);
break;
case 2:
}
case 2 -> {
ItemStack stack = new ItemStack(Items.OAK_SIGN);
stack.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenEnterText, ChatFormatting.GOLD));
if (claim.enterTitle != null)
ServerScreenHelper.addLore(stack, claim.enterTitle);
inv.updateStack(i, stack);
break;
case 3:
}
case 3 -> {
ItemStack stack2 = new ItemStack(Items.OAK_SIGN);
stack2.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenEnterSubText, ChatFormatting.GOLD));
if (claim.enterSubtitle != null)
ServerScreenHelper.addLore(stack2, claim.enterSubtitle);
inv.updateStack(i, stack2);
break;
case 4:
}
case 4 -> {
ItemStack stack3 = new ItemStack(Items.OAK_SIGN);
stack3.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenLeaveText, ChatFormatting.GOLD));
if (claim.leaveTitle != null)
ServerScreenHelper.addLore(stack3, claim.leaveTitle);
inv.updateStack(i, stack3);
break;
case 5:
}
case 5 -> {
ItemStack stack4 = new ItemStack(Items.OAK_SIGN);
stack4.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenLeaveSubText, ChatFormatting.GOLD));
if (claim.leaveSubtitle != null)
ServerScreenHelper.addLore(stack4, claim.leaveSubtitle);
inv.updateStack(i, stack4);
break;
default:
inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
default -> inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
}
}
@ -102,21 +101,13 @@ public class ClaimTextHandler extends ServerOnlyScreenHandler<Claim> {
player.getServer().execute(() -> ClaimMenuScreenHandler.openClaimMenu(player, this.claim));
ServerScreenHelper.playSongToPlayer(player, SoundEvents.UI_BUTTON_CLICK, 1, 1f);
} else {
Consumer<Component> cons = null;
switch (index) {
case 2:
cons = text -> this.claim.setEnterTitle(text, this.claim.enterSubtitle);
break;
case 3:
cons = text -> this.claim.setEnterTitle(this.claim.enterTitle, text);
break;
case 4:
cons = text -> this.claim.setLeaveTitle(text, this.claim.leaveSubtitle);
break;
case 5:
cons = text -> this.claim.setLeaveTitle(this.claim.leaveTitle, text);
break;
}
Consumer<Component> cons = switch (index) {
case 2 -> text -> this.claim.setEnterTitle(text, this.claim.enterSubtitle);
case 3 -> text -> this.claim.setEnterTitle(this.claim.enterTitle, text);
case 4 -> text -> this.claim.setLeaveTitle(text, this.claim.leaveSubtitle);
case 5 -> text -> this.claim.setLeaveTitle(this.claim.leaveTitle, text);
default -> null;
};
if (cons != null) {
player.closeContainer();
Consumer<Component> finalCons = cons;

View File

@ -45,18 +45,17 @@ public class ConfirmScreenHandler extends ServerOnlyScreenHandler<Object> {
protected void fillInventoryWith(Player player, SeparateInv inv, Object additionalData) {
for (int i = 0; i < 9; i++) {
switch (i) {
case 3:
case 3 -> {
ItemStack yes = new ItemStack(Items.GREEN_WOOL);
yes.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenYes, ChatFormatting.GREEN));
inv.updateStack(i, yes);
break;
case 5:
}
case 5 -> {
ItemStack no = new ItemStack(Items.RED_WOOL);
no.setHoverName(ServerScreenHelper.coloredGuiText(ConfigHandler.lang.screenNo, ChatFormatting.RED));
inv.updateStack(i, no);
break;
default:
inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
default -> inv.updateStack(i, ServerScreenHelper.emptyFiller());
}
}
}
@ -69,12 +68,8 @@ public class ConfirmScreenHandler extends ServerOnlyScreenHandler<Object> {
@Override
protected boolean handleSlotClicked(ServerPlayer player, int index, Slot slot, int clickType) {
switch (index) {
case 3:
this.cons.accept(true);
break;
case 5:
this.cons.accept(false);
break;
case 3 -> this.cons.accept(true);
case 5 -> this.cons.accept(false);
}
return true;
}

View File

@ -18,7 +18,6 @@ import net.minecraft.world.item.ItemStack;
public abstract class ServerOnlyScreenHandler<T> extends AbstractContainerMenu {
private final SeparateInvImpl inventory;
private boolean update = true;
protected ServerOnlyScreenHandler(int syncId, Inventory playerInventory, int rows, T additionalData) {
super(fromRows(rows), syncId);
@ -65,19 +64,14 @@ public abstract class ServerOnlyScreenHandler<T> extends AbstractContainerMenu {
}
private static MenuType<ChestMenu> fromRows(int rows) {
switch (rows) {
case 2:
return MenuType.GENERIC_9x2;
case 3:
return MenuType.GENERIC_9x3;
case 4:
return MenuType.GENERIC_9x4;
case 5:
return MenuType.GENERIC_9x5;
case 6:
return MenuType.GENERIC_9x6;
}
return MenuType.GENERIC_9x1;
return switch (rows) {
case 2 -> MenuType.GENERIC_9x2;
case 3 -> MenuType.GENERIC_9x3;
case 4 -> MenuType.GENERIC_9x4;
case 5 -> MenuType.GENERIC_9x5;
case 6 -> MenuType.GENERIC_9x6;
default -> MenuType.GENERIC_9x1;
};
}
protected abstract void fillInventoryWith(Player player, SeparateInv inv, T additionalData);
@ -112,24 +106,6 @@ public abstract class ServerOnlyScreenHandler<T> extends AbstractContainerMenu {
return slot.getItem().copy();
}
/*@Override
public void addSlotListener(ContainerListener listener) {
this.update = false;
super.addSlotListener(listener);
if (!this.listeners.contains(listener)) {
this.listeners.add(listener);
listener.refreshContainer(this, this.getItems());
this.update = true;
this.broadcastChanges();
}
}*/
@Override
public void broadcastChanges() {
//if (this.update)
super.broadcastChanges();
}
protected abstract boolean isRightSlot(int slot);
/**

View File

@ -53,30 +53,18 @@ public class ServerScreenHelper {
if (claim.parentClaim() == null)
permFlag = "" + (claim.permEnabled(perm) == 1);
else {
switch (claim.permEnabled(perm)) {
case -1:
permFlag = ConfigHandler.lang.screenDefault;
break;
case 1:
permFlag = ConfigHandler.lang.screenTrue;
break;
default:
permFlag = ConfigHandler.lang.screenFalse;
break;
}
permFlag = switch (claim.permEnabled(perm)) {
case -1 -> ConfigHandler.lang.screenDefault;
case 1 -> ConfigHandler.lang.screenTrue;
default -> ConfigHandler.lang.screenFalse;
};
}
} else {
switch (claim.groupHasPerm(group, perm)) {
case -1:
permFlag = ConfigHandler.lang.screenDefault;
break;
case 1:
permFlag = ConfigHandler.lang.screenTrue;
break;
default:
permFlag = ConfigHandler.lang.screenFalse;
break;
}
permFlag = switch (claim.groupHasPerm(group, perm)) {
case -1 -> ConfigHandler.lang.screenDefault;
case 1 -> ConfigHandler.lang.screenTrue;
default -> ConfigHandler.lang.screenFalse;
};
}
Component text = ServerScreenHelper.coloredGuiText(String.format(ConfigHandler.lang.screenEnableText, permFlag), permFlag.equals(ConfigHandler.lang.screenTrue) ? ChatFormatting.GREEN : ChatFormatting.RED);
lore.add(text);

View File

@ -71,9 +71,8 @@ public class StringResultScreenHandler extends AnvilMenu {
@Override
public void clicked(int i, int j, ClickType actionType, Player playerEntity) {
if (i < 0 || !(playerEntity instanceof ServerPlayer))
if (i < 0 || !(playerEntity instanceof ServerPlayer player))
return;
ServerPlayer player = (ServerPlayer) playerEntity;
Slot slot = this.slots.get(i);
if (((AbstractContainerAccessor) this).containerSync() != null)
((AbstractContainerAccessor) this).containerSync().sendCarriedChange(this, this.getCarried().copy());
@ -105,15 +104,6 @@ public class StringResultScreenHandler extends AnvilMenu {
this.broadcastChanges();
return ItemStack.EMPTY;
}
/*
@Override
public void addSlotListener(ContainerListener listener) {
if (!this.listeners.contains(listener)) {
this.listeners.add(listener);
listener.refreshContainer(this, this.getItems());
this.broadcastChanges();
}
}*/
@Override
public void broadcastChanges() {

View File

@ -29,16 +29,6 @@ public abstract class PlayerClaimMixin implements IPlayerClaimImpl {
this.flanClaimData = new PlayerClaimData((ServerPlayer) (Object) this);
}
/*@Inject(method = "readCustomDataFromTag", at = @At("RETURN"))
private void readData(CompoundTag tag, CallbackInfo info) {
this.claimData.read(this.server);
}
@Inject(method = "writeCustomDataToTag", at = @At("RETURN"))
private void writeData(CompoundTag tag, CallbackInfo info) {
this.claimData.save(this.server);
}*/
@Inject(method = "tick", at = @At("HEAD"))
private void tickData(CallbackInfo info) {
this.flanClaimData.tick(this.flanCurrentClaim, claim -> this.flanCurrentClaim = claim);

View File

@ -38,22 +38,22 @@ public class ClaimDisplay {
this.type = type;
this.height = Math.max(1 + claim.getWorld().getMinBuildHeight(), y);
switch (type) {
case SUB:
case SUB -> {
this.corner = ParticleIndicators.SUBCLAIMCORNER;
this.middle = ParticleIndicators.SUBCLAIMMIDDLE;
break;
case CONFLICT:
}
case CONFLICT -> {
this.corner = ParticleIndicators.OVERLAPCLAIM;
this.middle = ParticleIndicators.OVERLAPCLAIM;
break;
case EDIT:
}
case EDIT -> {
this.corner = ParticleIndicators.EDITCLAIMCORNER;
this.middle = ParticleIndicators.EDITCLAIMMIDDLE;
break;
default:
}
default -> {
this.corner = ParticleIndicators.CLAIMCORNER;
this.middle = ParticleIndicators.CLAIMMIDDLE;
break;
}
}
}

View File

@ -159,8 +159,7 @@ public class PlayerClaimData implements IPlayerData {
}
public void addDisplayClaim(IPermissionContainer cont, EnumDisplayType type, int height) {
if (cont instanceof Claim) {
Claim claim = (Claim) cont;
if (cont instanceof Claim claim) {
this.displayToAdd.add(new ClaimDisplay(claim, type, height));
if (type == EnumDisplayType.MAIN)
for (Claim sub : claim.getAllSubclaims())
@ -306,7 +305,7 @@ public class PlayerClaimData implements IPlayerData {
tpTo.set(tpTo.getX(), tpTo.getY() + 1, tpTo.getZ());
} else
tpTo.set(tpTo.getX(), yHighest, tpTo.getZ());
if(this.player.isPassenger())
if (this.player.isPassenger())
this.player.stopRiding();
this.player.teleportToWithTicket(tpTo.getX() + 0.5, tpTo.getY(), tpTo.getZ() + 0.5);
this.tpPos = null;
@ -314,7 +313,7 @@ public class PlayerClaimData implements IPlayerData {
Vec3 tp = TeleportUtils.getTeleportPos(this.player, this.player.position(), ClaimStorage.get(this.player.getLevel()),
((IPlayerClaimImpl) this.player).getCurrentClaim().getDimensions(),
TeleportUtils.roundedBlockPos(this.player.position()).mutable(), (claim, nPos) -> false);
if(this.player.isPassenger())
if (this.player.isPassenger())
this.player.stopRiding();
this.player.teleportToWithTicket(tp.x(), tp.y(), tp.z());
}
@ -454,9 +453,7 @@ public class PlayerClaimData implements IPlayerData {
}
public static void updateScoreFor(ServerPlayer player, ObjectiveCriteria criterion, int val) {
player.getScoreboard().forAllObjectives(criterion, player.getScoreboardName(), (scoreboardPlayerScore) -> {
scoreboardPlayerScore.setScore(val);
});
player.getScoreboard().forAllObjectives(criterion, player.getScoreboardName(), (scoreboardPlayerScore) -> scoreboardPlayerScore.setScore(val));
}
public static void editForOfflinePlayer(MinecraftServer server, UUID uuid, int additionalClaimBlocks) {

View File

@ -43,18 +43,10 @@ public class TeleportUtils {
}
int[] newDim = claim.getDimensions();
switch (pos.getA()) {
case NORTH:
dim[2] = newDim[2];
break;
case SOUTH:
dim[3] = newDim[3];
break;
case EAST:
dim[1] = newDim[1];
break;
default:
dim[0] = newDim[0];
break;
case NORTH -> dim[2] = newDim[2];
case SOUTH -> dim[3] = newDim[3];
case EAST -> dim[1] = newDim[1];
default -> dim[0] = newDim[0];
}
return getTeleportPos(player, playerPos, storage, dim, checkSub, bPos, check);
}

View File

@ -4,13 +4,7 @@ import io.github.flemmli97.flan.SimpleRegistryWrapper;
import net.minecraft.core.Registry;
import net.minecraft.resources.ResourceLocation;
public class FabricRegistryWrapper<T> implements SimpleRegistryWrapper<T> {
private final Registry<T> delegate;
public FabricRegistryWrapper(Registry<T> delegate) {
this.delegate = delegate;
}
public record FabricRegistryWrapper<T>(Registry<T> delegate) implements SimpleRegistryWrapper<T> {
@Override
public T getFromId(ResourceLocation id) {

View File

@ -15,8 +15,7 @@ public class PermissionNodeHandlerImpl {
return Permissions.check(src, perm, ConfigHandler.config.permissionLevel);
return Permissions.check(src, perm, true);
}
if (Flan.ftbRanks && src.getEntity() instanceof ServerPlayer) {
ServerPlayer player = (ServerPlayer) src.getEntity();
if (Flan.ftbRanks && src.getEntity() instanceof ServerPlayer player) {
return FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || player.hasPermissions(ConfigHandler.config.permissionLevel));
}
return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel);

View File

@ -5,13 +5,8 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.registries.IForgeRegistry;
import net.minecraftforge.registries.IForgeRegistryEntry;
public class ForgeRegistryWrapper<T extends IForgeRegistryEntry<T>> implements SimpleRegistryWrapper<T> {
private final IForgeRegistry<T> registry;
public ForgeRegistryWrapper(IForgeRegistry<T> registry) {
this.registry = registry;
}
public record ForgeRegistryWrapper<T extends IForgeRegistryEntry<T>>(
IForgeRegistry<T> registry) implements SimpleRegistryWrapper<T> {
@Override
public T getFromId(ResourceLocation id) {

View File

@ -8,9 +8,8 @@ import net.minecraft.server.level.ServerPlayer;
public class PermissionNodeHandlerImpl {
public static boolean perm(CommandSourceStack src, String perm, boolean adminCmd) {
if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayer))
if (!Flan.ftbRanks || !(src.getEntity() instanceof ServerPlayer player))
return !adminCmd || src.hasPermission(ConfigHandler.config.permissionLevel);
ServerPlayer player = (ServerPlayer) src.getEntity();
return /*FTBRanksAPI.getPermissionValue(player, perm).asBoolean().orElse(!adminCmd || */player.hasPermissions(ConfigHandler.config.permissionLevel);
}