Compare commits

..

2 Commits

Author SHA1 Message Date
ffebffec77 Extract method 2023-10-03 10:15:56 +01:00
1e9a27ccea fix: load flags after we is initliased
- fixes #4073
 - it could be possible to add a callback in the WE initilised event listener, but that overcomplicates it a bit and this is fine tbh
2023-10-01 11:45:31 +01:00
12 changed files with 45 additions and 57 deletions

View File

@ -27,7 +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. 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 multiple: false
options: options:
- '1.20.2' - '1.20.1'
- '1.20' - '1.20'
- '1.19.4' - '1.19.4'
- '1.19.3' - '1.19.3'

View File

@ -9,7 +9,7 @@ jobs:
os: [ ubuntu-latest, windows-latest, macos-latest ] os: [ ubuntu-latest, windows-latest, macos-latest ]
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Validate Gradle Wrapper - name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1 uses: gradle/wrapper-validation-action@v1
- name: Setup Java - name: Setup Java

View File

@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout Repository - name: Checkout Repository
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Validate Gradle Wrapper - name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1 uses: gradle/wrapper-validation-action@v1
- name: Setup Java - name: Setup Java

View File

@ -20,7 +20,7 @@ jobs:
language: [ 'java' ] language: [ 'java' ]
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v3
- name: Setup Java - name: Setup Java
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:

View File

