mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-29 18:45:26 +02:00
Merge branch 'v6' into chore/v6/deprecate-static-permissions-class
This commit is contained in:
@@ -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/")
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
|
||||
/**
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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();
|
||||
});
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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();
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
|
@@ -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 "";
|
||||
}
|
||||
|
||||
}
|
@@ -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())) {
|
||||
|
Reference in New Issue
Block a user