mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-04 06:34:42 +02:00
Compare commits
16 Commits
6.10.4
...
fix/wrong-
Author | SHA1 | Date | |
---|---|---|---|
2633aa41a0 | |||
742d78a505 | |||
120bf37196 | |||
2a40a6b35e | |||
ea1f35b45a | |||
15e63378a7 | |||
f3bc504a6f | |||
3a8fae47a0 | |||
70cb1cd100 | |||
2067cc1670 | |||
e6338976dd | |||
90ebd5d5ed | |||
c973ee8649 | |||
c1543f034c | |||
6baf339ecb | |||
11906ef1c9 |
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
1
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -27,6 +27,7 @@ body:
|
||||
description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
|
||||
multiple: false
|
||||
options:
|
||||
- '1.19.3'
|
||||
- '1.19.2'
|
||||
- '1.19.1'
|
||||
- '1.19'
|
||||
|
@ -33,7 +33,6 @@ import org.bukkit.Chunk;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
@ -51,7 +50,7 @@ final class LegacyBlockStatePopulator extends BlockPopulator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populate(@NotNull final World world, @NotNull final Random random, @NotNull final Chunk source) {
|
||||
public void populate(@NonNull final World world, @NonNull final Random random, @NonNull final Chunk source) {
|
||||
int chunkMinX = source.getX() << 4;
|
||||
int chunkMinZ = source.getZ() << 4;
|
||||
PlotArea area = Location.at(world.getName(), chunkMinX, 0, chunkMinZ).getPlotArea();
|
||||
|
@ -71,6 +71,7 @@ import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.block.data.BlockData;
|
||||
import org.bukkit.block.data.type.Dispenser;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Fireball;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -100,7 +101,6 @@ import org.bukkit.event.block.EntityBlockFormEvent;
|
||||
import org.bukkit.event.block.LeavesDecayEvent;
|
||||
import org.bukkit.event.block.SpongeAbsorbEvent;
|
||||
import org.bukkit.event.world.StructureGrowEvent;
|
||||
import org.bukkit.material.Directional;
|
||||
import org.bukkit.projectiles.BlockProjectileSource;
|
||||
import org.bukkit.util.Vector;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
@ -926,6 +926,9 @@ public class BlockEventListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onBlockDispense(BlockDispenseEvent event) {
|
||||
if (!this.plotAreaManager.hasPlotArea(event.getBlock().getWorld().getName())) {
|
||||
return;
|
||||
}
|
||||
Material type = event.getItem().getType();
|
||||
switch (type.toString()) {
|
||||
case "SHULKER_BOX", "WHITE_SHULKER_BOX", "ORANGE_SHULKER_BOX", "MAGENTA_SHULKER_BOX", "LIGHT_BLUE_SHULKER_BOX",
|
||||
@ -937,7 +940,7 @@ public class BlockEventListener implements Listener {
|
||||
if (event.getBlock().getType() == Material.DROPPER) {
|
||||
return;
|
||||
}
|
||||
BlockFace targetFace = ((Directional) event.getBlock().getState().getData()).getFacing();
|
||||
BlockFace targetFace = ((Dispenser) event.getBlock().getBlockData()).getFacing();
|
||||
Location location = BukkitUtil.adapt(event.getBlock().getRelative(targetFace).getLocation());
|
||||
if (location.isPlotRoad()) {
|
||||
event.setCancelled(true);
|
||||
|
@ -36,8 +36,7 @@ import com.sk89q.worldedit.function.pattern.Pattern;
|
||||
import com.sk89q.worldedit.regions.CuboidRegion;
|
||||
import com.sk89q.worldedit.world.biome.BiomeType;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@ -46,10 +45,7 @@ public class FaweRegionManager extends BukkitRegionManager {
|
||||
private final FaweDelegateRegionManager delegate = new FaweDelegateRegionManager();
|
||||
|
||||
@Inject
|
||||
public FaweRegionManager(
|
||||
@NonNull WorldUtil worldUtil, @NonNull GlobalBlockQueue blockQueue, @NonNull
|
||||
ProgressSubscriberFactory subscriberFactory
|
||||
) {
|
||||
public FaweRegionManager(WorldUtil worldUtil, GlobalBlockQueue blockQueue, ProgressSubscriberFactory subscriberFactory) {
|
||||
super(worldUtil, blockQueue, subscriberFactory);
|
||||
}
|
||||
|
||||
@ -76,9 +72,9 @@ public class FaweRegionManager extends BukkitRegionManager {
|
||||
|
||||
@Override
|
||||
public boolean handleClear(
|
||||
@NotNull Plot plot,
|
||||
@NonNull Plot plot,
|
||||
@Nullable Runnable whenDone,
|
||||
@NotNull PlotManager manager,
|
||||
@NonNull PlotManager manager,
|
||||
final @Nullable PlotPlayer<?> player
|
||||
) {
|
||||
if (!Settings.FAWE_Components.CLEAR || !(manager instanceof HybridPlotManager)) {
|
||||
|
@ -29,7 +29,7 @@ import com.plotsquared.core.util.SchematicHandler;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.plotsquared.core.util.task.RunnableVal;
|
||||
import com.sk89q.jnbt.CompoundTag;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
@ -40,7 +40,7 @@ public class FaweSchematicHandler extends SchematicHandler {
|
||||
private final FaweDelegateSchematicHandler delegate = new FaweDelegateSchematicHandler();
|
||||
|
||||
@Inject
|
||||
public FaweSchematicHandler(@NotNull WorldUtil worldUtil, @NotNull ProgressSubscriberFactory subscriberFactory) {
|
||||
public FaweSchematicHandler(WorldUtil worldUtil, ProgressSubscriberFactory subscriberFactory) {
|
||||
super(worldUtil, subscriberFactory);
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ public class FaweSchematicHandler extends SchematicHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Schematic getSchematic(@NotNull InputStream is) {
|
||||
public Schematic getSchematic(@NonNull InputStream is) {
|
||||
return delegate.getSchematic(is);
|
||||
}
|
||||
|
||||
|
@ -142,14 +142,6 @@ public class Auto extends SubCommand {
|
||||
}
|
||||
}
|
||||
}
|
||||
int maxMerge = Permissions.hasPermissionRange(player, Permission.PERMISSION_MERGE, Settings.Limit.MAX_PLOTS);
|
||||
if (sizeX * sizeZ > maxMerge) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("permission.no_permission"),
|
||||
Template.of("node", Permission.PERMISSION_MERGE + "." + (sizeX * sizeZ))
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -124,7 +124,7 @@ public class Merge extends SubCommand {
|
||||
return false;
|
||||
}
|
||||
final int size = plot.getConnectedPlots().size();
|
||||
int max = Permissions.hasPermissionRange(player, Permission.PERMISSION_MERGE, Settings.Limit.MAX_PLOTS);
|
||||
int max = Permissions.hasPermissionRange(player, "plots.merge", Settings.Limit.MAX_PLOTS);
|
||||
PlotMergeEvent event =
|
||||
this.eventDispatcher.callMerge(plot, direction, max, player);
|
||||
if (event.getEventResult() == Result.DENY) {
|
||||
@ -282,7 +282,28 @@ public class Merge extends SubCommand {
|
||||
run.run();
|
||||
}
|
||||
}
|
||||
if (!force && !isOnline) {
|
||||
if (force || !isOnline) {
|
||||
if (force || Permissions.hasPermission(player, Permission.PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE)) {
|
||||
if (plot.getPlotModificationManager().autoMerge(direction, maxSize - size, uuids.iterator().next(), player, terrain)) {
|
||||
if (this.econHandler.isEnabled(plotArea) && price > 0d) {
|
||||
if (!force && this.econHandler.getMoney(player) < price) {
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("economy.cannot_afford_merge"),
|
||||
Template.of("money", this.econHandler.format(price))
|
||||
);
|
||||
return false;
|
||||
}
|
||||
this.econHandler.withdrawMoney(player, price);
|
||||
player.sendMessage(
|
||||
TranslatableCaption.of("economy.removed_balance"),
|
||||
Template.of("money", this.econHandler.format(price))
|
||||
);
|
||||
}
|
||||
player.sendMessage(TranslatableCaption.of("merge.success_merge"));
|
||||
eventDispatcher.callPostMerge(player, plot);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
player.sendMessage(TranslatableCaption.of("merge.no_available_automerge"));
|
||||
return false;
|
||||
}
|
||||
|
@ -21,16 +21,15 @@ package com.plotsquared.core.configuration.caption;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
|
||||
final class ClickStripTransform implements ComponentTransform {
|
||||
|
||||
private final Set<ClickEvent.@NotNull Action> actionsToStrip;
|
||||
private final Set<ClickEvent.@NonNull Action> actionsToStrip;
|
||||
|
||||
public ClickStripTransform(final Set<ClickEvent.@NotNull Action> actionsToStrip) {
|
||||
public ClickStripTransform(final Set<ClickEvent.@NonNull Action> actionsToStrip) {
|
||||
this.actionsToStrip = EnumSet.copyOf(actionsToStrip);
|
||||
}
|
||||
|
||||
|
@ -93,10 +93,10 @@ public class HybridPlotWorld extends ClassicPlotWorld {
|
||||
@Inject
|
||||
public HybridPlotWorld(
|
||||
@Assisted("world") final String worldName,
|
||||
@Nullable @Assisted("id") final String id,
|
||||
@javax.annotation.Nullable @Assisted("id") final String id,
|
||||
@Assisted final @NonNull IndependentPlotGenerator generator,
|
||||
@Nullable @Assisted("min") final PlotId min,
|
||||
@Nullable @Assisted("max") final PlotId max,
|
||||
@javax.annotation.Nullable @Assisted("min") final PlotId min,
|
||||
@javax.annotation.Nullable @Assisted("max") final PlotId max,
|
||||
@WorldConfig final @NonNull YamlConfiguration worldConfiguration,
|
||||
final @NonNull GlobalBlockQueue blockQueue
|
||||
) {
|
||||
|
@ -234,8 +234,19 @@ public class HybridUtils {
|
||||
Set<BlockType> types = new HashSet<>();
|
||||
for (int yIndex = 0; yIndex < height; yIndex++) {
|
||||
BlockState old = oldBlocks[yIndex][x][z]; // Nullable
|
||||
try {
|
||||
BlockState now = newBlocks[yIndex][x][z]; // Not null
|
||||
if (now == null) {
|
||||
throw new NullPointerException(String.format(
|
||||
"\"now\" block null attempting to perform plot analysis. Indexes: x=%d of %d, yIndex=%d" +
|
||||
" of %d, z=%d of %d",
|
||||
x,
|
||||
width,
|
||||
yIndex,
|
||||
height,
|
||||
z,
|
||||
length
|
||||
));
|
||||
}
|
||||
if (!now.equals(old) && !(old == null && now.getBlockType().equals(BlockTypes.AIR))) {
|
||||
changes[i]++;
|
||||
}
|
||||
@ -270,9 +281,6 @@ public class HybridUtils {
|
||||
}
|
||||
types.add(now.getBlockType());
|
||||
}
|
||||
} catch (NullPointerException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
variety[i] = types.size();
|
||||
i++;
|
||||
|
@ -114,26 +114,14 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
||||
end = pathWidthLower + squarePlotWorld.PLOT_WIDTH;
|
||||
}
|
||||
int size = squarePlotWorld.PLOT_WIDTH + squarePlotWorld.ROAD_WIDTH;
|
||||
int idx;
|
||||
if (x < 0) {
|
||||
idx = x / size;
|
||||
x = size + (x % size);
|
||||
} else {
|
||||
idx = (x / size) + 1;
|
||||
x = x % size;
|
||||
}
|
||||
int idz;
|
||||
if (z < 0) {
|
||||
idz = z / size;
|
||||
z = size + (z % size);
|
||||
} else {
|
||||
idz = (z / size) + 1;
|
||||
z = z % size;
|
||||
}
|
||||
if (z <= pathWidthLower || z > end || x <= pathWidthLower || x > end) {
|
||||
int dx = Math.floorDiv(x, size) + 1;
|
||||
int rx = Math.floorMod(x, size);
|
||||
int dz = Math.floorDiv(z, size) + 1;
|
||||
int rz = Math.floorMod(z, size);
|
||||
if (rz <= pathWidthLower || rz > end || rx <= pathWidthLower || rx > end) {
|
||||
return null;
|
||||
} else {
|
||||
return PlotId.of(idx, idz);
|
||||
return PlotId.of(dx, dz);
|
||||
}
|
||||
}
|
||||
|
||||
@ -180,24 +168,10 @@ public abstract class SquarePlotManager extends GridPlotManager {
|
||||
}
|
||||
end = pathWidthLower + squarePlotWorld.PLOT_WIDTH;
|
||||
}
|
||||
int dx;
|
||||
int rx;
|
||||
if (x < 0) {
|
||||
dx = x / size;
|
||||
rx = size + (x % size);
|
||||
} else {
|
||||
dx = (x / size) + 1;
|
||||
rx = x % size;
|
||||
}
|
||||
int dz;
|
||||
int rz;
|
||||
if (z < 0) {
|
||||
dz = z / size;
|
||||
rz = size + (z % size);
|
||||
} else {
|
||||
dz = (z / size) + 1;
|
||||
rz = z % size;
|
||||
}
|
||||
int dx = Math.floorDiv(x, size) + 1;
|
||||
int rx = Math.floorMod(x, size);
|
||||
int dz = Math.floorDiv(z, size) + 1;
|
||||
int rz = Math.floorMod(z, size);
|
||||
PlotId id = PlotId.of(dx, dz);
|
||||
boolean[] merged = new boolean[]{rz <= pathWidthLower, rx > end, rz > end, rx <= pathWidthLower};
|
||||
int hash = HashUtil.hash(merged);
|
||||
|
@ -162,6 +162,7 @@ public enum Permission {
|
||||
PERMISSION_LIST_AREA("plots.list.area"),
|
||||
PERMISSION_ADMIN_COMMAND_LOAD("plots.admin.command.load"),
|
||||
PERMISSION_ADMIN_COMMAND_MERGE("plots.admin.command.merge"),
|
||||
PERMISSION_ADMIN_COMMAND_MERGE_OTHER_OFFLINE("plots.admin.command.merge.other.offline"),
|
||||
PERMISSION_ADMIN_COMMAND_SET_OWNER("plots.admin.command.setowner"),
|
||||
PERMISSION_COMMENT("plots.comment"),
|
||||
PERMISSION_INBOX("plots.inbox"),
|
||||
|
@ -18,7 +18,8 @@
|
||||
*/
|
||||
package com.plotsquared.core.plot;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class PlotTitle {
|
||||
|
@ -19,7 +19,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "com.plotsquared"
|
||||
version = "6.10.4"
|
||||
version = "6.10.6-SNAPSHOT"
|
||||
|
||||
subprojects {
|
||||
group = rootProject.group
|
||||
@ -65,7 +65,7 @@ subprojects {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.18"))
|
||||
implementation(platform("com.intellectualsites.bom:bom-1.18.x:1.21"))
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
@ -4,7 +4,7 @@ guice = "5.1.0"
|
||||
spotbugs = "4.7.3"
|
||||
|
||||
# Plugins
|
||||
worldedit = "7.2.12"
|
||||
worldedit = "7.2.13"
|
||||
placeholderapi = "2.11.2"
|
||||
luckperms = "5.4"
|
||||
essentialsx = "2.19.7"
|
||||
@ -13,7 +13,7 @@ mvdwapi = "3.1.1"
|
||||
# Third party
|
||||
prtree = "2.0.0"
|
||||
aopalliance = "1.0"
|
||||
cloud-services = "1.7.1"
|
||||
cloud-services = "1.8.0"
|
||||
arkitektonika = "2.1.1"
|
||||
squirrelid = "0.3.1"
|
||||
http4j = "1.3"
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
12
gradlew
vendored
12
gradlew
vendored
@ -55,7 +55,7 @@
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
@ -80,10 +80,10 @@ do
|
||||
esac
|
||||
done
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
APP_NAME="Gradle"
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
@ -143,12 +143,16 @@ fi
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
|
1
gradlew.bat
vendored
1
gradlew.bat
vendored
@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
|
Reference in New Issue
Block a user