@ -100,7 +100,7 @@ tasks {
withType<Javadoc> { withType<Javadoc> {
val isRelease = if (rootProject.version.toString().endsWith("-SNAPSHOT")) "TODO" else rootProject.version.toString() val isRelease = if (rootProject.version.toString().endsWith("-SNAPSHOT")) "TODO" else rootProject.version.toString()
val opt = options as StandardJavadocDocletOptions val opt = options as StandardJavadocDocletOptions
opt.links("https://jd.papermc.io/paper/1.20/") opt.links("https://jd.papermc.io/paper/1.19/")
opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString()) opt.links("https://docs.enginehub.org/javadoc/com.sk89q.worldedit/worldedit-bukkit/" + libs.worldeditBukkit.get().versionConstraint.toString())
opt.links("https://intellectualsites.github.io/plotsquared-javadocs/core/") opt.links("https://intellectualsites.github.io/plotsquared-javadocs/core/")
opt.links("https://jd.advntr.dev/api/4.14.0/") opt.links("https://jd.advntr.dev/api/4.14.0/")

View File

@ -57,8 +57,8 @@ tasks.processResources {
doLast { doLast {
copy { copy {
from(layout.buildDirectory.file("$rootDir/LICENSE")) from(File("$rootDir/LICENSE"))
into(layout.buildDirectory.dir("resources/main")) into("$buildDir/resources/main/")
} }
} }
} }

View File

@ -21,26 +21,21 @@ package com.plotsquared.core.events;
import com.plotsquared.core.location.Location; import com.plotsquared.core.location.Location;
import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.player.PlotPlayer;
import com.plotsquared.core.plot.Plot; import com.plotsquared.core.plot.Plot;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.function.UnaryOperator;
/** /**
* Called when a player teleports to a plot * Called when a player teleports to a plot
*/ */
public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent { public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements CancellablePlotEvent {
private final Location from;
private final TeleportCause cause; private final TeleportCause cause;
private Result eventResult; private Result eventResult;
private final Location from;
private UnaryOperator<Location> locationTransformer;
/** /**
* PlayerTeleportToPlotEvent: Called when a player teleports to a plot * PlayerTeleportToPlotEvent: Called when a player teleports to a plot
* *
* @param player That was teleported * @param player That was teleported
* @param from The origin location, from where the teleport was triggered (players location most likely) * @param from Start location
* @param plot Plot to which the player was teleported * @param plot Plot to which the player was teleported
* @param cause Why the teleport is being completed * @param cause Why the teleport is being completed
* @since 6.1.0 * @since 6.1.0
@ -62,8 +57,7 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
} }
/** /**
* Get the location, from where the teleport was triggered * Get the from location
* (the players current location when executing the home command for example)
* *
* @return Location * @return Location
*/ */
@ -71,27 +65,6 @@ public class PlayerTeleportToPlotEvent extends PlotPlayerEvent implements Cancel
return this.from; return this.from;
} }
/**
* Gets the currently applied {@link UnaryOperator<Location> transformer} or null, if none was set
*
* @return LocationTransformer
* @since TODO
*/
public @Nullable UnaryOperator<Location> getLocationTransformer() {
return this.locationTransformer;
}
/**
* Sets the {@link UnaryOperator<Location> transformer} to mutate the location where the player will be teleported to.
* May be {@code null}, if any previous set transformations should be discarded.
*
* @param locationTransformer The new transformer
* @since TODO
*/
public void setLocationTransformer(@Nullable UnaryOperator<Location> locationTransformer) {
this.locationTransformer = locationTransformer;
}
@Override @Override
public Result getEventResult() { public Result getEventResult() {
return eventResult; return eventResult;

View File

@ -29,7 +29,6 @@ import com.plotsquared.core.configuration.caption.CaptionUtility;
import com.plotsquared.core.configuration.caption.StaticCaption; import com.plotsquared.core.configuration.caption.StaticCaption;
import com.plotsquared.core.configuration.caption.TranslatableCaption; import com.plotsquared.core.configuration.caption.TranslatableCaption;
import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.database.DBFunc;
import com.plotsquared.core.events.PlayerTeleportToPlotEvent;
import com.plotsquared.core.events.Result; import com.plotsquared.core.events.Result;
import com.plotsquared.core.events.TeleportCause; import com.plotsquared.core.events.TeleportCause;
import com.plotsquared.core.generator.ClassicPlotWorld; import com.plotsquared.core.generator.ClassicPlotWorld;
@ -2615,9 +2614,8 @@ public class Plot {
*/ */
public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) { public void teleportPlayer(final PlotPlayer<?> player, TeleportCause cause, Consumer<Boolean> resultConsumer) {
Plot plot = this.getBasePlot(false); Plot plot = this.getBasePlot(false);
Result result = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause).getEventResult();
PlayerTeleportToPlotEvent event = this.eventDispatcher.callTeleport(player, player.getLocation(), plot, cause); if (result == Result.DENY) {
if (event.getEventResult() == Result.DENY) {
player.sendMessage( player.sendMessage(
TranslatableCaption.of("events.event_denied"), TranslatableCaption.of("events.event_denied"),
TagResolver.resolver("value", Tag.inserting(Component.text("Teleport"))) TagResolver.resolver("value", Tag.inserting(Component.text("Teleport")))
@ -2625,10 +2623,7 @@ public class Plot {
resultConsumer.accept(false); resultConsumer.accept(false);
return; return;
} }
final Consumer<Location> locationConsumer = location -> {
final Consumer<Location> locationConsumer = calculatedLocation -> {
Location location = event.getLocationTransformer() == null ? calculatedLocation :
Objects.requireNonNullElse(event.getLocationTransformer().apply(calculatedLocation), calculatedLocation);
if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) { if (Settings.Teleport.DELAY == 0 || player.hasPermission("plots.teleport.delay.bypass")) {
player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot")); player.sendMessage(TranslatableCaption.of("teleport.teleported_to_plot"));
player.teleport(location, cause); player.teleport(location, cause);

View File

@ -51,6 +51,8 @@ import com.plotsquared.core.util.MathMan;
import com.plotsquared.core.util.PlotExpression; import com.plotsquared.core.util.PlotExpression;
import com.plotsquared.core.util.RegionUtil; import com.plotsquared.core.util.RegionUtil;
import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.StringMan;
import com.plotsquared.core.util.task.TaskManager;
import com.plotsquared.core.util.task.TaskTime;
import com.sk89q.worldedit.math.BlockVector2; import com.sk89q.worldedit.math.BlockVector2;
import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.math.BlockVector3;
import com.sk89q.worldedit.regions.CuboidRegion; import com.sk89q.worldedit.regions.CuboidRegion;
@ -391,6 +393,28 @@ public abstract class PlotArea implements ComponentLike {
} }
} }
this.spawnEggs = config.getBoolean("event.spawn.egg");
this.spawnCustom = config.getBoolean("event.spawn.custom");
this.spawnBreeding = config.getBoolean("event.spawn.breeding");
if (PlotSquared.get().isWeInitialised()) {
loadFlags(config);
} else {
ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.delaying_loading_area_flags"),
TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id)))
);
TaskManager.runTaskLater(() -> loadFlags(config), TaskTime.ticks(1));
}
loadConfiguration(config);
}
private void loadFlags(ConfigurationSection config) {
ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.loading_area_flags"),
TagResolver.resolver("area", Tag.inserting(Component.text(this.id == null ? this.worldName : this.id)))
);
List<String> flags = config.getStringList("flags.default"); List<String> flags = config.getStringList("flags.default");
if (flags.isEmpty()) { if (flags.isEmpty()) {
flags = config.getStringList("flags"); flags = config.getStringList("flags");
@ -411,10 +435,6 @@ public abstract class PlotArea implements ComponentLike {
TagResolver.resolver("flags", Tag.inserting(Component.text(flags.toString()))) TagResolver.resolver("flags", Tag.inserting(Component.text(flags.toString())))
); );
this.spawnEggs = config.getBoolean("event.spawn.egg");
this.spawnCustom = config.getBoolean("event.spawn.custom");
this.spawnBreeding = config.getBoolean("event.spawn.breeding");
List<String> roadflags = config.getStringList("road.flags"); List<String> roadflags = config.getStringList("road.flags");
if (roadflags.isEmpty()) { if (roadflags.isEmpty()) {
roadflags = new ArrayList<>(); roadflags = new ArrayList<>();
@ -426,14 +446,12 @@ public abstract class PlotArea implements ComponentLike {
} }
} }
} }
this.roadFlags = roadflags.size() > 0; this.roadFlags = !roadflags.isEmpty();
parseFlags(this.getRoadFlagContainer(), roadflags); parseFlags(this.getRoadFlagContainer(), roadflags);
ConsolePlayer.getConsole().sendMessage( ConsolePlayer.getConsole().sendMessage(
TranslatableCaption.of("flags.road_flags"), TranslatableCaption.of("flags.road_flags"),
TagResolver.resolver("flags", Tag.inserting(Component.text(roadflags.toString()))) TagResolver.resolver("flags", Tag.inserting(Component.text(roadflags.toString())))
); );
loadConfiguration(config);
} }
public abstract void loadConfiguration(ConfigurationSection config); public abstract void loadConfiguration(ConfigurationSection config);

