Merge branch 'v6' into chore/v6/deprecate-static-permissions-class

This commit is contained in:
Alexander Brandes
2022-06-26 11:17:35 +02:00
committed by GitHub
20 changed files with 345 additions and 349 deletions

View File

@@ -43,6 +43,7 @@ dependencies {
api(libs.cloudServices)
api(libs.arkitektonika)
api("com.intellectualsites.paster:Paster")
api("com.intellectualsites.informative-annotations:informative-annotations")
}
tasks.processResources {
@@ -62,5 +63,6 @@ tasks {
opt.links("https://jd.adventure.kyori.net/api/4.9.3/")
opt.links("https://google.github.io/guice/api-docs/" + libs.guice.get().versionConstraint.toString() + "/javadoc/")
opt.links("https://checkerframework.org/api/")
opt.links("https://javadoc.io/doc/com.intellectualsites.informative-annotations/informative-annotations/latest/")
}
}

View File

@@ -22,6 +22,7 @@ import cloud.commandframework.services.ServicePipeline;
import com.google.inject.Injector;
import com.google.inject.Key;
import com.google.inject.TypeLiteral;
import com.intellectualsites.annotations.DoNotUse;
import com.plotsquared.core.backup.BackupManager;
import com.plotsquared.core.configuration.caption.LocaleHolder;
import com.plotsquared.core.generator.GeneratorWrapper;
@@ -33,7 +34,6 @@ import com.plotsquared.core.permissions.PermissionHandler;
import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.world.PlotAreaManager;
import com.plotsquared.core.queue.GlobalBlockQueue;
import com.plotsquared.core.util.AnnotationHelper;
import com.plotsquared.core.util.ChunkManager;
import com.plotsquared.core.util.EconHandler;
import com.plotsquared.core.util.PlatformWorldManager;
@@ -308,7 +308,7 @@ public interface PlotPlatform<P> extends LocaleHolder {
* @return worldedit implementations
* @since 6.3.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only")
@DoNotUse
@NonNull String worldEditImplementations();
/**

View File

@@ -20,6 +20,7 @@ package com.plotsquared.core.generator;
import com.google.inject.Inject;
import com.google.inject.assistedinject.Assisted;
import com.intellectualsites.annotations.DoNotUse;
import com.plotsquared.core.PlotSquared;
import com.plotsquared.core.configuration.ConfigurationSection;
import com.plotsquared.core.configuration.Settings;
@@ -33,7 +34,6 @@ import com.plotsquared.core.plot.PlotId;
import com.plotsquared.core.plot.PlotManager;
import com.plotsquared.core.plot.schematic.Schematic;
import com.plotsquared.core.queue.GlobalBlockQueue;
import com.plotsquared.core.util.AnnotationHelper;
import com.plotsquared.core.util.FileUtils;
import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.SchematicHandler;
@@ -531,7 +531,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
*
* @since 6.9.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public @Nullable List<Entity> getPlotSchematicEntities() {
return schem3Entities;
}
@@ -541,7 +541,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
*
* @since 6.9.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public @Nullable BlockVector3 getPlotSchematicMinPoint() {
return schem3MinPoint;
}
@@ -551,7 +551,7 @@ public class HybridPlotWorld extends ClassicPlotWorld {
*
* @since 6.9.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public boolean populationNeeded() {
return schem1PopulationNeeded || schem2PopulationNeeded || schem3PopulationNeeded;
}

View File

@@ -189,13 +189,13 @@ public class HybridUtils {
if (X == ctx) {
maxX = tx & 15;
} else {
maxX = 16;
maxX = 15;
}
int maxZ;
if (Z == ctz) {
maxZ = tz & 15;
} else {
maxZ = 16;
maxZ = 15;
}
int chunkBlockX = X << 4;
@@ -221,7 +221,7 @@ public class HybridUtils {
}
});
final Runnable run = () -> TaskManager.runTaskAsync(() -> {
final Runnable run = () -> {
int size = width * length;
int[] changes = new int[size];
int[] faces = new int[size];
@@ -296,7 +296,7 @@ public class HybridUtils {
analysis.variety_sd = (int) (MathMan.getSD(variety, analysis.variety) * 100);
whenDone.value = analysis;
whenDone.run();
});
};
queue.setCompleteTask(run);
queue.enqueue();
});

View File

@@ -18,7 +18,7 @@
*/
package com.plotsquared.core.location;
import com.plotsquared.core.util.AnnotationHelper;
import com.intellectualsites.annotations.DoNotUse;
import com.sk89q.worldedit.math.BlockVector3;
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -28,7 +28,7 @@ import org.checkerframework.checker.nullness.qual.NonNull;
*
* @since 6.9.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public final class UncheckedWorldLocation extends Location {
private final String worldName;
@@ -54,7 +54,7 @@ public final class UncheckedWorldLocation extends Location {
*
* @since 6.9.0
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public static @NonNull UncheckedWorldLocation at(
final @NonNull String world, final int x, final int y, final int z
) {
@@ -62,7 +62,7 @@ public final class UncheckedWorldLocation extends Location {
}
@Override
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to changes at any time.")
@DoNotUse
public @NonNull String getWorldName() {
return this.worldName;
}

View File

@@ -36,6 +36,7 @@ import com.plotsquared.core.location.BlockLoc;
import com.plotsquared.core.location.Direction;
import com.plotsquared.core.location.Location;
import com.plotsquared.core.location.PlotLoc;
import com.plotsquared.core.permissions.Permission;
import com.plotsquared.core.player.ConsolePlayer;
import com.plotsquared.core.player.MetaDataAccess;
import com.plotsquared.core.player.PlayerMetaDataKeys;
@@ -48,6 +49,7 @@ import com.plotsquared.core.plot.flag.implementations.DoneFlag;
import com.plotsquared.core.queue.GlobalBlockQueue;
import com.plotsquared.core.queue.QueueCoordinator;
import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.Permissions;
import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.RegionUtil;
import com.plotsquared.core.util.StringMan;
@@ -624,6 +626,38 @@ public abstract class PlotArea {
getRegionAbs() == null || this.region.contains(location.getBlockVector3()));
}
/**
* Get if the {@code PlotArea}'s build range (min build height -> max build height) contains the given y value
*
* @param y y height
* @return if build height contains y
*/
public boolean buildRangeContainsY(int y) {
return y >= minBuildHeight && y < maxBuildHeight;
}
/**
* Utility method to check if the player is attempting to place blocks outside the build area, and notify of this if the
* player does not have permissions.
*
* @param player Player to check
* @param y y height to check
* @return true if outside build area with no permissions
* @since TODO
*/
public boolean notifyIfOutsideBuildArea(PlotPlayer<?> player, int y) {
if (!buildRangeContainsY(y) && !Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) {
player.sendMessage(
TranslatableCaption.of("height.height_limit"),
Template.of("minHeight", String.valueOf(minBuildHeight)),
Template.of("maxHeight", String.valueOf(maxBuildHeight))
);
// Return true if "failed" as the method will always be inverted otherwise
return true;
}
return false;
}
public @NonNull Set<Plot> getPlotsAbs(final UUID uuid) {
if (uuid == null) {
return Collections.emptySet();

View File

@@ -20,8 +20,8 @@ package com.plotsquared.core.plot.flag;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
import com.intellectualsites.annotations.NotPublic;
import com.plotsquared.core.configuration.caption.CaptionUtility;
import com.plotsquared.core.util.AnnotationHelper;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.checkerframework.checker.nullness.qual.NonNull;
@@ -32,7 +32,6 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
/**
* Container type for {@link PlotFlag plot flags}.
@@ -353,7 +352,7 @@ public class FlagContainer {
* @return a new Runnable that cleans up once the FlagContainer isn't needed anymore.
* @since 6.0.10
*/
@AnnotationHelper.ApiDescription(info = "This method should not be considered as public or API.")
@NotPublic
public Runnable createCleanupHook() {
return () -> GlobalFlagContainer.getInstance().unsubscribe(unknownsRef);
}

View File

@@ -18,8 +18,8 @@
*/
package com.plotsquared.core.queue;
import com.intellectualsites.annotations.DoNotUse;
import com.plotsquared.core.location.Location;
import com.plotsquared.core.util.AnnotationHelper;
import com.sk89q.jnbt.CompoundTag;
import com.sk89q.worldedit.function.pattern.Pattern;
import com.sk89q.worldedit.math.BlockVector3;
@@ -37,7 +37,7 @@ import org.checkerframework.checker.nullness.qual.Nullable;
* in {@link BlockArrayCacheScopedQueueCoordinator#setOffsetX(int)} and
* {@link BlockArrayCacheScopedQueueCoordinator#setOffsetZ(int)}
*/
@AnnotationHelper.ApiDescription(info = "Internal use only. Subject to change at any time and created for specific use cases.")
@DoNotUse
public class BlockArrayCacheScopedQueueCoordinator extends ScopedQueueCoordinator {
private final BlockState[][][] blockStates;

View File

@@ -1,55 +0,0 @@
/*
* PlotSquared, a land and world management plugin for Minecraft.
* Copyright (C) IntellectualSites <https://intellectualsites.com>
* Copyright (C) IntellectualSites team and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.plotsquared.core.util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.MODULE;
import static java.lang.annotation.ElementType.PACKAGE;
import static java.lang.annotation.ElementType.RECORD_COMPONENT;
import static java.lang.annotation.ElementType.TYPE;
/**
* @since 6.2.2
*/
@AnnotationHelper.ApiDescription(info = "An internal class for custom annotations." +
"This is in no form part of the API and is subject to change at any time.")
public final class AnnotationHelper {
private AnnotationHelper() {
}
@Documented
@Retention(RetentionPolicy.CLASS)
@Target(value = {METHOD, PACKAGE, MODULE, RECORD_COMPONENT, TYPE})
public @interface ApiDescription {
/**
* Returns additional information how to use a class for the API
*
* @return the version string
* @since 6.2.2
*/
String info() default "";
}
}

View File

@@ -19,6 +19,7 @@
package com.plotsquared.core.util;
import com.google.common.eventbus.EventBus;
import com.intellectualsites.annotations.DoNotUse;
import com.plotsquared.core.configuration.Settings;
import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.events.PlayerAutoPlotEvent;
@@ -81,8 +82,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@AnnotationHelper.ApiDescription(info = "This is an internal class used by PlotSquared to dispatch events." +
"This is in no form part of the API and is subject to change at any time.")
@DoNotUse
public class EventDispatcher {
private final EventBus eventBus = new EventBus("PlotSquaredEvents");
@@ -332,6 +332,15 @@ public class EventDispatcher {
) {
PlotArea area = location.getPlotArea();
assert area != null;
if (!area.buildRangeContainsY(location.getY()) && !Permissions
.hasPermission(player, Permission.PERMISSION_ADMIN_BUILD_HEIGHT_LIMIT)) {
player.sendMessage(
TranslatableCaption.of("height.height_limit"),
Template.of("minHeight", String.valueOf(area.getMinBuildHeight())),
Template.of("maxHeight", String.valueOf(area.getMaxBuildHeight()))
);
return false;
}
Plot plot = area.getPlot(location);
if (plot != null) {
if (plot.isAdded(player.getUUID())) {