View File

@ -631,6 +631,8 @@
"flags.flag_error_double": "Flag value must be a decimal number.", "flags.flag_error_double": "Flag value must be a decimal number.",
"flags.flag_error_music": "Flag value must be a valid music disc ID.", "flags.flag_error_music": "Flag value must be a valid music disc ID.",
"flags.flag_error_title": "Flag value must be in the format </red><grey>\"A title\" \"The subtitle\"</grey><red>.", "flags.flag_error_title": "Flag value must be in the format </red><grey>\"A title\" \"The subtitle\"</grey><red>.",
"flags.delaying_loading_area_flags": "<prefix><gray>Delaying loading flags for area `</gray><dark_aqua><area></dark_aqua><gray>` as WorldEdit is not initialised yet.</gray>",
"flags.loading_area_flags": "<prefix><gray>Loading flags for area: </gray><dark_aqua><area></dark_aqua>",
"flags.area_flags": "<prefix><gray>Area flags: </gray><dark_aqua><flags></dark_aqua>", "flags.area_flags": "<prefix><gray>Area flags: </gray><dark_aqua><flags></dark_aqua>",
"flags.road_flags": "<prefix><gray>Road flags: </gray><dark_aqua><flags></dark_aqua>", "flags.road_flags": "<prefix><gray>Road flags: </gray><dark_aqua><flags></dark_aqua>",
"commands.description.add": "<gray>Allow a user to build in a plot while the plot owner is online.</gray>", "commands.description.add": "<gray>Allow a user to build in a plot while the plot owner is online.</gray>",

View File

@ -220,7 +220,7 @@ tasks.getByName<Jar>("jar") {
enabled = false enabled = false
} }
val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1", "1.20.2") val supportedVersions = listOf("1.16.5", "1.17.1", "1.18.2", "1.19.4", "1.20.1")
tasks { tasks {
val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL() val lastSuccessfulBuildUrl = uri("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/api/json").toURL()
val artifact = ((JsonSlurper().parse(lastSuccessfulBuildUrl) as Map<*, *>)["artifacts"] as List<*>) val artifact = ((JsonSlurper().parse(lastSuccessfulBuildUrl) as Map<*, *>)["artifacts"] as List<*>)

View File

@ -1,9 +1,9 @@
[versions] [versions]
# Platform expectations # Platform expectations
paper = "1.20.2-R0.1-SNAPSHOT" paper = "1.20.1-R0.1-SNAPSHOT"
guice = "7.0.0" guice = "7.0.0"
spotbugs = "4.7.3" spotbugs = "4.7.3"
checkerqual = "3.38.0" checkerqual = "3.37.0"
gson = "2.10" gson = "2.10"
guava = "31.1-jre" guava = "31.1-jre"
snakeyaml = "2.0" snakeyaml = "2.0"
@ -13,7 +13,7 @@ log4j = "2.19.0"
# Plugins # Plugins
worldedit = "7.2.16" worldedit = "7.2.16"
fawe = "2.8.0" fawe = "2.7.1"
placeholderapi = "2.11.4" placeholderapi = "2.11.4"
luckperms = "5.4" luckperms = "5.4"
essentialsx = "2.20.1" essentialsx = "2.20.1"
@ -35,7 +35,7 @@ serverlib = "2.3.4"
# Gradle plugins # Gradle plugins
shadow = "8.1.1" shadow = "8.1.1"
grgit = "4.1.1" grgit = "4.1.1"
spotless = "6.22.0" spotless = "6.21.0"
nexus = "1.3.0" nexus = "1.3.0"
runPaper = "2.2.0" runPaper = "2.2.0"