mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-07-03 22:24:43 +02:00
Compare commits
32 Commits
fix/v7/def
...
chore/runS
Author | SHA1 | Date | |
---|---|---|---|
ab6f7173f9 | |||
48308400f7 | |||
2b821db963 | |||
0c2f002bad | |||
ca50b53f94 | |||
f705487055 | |||
b7c9453a1a | |||
1aa370d562 | |||
d3dab0d736 | |||
764156b267 | |||
665f5251bf | |||
7c328095d7 | |||
7884c91d52 | |||
e9a19e0821 | |||
022847fc4b | |||
1ee673be58 | |||
3c2aa99e86 | |||
11fac3f060 | |||
3e57e524b9 | |||
f582ec03c5 | |||
893be136f0 | |||
b74ba30281 | |||
ba9dab1f73 | |||
8e60fdb477 | |||
443fe8dd47 | |||
e56e52ba4f | |||
cd008bed9b | |||
d4c90283d6 | |||
dc04ec955a | |||
72f511ce99 | |||
0d63c2bdb6 | |||
49e13384cf |
8
.github/renovate.json
vendored
8
.github/renovate.json
vendored
@ -9,5 +9,11 @@
|
|||||||
"dependencies"
|
"dependencies"
|
||||||
],
|
],
|
||||||
"rebaseWhen": "conflicted",
|
"rebaseWhen": "conflicted",
|
||||||
"schedule": ["on the first day of the month"]
|
"schedule": ["on the first day of the month"],
|
||||||
|
"ignoreDeps": [
|
||||||
|
"com.google.code.gson:gson",
|
||||||
|
"com.google.guava:guava",
|
||||||
|
"org.yaml:snakeyaml",
|
||||||
|
"org.apache.logging.log4j:log4j-api",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -138,6 +138,5 @@ build/
|
|||||||
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
# Ignore run folders
|
# Ignore run folders
|
||||||
run-[0-0].[0-9]/
|
run-[0-9].[0-9][0-9]/
|
||||||
run-[0-0].[0-9].[0-9]/
|
run-[0-9].[0-9][0-9].[0-9]/
|
||||||
|
|
||||||
|
@ -21,20 +21,20 @@ dependencies {
|
|||||||
api(projects.plotsquaredCore)
|
api(projects.plotsquaredCore)
|
||||||
|
|
||||||
// Metrics
|
// Metrics
|
||||||
implementation("org.bstats:bstats-bukkit")
|
implementation(libs.bstatsBukkit)
|
||||||
|
|
||||||
// Paper
|
// Paper
|
||||||
compileOnly("io.papermc.paper:paper-api")
|
compileOnly(libs.paper)
|
||||||
implementation("io.papermc:paperlib")
|
implementation(libs.paperlib)
|
||||||
|
|
||||||
// Plugins
|
// Plugins
|
||||||
compileOnly(libs.worldeditBukkit) {
|
compileOnly(libs.worldeditBukkit) {
|
||||||
exclude(group = "org.bukkit")
|
exclude(group = "org.bukkit")
|
||||||
exclude(group = "org.spigotmc")
|
exclude(group = "org.spigotmc")
|
||||||
}
|
}
|
||||||
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
|
compileOnly(libs.faweBukkit) { isTransitive = false }
|
||||||
testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false }
|
testImplementation(libs.faweBukkit) { isTransitive = false }
|
||||||
compileOnly("com.github.MilkBowl:VaultAPI") {
|
compileOnly(libs.vault) {
|
||||||
exclude(group = "org.bukkit")
|
exclude(group = "org.bukkit")
|
||||||
}
|
}
|
||||||
compileOnly(libs.placeholderapi)
|
compileOnly(libs.placeholderapi)
|
||||||
@ -44,15 +44,15 @@ dependencies {
|
|||||||
|
|
||||||
// Other libraries
|
// Other libraries
|
||||||
implementation(libs.squirrelid) { isTransitive = false }
|
implementation(libs.squirrelid) { isTransitive = false }
|
||||||
implementation("dev.notmyfault.serverlib:ServerLib")
|
implementation(libs.serverlib)
|
||||||
|
|
||||||
// Our libraries
|
// Our libraries
|
||||||
implementation(libs.arkitektonika)
|
implementation(libs.arkitektonika)
|
||||||
implementation("com.intellectualsites.paster:Paster")
|
implementation(libs.paster)
|
||||||
implementation("com.intellectualsites.informative-annotations:informative-annotations")
|
implementation(libs.informativeAnnotations)
|
||||||
|
|
||||||
// Adventure
|
// Adventure
|
||||||
implementation("net.kyori:adventure-platform-bukkit")
|
implementation(libs.adventureBukkit)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
|
@ -50,6 +50,7 @@ import com.plotsquared.bukkit.util.BukkitUtil;
|
|||||||
import com.plotsquared.bukkit.util.BukkitWorld;
|
import com.plotsquared.bukkit.util.BukkitWorld;
|
||||||
import com.plotsquared.bukkit.util.SetGenCB;
|
import com.plotsquared.bukkit.util.SetGenCB;
|
||||||
import com.plotsquared.bukkit.util.TranslationUpdateManager;
|
import com.plotsquared.bukkit.util.TranslationUpdateManager;
|
||||||
|
import com.plotsquared.bukkit.util.UpdateUtility;
|
||||||
import com.plotsquared.bukkit.util.task.BukkitTaskManager;
|
import com.plotsquared.bukkit.util.task.BukkitTaskManager;
|
||||||
import com.plotsquared.bukkit.util.task.PaperTimeConverter;
|
import com.plotsquared.bukkit.util.task.PaperTimeConverter;
|
||||||
import com.plotsquared.bukkit.util.task.SpigotTimeConverter;
|
import com.plotsquared.bukkit.util.task.SpigotTimeConverter;
|
||||||
@ -251,6 +252,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
this.pluginName = getDescription().getName();
|
this.pluginName = getDescription().getName();
|
||||||
|
|
||||||
@ -302,11 +304,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
|
|
||||||
this.serverLocale = Locale.forLanguageTag(Settings.Enabled_Components.DEFAULT_LOCALE);
|
this.serverLocale = Locale.forLanguageTag(Settings.Enabled_Components.DEFAULT_LOCALE);
|
||||||
|
|
||||||
/* TODO Enable update checker before v7 is released to GA
|
|
||||||
if (PremiumVerification.isPremium() && Settings.Enabled_Components.UPDATE_NOTIFICATIONS) {
|
if (PremiumVerification.isPremium() && Settings.Enabled_Components.UPDATE_NOTIFICATIONS) {
|
||||||
injector.getInstance(UpdateUtility.class).updateChecker();
|
injector.getInstance(UpdateUtility.class).updateChecker();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
if (PremiumVerification.isPremium()) {
|
if (PremiumVerification.isPremium()) {
|
||||||
LOGGER.info("PlotSquared version licensed to Spigot user {}", getUserID());
|
LOGGER.info("PlotSquared version licensed to Spigot user {}", getUserID());
|
||||||
@ -551,7 +551,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
this.startMetrics();
|
this.startMetrics();
|
||||||
|
|
||||||
if (Settings.Enabled_Components.WORLDS) {
|
if (Settings.Enabled_Components.WORLDS) {
|
||||||
TaskManager.getPlatformImplementation().taskRepeat(this::unload, TaskTime.seconds(1L));
|
TaskManager.getPlatformImplementation().taskRepeat(this::unload, TaskTime.seconds(10L));
|
||||||
try {
|
try {
|
||||||
singleWorldListener = injector().getInstance(SingleWorldListener.class);
|
singleWorldListener = injector().getInstance(SingleWorldListener.class);
|
||||||
Bukkit.getPluginManager().registerEvents(singleWorldListener, this);
|
Bukkit.getPluginManager().registerEvents(singleWorldListener, this);
|
||||||
@ -1161,6 +1161,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
return new BukkitPlotGenerator(world, generator, this.plotAreaManager);
|
return new BukkitPlotGenerator(world, generator, this.plotAreaManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
@Override
|
@Override
|
||||||
public @NonNull String pluginsFormatted() {
|
public @NonNull String pluginsFormatted() {
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
@ -1182,7 +1183,7 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("ConstantConditions")
|
@SuppressWarnings({"ConstantConditions", "deprecation"}) // Paper deprecation
|
||||||
public @NonNull String worldEditImplementations() {
|
public @NonNull String worldEditImplementations() {
|
||||||
StringBuilder msg = new StringBuilder();
|
StringBuilder msg = new StringBuilder();
|
||||||
if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) {
|
if (Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null) {
|
||||||
|
@ -74,6 +74,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
|||||||
private HorseStats horse;
|
private HorseStats horse;
|
||||||
private boolean noGravity;
|
private boolean noGravity;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Deprecation exists since 1.20, while we support 1.16 onwards
|
||||||
public ReplicatingEntityWrapper(Entity entity, short depth) {
|
public ReplicatingEntityWrapper(Entity entity, short depth) {
|
||||||
super(entity);
|
super(entity);
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ public class EntityEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL",
|
case "REINFORCEMENTS", "NATURAL", "MOUNT", "PATROL", "RAID", "SHEARED", "SILVERFISH_BLOCK", "ENDER_PEARL",
|
||||||
"TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN", "NETHER_PORTAL", "DEFAULT",
|
"TRAP", "VILLAGE_DEFENSE", "VILLAGE_INVASION", "BEEHIVE", "CHUNK_GEN", "NETHER_PORTAL",
|
||||||
"DUPLICATION", "FROZEN", "SPELL" -> {
|
"DUPLICATION", "FROZEN", "SPELL" -> {
|
||||||
if (!area.isMobSpawning()) {
|
if (!area.isMobSpawning()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -369,6 +369,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
public void onConnect(PlayerJoinEvent event) {
|
public void onConnect(PlayerJoinEvent event) {
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
PlotSquared.platform().playerManager().removePlayer(player.getUniqueId());
|
PlotSquared.platform().playerManager().removePlayer(player.getUniqueId());
|
||||||
@ -733,6 +734,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
public void onChat(AsyncPlayerChatEvent event) {
|
public void onChat(AsyncPlayerChatEvent event) {
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
return;
|
return;
|
||||||
@ -1063,6 +1065,7 @@ public class PlayerEventListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW)
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
public void onCancelledInteract(PlayerInteractEvent event) {
|
public void onCancelledInteract(PlayerInteractEvent event) {
|
||||||
if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) {
|
if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
|
@ -44,6 +44,7 @@ import java.util.stream.IntStream;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class BukkitInventoryUtil extends InventoryUtil {
|
public class BukkitInventoryUtil extends InventoryUtil {
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
private static @Nullable ItemStack getItem(PlotItemStack item) {
|
private static @Nullable ItemStack getItem(PlotItemStack item) {
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -67,6 +67,7 @@ public class BukkitSetupUtils extends SetupUtils {
|
|||||||
this.worldFile = worldFile;
|
this.worldFile = worldFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Paper deprecation
|
||||||
@Override
|
@Override
|
||||||
public void updateGenerators(final boolean force) {
|
public void updateGenerators(final boolean force) {
|
||||||
if (loaded && !SetupUtils.generators.isEmpty() && !force) {
|
if (loaded && !SetupUtils.generators.isEmpty() && !force) {
|
||||||
|
@ -44,6 +44,10 @@ public class TranslationUpdateManager {
|
|||||||
String minheightReplacement = "minheight";
|
String minheightReplacement = "minheight";
|
||||||
String maxHeight = "maxHeight";
|
String maxHeight = "maxHeight";
|
||||||
String maxheightReplacement = "maxheight";
|
String maxheightReplacement = "maxheight";
|
||||||
|
String usedGrants = "usedGrants";
|
||||||
|
String usedGrantsReplacement = "used_grants";
|
||||||
|
String remainingGrants = "remainingGrants";
|
||||||
|
String rremainingGrantsReplacement = "remaining_grants";
|
||||||
|
|
||||||
try (Stream<Path> paths = Files.walk(Paths.get(PlotSquared.platform().getDirectory().toPath().resolve("lang").toUri()))) {
|
try (Stream<Path> paths = Files.walk(Paths.get(PlotSquared.platform().getDirectory().toPath().resolve("lang").toUri()))) {
|
||||||
paths
|
paths
|
||||||
@ -53,6 +57,8 @@ public class TranslationUpdateManager {
|
|||||||
replaceInFile(p, suggestCommand, suggestCommandReplacement);
|
replaceInFile(p, suggestCommand, suggestCommandReplacement);
|
||||||
replaceInFile(p, minHeight, minheightReplacement);
|
replaceInFile(p, minHeight, minheightReplacement);
|
||||||
replaceInFile(p, maxHeight, maxheightReplacement);
|
replaceInFile(p, maxHeight, maxheightReplacement);
|
||||||
|
replaceInFile(p, usedGrants, usedGrantsReplacement);
|
||||||
|
replaceInFile(p, remainingGrants, rremainingGrantsReplacement);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ public class UpdateUtility implements Listener {
|
|||||||
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
|
task = Bukkit.getScheduler().runTaskTimerAsynchronously(this.javaPlugin, () -> {
|
||||||
try {
|
try {
|
||||||
HttpsURLConnection connection = (HttpsURLConnection) new URL(
|
HttpsURLConnection connection = (HttpsURLConnection) new URL(
|
||||||
"https://api.spigotmc.org/simple/0.1/index.php?action=getResource&id=77506")
|
"https://api.spigotmc.org/simple/0.2/index.php?action=getResource&id=77506")
|
||||||
.openConnection();
|
.openConnection();
|
||||||
connection.setRequestMethod("GET");
|
connection.setRequestMethod("GET");
|
||||||
JsonObject result = new JsonParser()
|
JsonObject result = new JsonParser()
|
||||||
|
@ -1,76 +0,0 @@
|
|||||||
# Contributor Covenant Code of Conduct
|
|
||||||
|
|
||||||
## Our Pledge
|
|
||||||
|
|
||||||
In the interest of fostering an open and welcoming environment, we as
|
|
||||||
contributors and maintainers pledge to making participation in our project and
|
|
||||||
our community a harassment-free experience for everyone, regardless of age, body
|
|
||||||
size, disability, ethnicity, sex characteristics, gender identity and expression,
|
|
||||||
level of experience, education, socio-economic status, nationality, personal
|
|
||||||
appearance, race, religion, or sexual identity and orientation.
|
|
||||||
|
|
||||||
## Our Standards
|
|
||||||
|
|
||||||
Examples of behavior that contributes to creating a positive environment
|
|
||||||
include:
|
|
||||||
|
|
||||||
* Using welcoming and inclusive language
|
|
||||||
* Being respectful of differing viewpoints and experiences
|
|
||||||
* Gracefully accepting constructive criticism
|
|
||||||
* Focusing on what is best for the community
|
|
||||||
* Showing empathy towards other community members
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
|
||||||
advances
|
|
||||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing others' private information, such as a physical or electronic
|
|
||||||
address, without explicit permission
|
|
||||||
* Other conduct which could reasonably be considered inappropriate in a
|
|
||||||
professional setting
|
|
||||||
|
|
||||||
## Our Responsibilities
|
|
||||||
|
|
||||||
Project maintainers are responsible for clarifying the standards of acceptable
|
|
||||||
behavior and are expected to take appropriate and fair corrective action in
|
|
||||||
response to any instances of unacceptable behavior.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or
|
|
||||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
|
||||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
|
||||||
permanently any contributor for other behaviors that they deem inappropriate,
|
|
||||||
threatening, offensive, or harmful.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
This Code of Conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community. Examples of
|
|
||||||
representing a project or community include using an official project e-mail
|
|
||||||
address, posting via an official social media account, or acting as an appointed
|
|
||||||
representative at an online or offline event. Representation of a project may be
|
|
||||||
further defined and clarified by project maintainers.
|
|
||||||
|
|
||||||
## Enforcement
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
||||||
reported by contacting the project team at contact<at>intellectualsites.com. All
|
|
||||||
complaints will be reviewed and investigated and will result in a response that
|
|
||||||
is deemed necessary and appropriate to the circumstances. The project team is
|
|
||||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
|
||||||
Further details of specific enforcement policies may be posted separately.
|
|
||||||
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
|
||||||
faith may face temporary or permanent repercussions as determined by other
|
|
||||||
members of the project's leadership.
|
|
||||||
|
|
||||||
## Attribution
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
|
||||||
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
|
|
||||||
|
|
||||||
[homepage]: https://www.contributor-covenant.org
|
|
||||||
|
|
||||||
For answers to common questions about this code of conduct, see
|
|
||||||
https://www.contributor-covenant.org/faq
|
|
@ -2,18 +2,18 @@ import java.time.format.DateTimeFormatter
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Expected everywhere.
|
// Expected everywhere.
|
||||||
compileOnlyApi("org.checkerframework:checker-qual")
|
compileOnlyApi(libs.checkerqual)
|
||||||
|
|
||||||
// Minecraft expectations
|
// Minecraft expectations
|
||||||
compileOnlyApi("com.google.code.gson:gson")
|
compileOnlyApi(libs.gson)
|
||||||
compileOnly("com.google.guava:guava")
|
compileOnly(libs.guava)
|
||||||
|
|
||||||
// Platform expectations
|
// Platform expectations
|
||||||
compileOnlyApi("org.yaml:snakeyaml")
|
compileOnlyApi(libs.snakeyaml)
|
||||||
|
|
||||||
// Adventure
|
// Adventure
|
||||||
api("net.kyori:adventure-api")
|
api(libs.adventureApi)
|
||||||
api("net.kyori:adventure-text-minimessage")
|
api(libs.adventureMiniMessage)
|
||||||
|
|
||||||
// Guice
|
// Guice
|
||||||
api(libs.guice) {
|
api(libs.guice) {
|
||||||
@ -31,19 +31,19 @@ dependencies {
|
|||||||
exclude(group = "dummypermscompat")
|
exclude(group = "dummypermscompat")
|
||||||
}
|
}
|
||||||
testImplementation(libs.worldeditCore)
|
testImplementation(libs.worldeditCore)
|
||||||
compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
|
compileOnly(libs.faweBukkit) { isTransitive = false }
|
||||||
testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false }
|
testImplementation(libs.faweCore) { isTransitive = false }
|
||||||
|
|
||||||
// Logging
|
// Logging
|
||||||
compileOnlyApi("org.apache.logging.log4j:log4j-api")
|
compileOnlyApi(libs.log4j)
|
||||||
|
|
||||||
// Other libraries
|
// Other libraries
|
||||||
api(libs.prtree)
|
api(libs.prtree)
|
||||||
api(libs.aopalliance)
|
api(libs.aopalliance)
|
||||||
api(libs.cloudServices)
|
api(libs.cloudServices)
|
||||||
api(libs.arkitektonika)
|
api(libs.arkitektonika)
|
||||||
api("com.intellectualsites.paster:Paster")
|
api(libs.paster)
|
||||||
api("com.intellectualsites.informative-annotations:informative-annotations")
|
api(libs.informativeAnnotations)
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources {
|
tasks.processResources {
|
||||||
|
@ -1281,7 +1281,7 @@ public class PlotSquared {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup the database connection.
|
* Set up the database connection.
|
||||||
*/
|
*/
|
||||||
public void setupDatabase() {
|
public void setupDatabase() {
|
||||||
try {
|
try {
|
||||||
|
@ -131,8 +131,8 @@ public class Auto extends SubCommand {
|
|||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.removed_granted_plot"),
|
TranslatableCaption.of("economy.removed_granted_plot"),
|
||||||
TagResolver.builder()
|
TagResolver.builder()
|
||||||
.tag("usedGrants", Tag.inserting(Component.text(grantedPlots - left)))
|
.tag("used_grants", Tag.inserting(Component.text(grantedPlots - left)))
|
||||||
.tag("remainingGrants", Tag.inserting(Component.text(left)))
|
.tag("remaining_grants", Tag.inserting(Component.text(left)))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -294,7 +294,7 @@ public class Auto extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.econHandler != null && plotarea.useEconomy()) {
|
if (this.econHandler != null && plotarea.useEconomy() && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) {
|
||||||
PlotExpression costExp = plotarea.getPrices().get("claim");
|
PlotExpression costExp = plotarea.getPrices().get("claim");
|
||||||
PlotExpression mergeCostExp = plotarea.getPrices().get("merge");
|
PlotExpression mergeCostExp = plotarea.getPrices().get("merge");
|
||||||
int size = sizeX * sizeZ;
|
int size = sizeX * sizeZ;
|
||||||
|
@ -141,7 +141,7 @@ public class Claim extends SubCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.econHandler.isEnabled(area) && !force) {
|
if (this.econHandler.isEnabled(area) && !force && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) {
|
||||||
PlotExpression costExr = area.getPrices().get("claim");
|
PlotExpression costExr = area.getPrices().get("claim");
|
||||||
double cost = costExr.evaluate(currentPlots);
|
double cost = costExr.evaluate(currentPlots);
|
||||||
if (cost > 0d) {
|
if (cost > 0d) {
|
||||||
@ -186,8 +186,8 @@ public class Claim extends SubCommand {
|
|||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.removed_granted_plot"),
|
TranslatableCaption.of("economy.removed_granted_plot"),
|
||||||
TagResolver.builder()
|
TagResolver.builder()
|
||||||
.tag("usedGrants", Tag.inserting(Component.text(grants - 1)))
|
.tag("used_grants", Tag.inserting(Component.text(grants - 1)))
|
||||||
.tag("remainingGrants", Tag.inserting(Component.text(grants)))
|
.tag("remaining_grants", Tag.inserting(Component.text(grants)))
|
||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -96,6 +96,7 @@ public class DebugRoadRegen extends SubCommand {
|
|||||||
PlotArea area = location.getPlotArea();
|
PlotArea area = location.getPlotArea();
|
||||||
if (area == null) {
|
if (area == null) {
|
||||||
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
|
player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world"));
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
Plot plot = player.getCurrentPlot();
|
Plot plot = player.getCurrentPlot();
|
||||||
if (plot == null) {
|
if (plot == null) {
|
||||||
|
@ -183,7 +183,7 @@ public class MainCommand extends Command {
|
|||||||
if (cmd.hasConfirmation(player)) {
|
if (cmd.hasConfirmation(player)) {
|
||||||
CmdConfirm.addPending(player, cmd.getUsage(), () -> {
|
CmdConfirm.addPending(player, cmd.getUsage(), () -> {
|
||||||
PlotArea area = player.getApplicablePlotArea();
|
PlotArea area = player.getApplicablePlotArea();
|
||||||
if (area != null && econHandler.isEnabled(area)) {
|
if (area != null && econHandler.isEnabled(area) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) {
|
||||||
PlotExpression priceEval =
|
PlotExpression priceEval =
|
||||||
area.getPrices().get(cmd.getFullId());
|
area.getPrices().get(cmd.getFullId());
|
||||||
double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||||
@ -201,7 +201,7 @@ public class MainCommand extends Command {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PlotArea area = player.getApplicablePlotArea();
|
PlotArea area = player.getApplicablePlotArea();
|
||||||
if (area != null && econHandler.isEnabled(area)) {
|
if (area != null && econHandler.isEnabled(area) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) {
|
||||||
PlotExpression priceEval = area.getPrices().get(cmd.getFullId());
|
PlotExpression priceEval = area.getPrices().get(cmd.getFullId());
|
||||||
double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
double price = priceEval != null ? priceEval.evaluate(0d) : 0d;
|
||||||
if (price != 0d && econHandler.getMoney(player) < price) {
|
if (price != 0d && econHandler.getMoney(player) < price) {
|
||||||
|
@ -178,7 +178,7 @@ public class Merge extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (plot.getPlotModificationManager().autoMerge(Direction.ALL, maxSize, uuid, player, terrain)) {
|
if (plot.getPlotModificationManager().autoMerge(Direction.ALL, maxSize, uuid, player, terrain)) {
|
||||||
if (this.econHandler.isEnabled(plotArea) && price > 0d) {
|
if (this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d) {
|
||||||
this.econHandler.withdrawMoney(player, price);
|
this.econHandler.withdrawMoney(player, price);
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.removed_balance"),
|
TranslatableCaption.of("economy.removed_balance"),
|
||||||
@ -196,8 +196,8 @@ public class Merge extends SubCommand {
|
|||||||
player.sendMessage(TranslatableCaption.of("merge.no_available_automerge"));
|
player.sendMessage(TranslatableCaption.of("merge.no_available_automerge"));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!force && this.econHandler.isEnabled(plotArea) && price > 0d
|
if (!force && this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d && this.econHandler.getMoney(
|
||||||
&& this.econHandler.getMoney(player) < price) {
|
player) < price) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.cannot_afford_merge"),
|
TranslatableCaption.of("economy.cannot_afford_merge"),
|
||||||
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price))))
|
TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price))))
|
||||||
@ -218,7 +218,7 @@ public class Merge extends SubCommand {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (plot.getPlotModificationManager().autoMerge(direction, maxSize - size, uuid, player, terrain)) {
|
if (plot.getPlotModificationManager().autoMerge(direction, maxSize - size, uuid, player, terrain)) {
|
||||||
if (this.econHandler.isEnabled(plotArea) && price > 0d) {
|
if (this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d) {
|
||||||
this.econHandler.withdrawMoney(player, price);
|
this.econHandler.withdrawMoney(player, price);
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.removed_balance"),
|
TranslatableCaption.of("economy.removed_balance"),
|
||||||
@ -259,7 +259,7 @@ public class Merge extends SubCommand {
|
|||||||
accepter.sendMessage(TranslatableCaption.of("merge.merge_not_valid"));
|
accepter.sendMessage(TranslatableCaption.of("merge.merge_not_valid"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.econHandler.isEnabled(plotArea) && price > 0d) {
|
if (this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d) {
|
||||||
if (!force && this.econHandler.getMoney(player) < price) {
|
if (!force && this.econHandler.getMoney(player) < price) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.cannot_afford_merge"),
|
TranslatableCaption.of("economy.cannot_afford_merge"),
|
||||||
@ -303,7 +303,7 @@ public class Merge extends SubCommand {
|
|||||||
player,
|
player,
|
||||||
terrain
|
terrain
|
||||||
)) {
|
)) {
|
||||||
if (this.econHandler.isEnabled(plotArea) && price > 0d) {
|
if (this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d) {
|
||||||
if (!force && this.econHandler.getMoney(player) < price) {
|
if (!force && this.econHandler.getMoney(player) < price) {
|
||||||
player.sendMessage(
|
player.sendMessage(
|
||||||
TranslatableCaption.of("economy.cannot_afford_merge"),
|
TranslatableCaption.of("economy.cannot_afford_merge"),
|
||||||
|
@ -206,7 +206,7 @@ public class ComponentPresetManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (componentPreset.cost() > 0.0D) {
|
if (componentPreset.cost() > 0.0D && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) {
|
||||||
if (!econHandler.isEnabled(plot.getArea())) {
|
if (!econHandler.isEnabled(plot.getArea())) {
|
||||||
getPlayer().sendMessage(
|
getPlayer().sendMessage(
|
||||||
TranslatableCaption.of("preset.economy_disabled"),
|
TranslatableCaption.of("preset.economy_disabled"),
|
||||||
|
@ -77,6 +77,10 @@ public class HybridUtils {
|
|||||||
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + HybridUtils.class.getSimpleName());
|
private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + HybridUtils.class.getSimpleName());
|
||||||
private static final BlockState AIR = BlockTypes.AIR.getDefaultState();
|
private static final BlockState AIR = BlockTypes.AIR.getDefaultState();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deprecated and likely to be removed in a future release.
|
||||||
|
*/
|
||||||
|
@Deprecated(forRemoval = true, since = "7.0.0")
|
||||||
public static HybridUtils manager;
|
public static HybridUtils manager;
|
||||||
public static Set<BlockVector2> regions;
|
public static Set<BlockVector2> regions;
|
||||||
public static int height;
|
public static int height;
|
||||||
|
@ -66,7 +66,7 @@ public final class UncheckedWorldLocation extends Location {
|
|||||||
* @param world World
|
* @param world World
|
||||||
* @param loc Coordinates
|
* @param loc Coordinates
|
||||||
* @return New location
|
* @return New location
|
||||||
* @since TODO
|
* @since 7.0.0
|
||||||
*/
|
*/
|
||||||
@DoNotUse
|
@DoNotUse
|
||||||
public static @NonNull UncheckedWorldLocation at(final @NonNull String world, BlockVector3 loc) {
|
public static @NonNull UncheckedWorldLocation at(final @NonNull String world, BlockVector3 loc) {
|
||||||
|
@ -201,7 +201,8 @@ public enum Permission implements ComponentLike {
|
|||||||
PERMISSION_RATE("plots.rate"),
|
PERMISSION_RATE("plots.rate"),
|
||||||
PERMISSION_ADMIN_FLIGHT("plots.admin.flight"),
|
PERMISSION_ADMIN_FLIGHT("plots.admin.flight"),
|
||||||
PERMISSION_ADMIN_COMPONENTS_OTHER("plots.admin.component.other"),
|
PERMISSION_ADMIN_COMPONENTS_OTHER("plots.admin.component.other"),
|
||||||
PERMISSION_ADMIN_BYPASS_BORDER("plots.admin.border.bypass");
|
PERMISSION_ADMIN_BYPASS_BORDER("plots.admin.border.bypass"),
|
||||||
|
PERMISSION_ADMIN_BYPASS_ECON("plots.admin.econ.bypass");
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
|
|
||||||
private final String text;
|
private final String text;
|
||||||
|
@ -25,9 +25,9 @@ import java.util.UUID;
|
|||||||
public interface OfflinePlotPlayer extends PermissionHolder {
|
public interface OfflinePlotPlayer extends PermissionHolder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the {@code UUID} of this player
|
* Returns the UUID of the player.
|
||||||
*
|
*
|
||||||
* @return the player {@link UUID}
|
* @return the UUID of the player
|
||||||
*/
|
*/
|
||||||
UUID getUUID();
|
UUID getUUID();
|
||||||
|
|
||||||
@ -39,9 +39,9 @@ public interface OfflinePlotPlayer extends PermissionHolder {
|
|||||||
long getLastPlayed();
|
long getLastPlayed();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the name of this player.
|
* Returns the name of the player.
|
||||||
*
|
*
|
||||||
* @return the player name
|
* @return the name of the player
|
||||||
*/
|
*/
|
||||||
String getName();
|
String getName();
|
||||||
|
|
||||||
|
@ -273,8 +273,9 @@ public abstract class PlotPlayer<P> implements CommandCaller, OfflinePlotPlayer,
|
|||||||
return this.meta == null ? null : this.meta.remove(key);
|
return this.meta == null ? null : this.meta.remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This player's name.
|
* Returns the name of the player.
|
||||||
*
|
*
|
||||||
* @return the name of the player
|
* @return the name of the player
|
||||||
*/
|
*/
|
||||||
|
@ -26,8 +26,8 @@ import java.util.Iterator;
|
|||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Plot (X,Y) tuples for plot locations
|
* The PlotId class represents a Plot's x and y coordinates within a {@link PlotArea}. PlotId x,y values do not correspond to Block locations.
|
||||||
* within a plot area
|
* A PlotId instance can be created using the {@link #of(int, int)} method or parsed from a string using the {@link #fromString(String)} method.
|
||||||
*/
|
*/
|
||||||
public final class PlotId {
|
public final class PlotId {
|
||||||
|
|
||||||
@ -36,10 +36,10 @@ public final class PlotId {
|
|||||||
private final int hash;
|
private final int hash;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PlotId class (PlotId x,y values do not correspond to Block locations)
|
* Constructs a new PlotId with the given x and y coordinates.
|
||||||
*
|
*
|
||||||
* @param x The plot x coordinate
|
* @param x the x-coordinate of the plot
|
||||||
* @param y The plot y coordinate
|
* @param y the y-coordinate of the plot
|
||||||
*/
|
*/
|
||||||
private PlotId(final int x, final int y) {
|
private PlotId(final int x, final int y) {
|
||||||
this.x = x;
|
this.x = x;
|
||||||
@ -48,11 +48,11 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new plot ID instance
|
* Returns a new PlotId instance with the specified x and y coordinates.
|
||||||
*
|
*
|
||||||
* @param x The plot x coordinate
|
* @param x the x-coordinate of the plot
|
||||||
* @param y The plot y coordinate
|
* @param y the y-coordinate of the plot
|
||||||
* @return a new PlotId at x,y
|
* @return a new PlotId instance with the specified x and y coordinates
|
||||||
*/
|
*/
|
||||||
public static @NonNull PlotId of(final int x, final int y) {
|
public static @NonNull PlotId of(final int x, final int y) {
|
||||||
return new PlotId(x, y);
|
return new PlotId(x, y);
|
||||||
@ -74,10 +74,13 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to parse a plot ID from a string
|
* Returns a PlotId object from the given string, or null if the string is invalid.
|
||||||
|
* The string should be in the format "x;y" where x and y are integers.
|
||||||
|
* The string can also contain any combination of the characters ";_,."
|
||||||
|
* as delimiters.
|
||||||
*
|
*
|
||||||
* @param string ID string
|
* @param string the string to parse
|
||||||
* @return Plot ID, or {@code null} if none could be parsed
|
* @return a PlotId object parsed from the given string, or null if the string is invalid
|
||||||
*/
|
*/
|
||||||
public static @Nullable PlotId fromStringOrNull(final @NonNull String string) {
|
public static @Nullable PlotId fromStringOrNull(final @NonNull String string) {
|
||||||
final String[] parts = string.split("[;_,.]");
|
final String[] parts = string.split("[;_,.]");
|
||||||
@ -95,39 +98,39 @@ public final class PlotId {
|
|||||||
return of(x, y);
|
return of(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the PlotId from the HashCode<br>
|
* Returns a new PlotId instance from the given hash.
|
||||||
* Note: Only accurate for small x,z values (short)
|
|
||||||
*
|
*
|
||||||
* @param hash ID hash
|
* @param hash the hash to unpair
|
||||||
* @return Plot ID
|
* @return a new PlotId instance
|
||||||
*/
|
*/
|
||||||
public static @NonNull PlotId unpair(final int hash) {
|
public static @NonNull PlotId unpair(final int hash) {
|
||||||
return PlotId.of(hash >> 16, hash & 0xFFFF);
|
return PlotId.of(hash >> 16, hash & 0xFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the ID X component
|
* Returns the x-coordinate of this Plot ID.
|
||||||
*
|
*
|
||||||
* @return X component
|
* @return the x-coordinate of this Plot ID
|
||||||
*/
|
*/
|
||||||
public int getX() {
|
public int getX() {
|
||||||
return this.x;
|
return this.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the ID Y component
|
* Returns the y-coordinate of this Plot ID.
|
||||||
*
|
*
|
||||||
* @return Y component
|
* @return the y-coordinate of this Plot ID
|
||||||
*/
|
*/
|
||||||
public int getY() {
|
public int getY() {
|
||||||
return this.y;
|
return this.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the next plot ID for claiming purposes
|
* Returns the next Plot ID for claiming purposes based on the current Plot ID.
|
||||||
*
|
*
|
||||||
* @return Next plot ID
|
* @return the next Plot ID
|
||||||
*/
|
*/
|
||||||
public @NonNull PlotId getNextId() {
|
public @NonNull PlotId getNextId() {
|
||||||
final int absX = Math.abs(x);
|
final int absX = Math.abs(x);
|
||||||
@ -159,10 +162,11 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the PlotId in a relative direction
|
* Returns a new Plot ID in the specified relative direction based on the
|
||||||
|
* current Plot ID.
|
||||||
*
|
*
|
||||||
* @param direction Direction
|
* @param direction the direction in which to get the relative Plot ID
|
||||||
* @return Relative plot ID
|
* @return the relative Plot ID
|
||||||
*/
|
*/
|
||||||
public @NonNull PlotId getRelative(final @NonNull Direction direction) {
|
public @NonNull PlotId getRelative(final @NonNull Direction direction) {
|
||||||
return switch (direction) {
|
return switch (direction) {
|
||||||
@ -193,10 +197,11 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a String representation of the plot ID where the
|
* Returns a string representation of this Plot ID in the format "x;y".
|
||||||
* components are separated by ";"
|
|
||||||
*
|
*
|
||||||
* @return {@code x + ";" + y}
|
* <p> The format is {@code x + ";" + y}
|
||||||
|
*
|
||||||
|
* @return a string representation of this Plot ID
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public @NonNull String toString() {
|
public @NonNull String toString() {
|
||||||
@ -204,41 +209,40 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a String representation of the plot ID where the
|
* Returns a string representation of this Plot ID with the specified separator.
|
||||||
* components are separated by a specified string
|
* <p>
|
||||||
|
* The format is {@code x + separator + y}
|
||||||
*
|
*
|
||||||
* @param separator Separator
|
* @param separator the separator to use between the X and Y coordinates
|
||||||
* @return {@code x + separator + y}
|
* @return a string representation of this Plot ID with the specified separator
|
||||||
*/
|
*/
|
||||||
public @NonNull String toSeparatedString(String separator) {
|
public @NonNull String toSeparatedString(String separator) {
|
||||||
return this.getX() + separator + this.getY();
|
return this.getX() + separator + this.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a String representation of the plot ID where the
|
* Returns a string representation of this Plot ID in the format "x,y".
|
||||||
* components are separated by ","
|
|
||||||
*
|
*
|
||||||
* @return {@code x + "," + y}
|
* @return a string representation of this Plot ID
|
||||||
*/
|
*/
|
||||||
public @NonNull String toCommaSeparatedString() {
|
public @NonNull String toCommaSeparatedString() {
|
||||||
return this.getX() + "," + this.getY();
|
return this.getX() + "," + this.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a String representation of the plot ID where the
|
* Returns a string representation of this Plot ID in the format "x_y".
|
||||||
* components are separated by "_"
|
|
||||||
*
|
*
|
||||||
* @return {@code x + "_" + y}
|
* @return a string representation of this Plot ID
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public @NonNull String toUnderscoreSeparatedString() {
|
public @NonNull String toUnderscoreSeparatedString() {
|
||||||
return this.getX() + "_" + this.getY();
|
return this.getX() + "_" + this.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a String representation of the plot ID where the
|
* Returns a string representation of this Plot ID in the format "x-y".
|
||||||
* components are separated by "-"
|
|
||||||
*
|
*
|
||||||
* @return {@code x + "-" + y}
|
* @return a string representation of this Plot ID
|
||||||
*/
|
*/
|
||||||
public @NonNull String toDashSeparatedString() {
|
public @NonNull String toDashSeparatedString() {
|
||||||
return this.getX() + "-" + this.getY();
|
return this.getX() + "-" + this.getY();
|
||||||
@ -250,6 +254,10 @@ public final class PlotId {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An iterator that iterates over a range of {@link PlotId}s.
|
||||||
|
* The range is defined by a start and end {@link PlotId}.
|
||||||
|
*/
|
||||||
public static final class PlotRangeIterator implements Iterator<PlotId>, Iterable<PlotId> {
|
public static final class PlotRangeIterator implements Iterator<PlotId>, Iterable<PlotId> {
|
||||||
|
|
||||||
private final PlotId start;
|
private final PlotId start;
|
||||||
@ -265,6 +273,13 @@ public final class PlotId {
|
|||||||
this.y = this.start.getY();
|
this.y = this.start.getY();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a new {@link PlotRangeIterator} that iterates over the range of Plots between the specified start and end Plots (inclusive).
|
||||||
|
*
|
||||||
|
* @param start the starting Plot of the range
|
||||||
|
* @param end the ending Plot of the range
|
||||||
|
* @return a new {@link PlotRangeIterator} that iterates over the range of Plots between the specified start and end Plots (inclusive)
|
||||||
|
*/
|
||||||
public static PlotRangeIterator range(final @NonNull PlotId start, final @NonNull PlotId end) {
|
public static PlotRangeIterator range(final @NonNull PlotId start, final @NonNull PlotId end) {
|
||||||
return new PlotRangeIterator(start, end);
|
return new PlotRangeIterator(start, end);
|
||||||
}
|
}
|
||||||
|
@ -67,14 +67,25 @@ public class PlotItemStack {
|
|||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the number of items in this stack.
|
||||||
|
* Valid values range from 1-255.
|
||||||
|
*
|
||||||
|
* @return the amount of items in this stack
|
||||||
|
*/
|
||||||
public int getAmount() {
|
public int getAmount() {
|
||||||
return amount;
|
return amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the given name of this stack of items. The name is displayed when
|
||||||
|
* hovering over the item.
|
||||||
|
*
|
||||||
|
* @return the given name of this stack of items
|
||||||
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String[] getLore() {
|
public String[] getLore() {
|
||||||
return lore;
|
return lore;
|
||||||
}
|
}
|
||||||
|
@ -891,7 +891,6 @@ public final class PlotModificationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* /**
|
|
||||||
* Sets components such as border, wall, floor.
|
* Sets components such as border, wall, floor.
|
||||||
* (components are generator specific)
|
* (components are generator specific)
|
||||||
*
|
*
|
||||||
|
@ -18,9 +18,25 @@
|
|||||||
*/
|
*/
|
||||||
package com.plotsquared.core.plot;
|
package com.plotsquared.core.plot;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The different types of weather that can be set for a Plot.
|
||||||
|
*/
|
||||||
public enum PlotWeather {
|
public enum PlotWeather {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rainy weather conditions
|
||||||
|
*/
|
||||||
RAIN,
|
RAIN,
|
||||||
|
/**
|
||||||
|
* Clear weather conditions
|
||||||
|
*/
|
||||||
CLEAR,
|
CLEAR,
|
||||||
|
/**
|
||||||
|
* Use the weather of the world the plot is in
|
||||||
|
*/
|
||||||
WORLD,
|
WORLD,
|
||||||
|
/**
|
||||||
|
* Turn off weather for the plot
|
||||||
|
*/
|
||||||
OFF
|
OFF
|
||||||
}
|
}
|
||||||
|
@ -124,7 +124,7 @@
|
|||||||
"economy.cannot_afford_merge": "<prefix><red>You cannot afford to merge the plots. It costs <gold><money></gold>.</red>",
|
"economy.cannot_afford_merge": "<prefix><red>You cannot afford to merge the plots. It costs <gold><money></gold>.</red>",
|
||||||
"economy.added_balance": "<prefix><gold><money> </gold><gray>has been added to your balance.</gray>",
|
"economy.added_balance": "<prefix><gold><money> </gold><gray>has been added to your balance.</gray>",
|
||||||
"economy.removed_balance": "<prefix><gold><money> </gold><gray>has been taken from your balance.</gray>",
|
"economy.removed_balance": "<prefix><gold><money> </gold><gray>has been taken from your balance.</gray>",
|
||||||
"economy.removed_granted_plot": "<prefix><gray>You used <usedGrants> plot grant(s), you've got </gray><gold><remainingGrants></gold> <gray>left.</gray>",
|
"economy.removed_granted_plot": "<prefix><gray>You used <used_grants> plot grant(s), you've got </gray><gold><remaining_grants></gold> <gray>left.</gray>",
|
||||||
"setup.choose_generator": "<gold>What generator do you want?</gold>",
|
"setup.choose_generator": "<gold>What generator do you want?</gold>",
|
||||||
"setup.setup_not_started": "<prefix><gold>No setup started.</gold>",
|
"setup.setup_not_started": "<prefix><gold>No setup started.</gold>",
|
||||||
"setup.setup_init": "<prefix><gold>Usage: </gold><gray>/plot setup <value></gray>",
|
"setup.setup_init": "<prefix><gold>Usage: </gold><gray>/plot setup <value></gray>",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import com.diffplug.gradle.spotless.SpotlessPlugin
|
import com.diffplug.gradle.spotless.SpotlessPlugin
|
||||||
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin
|
import com.github.jengelman.gradle.plugins.shadow.ShadowPlugin
|
||||||
|
import groovy.json.JsonSlurper
|
||||||
import java.net.URI
|
import java.net.URI
|
||||||
import xyz.jpenilla.runpaper.task.RunServer
|
import xyz.jpenilla.runpaper.task.RunServer
|
||||||
|
|
||||||
@ -17,11 +18,11 @@ plugins {
|
|||||||
eclipse
|
eclipse
|
||||||
idea
|
idea
|
||||||
|
|
||||||
id("xyz.jpenilla.run-paper") version "2.1.0"
|
alias(libs.plugins.runPaper)
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "com.intellectualsites.plotsquared"
|
group = "com.intellectualsites.plotsquared"
|
||||||
version = "7.0.0-SNAPSHOT"
|
version = "7.0.1-SNAPSHOT"
|
||||||
|
|
||||||
if (!File("$rootDir/.git").exists()) {
|
if (!File("$rootDir/.git").exists()) {
|
||||||
logger.lifecycle("""
|
logger.lifecycle("""
|
||||||
@ -76,10 +77,6 @@ subprojects {
|
|||||||
plugin<IdeaPlugin>()
|
plugin<IdeaPlugin>()
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
|
||||||
implementation(platform("com.intellectualsites.bom:bom-newest:1.34"))
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
// Tests
|
// Tests
|
||||||
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
||||||
@ -222,14 +219,23 @@ tasks.getByName<Jar>("jar") {
|
|||||||
enabled = false
|
enabled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
val supportedVersions = listOf("1.16.5", "1.17", "1.17.1", "1.18.2", "1.19", "1.19.1", "1.19.2", "1.19.3", "1.19.4", "1.20")
|
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 artifact = ((JsonSlurper().parse(lastSuccessfulBuildUrl) as Map<*, *>)["artifacts"] as List<*>)
|
||||||
|
.map { it as Map<*, *> }
|
||||||
|
.map { it["fileName"] as String }
|
||||||
|
.first { it.contains("Bukkit") }
|
||||||
|
|
||||||
supportedVersions.forEach {
|
supportedVersions.forEach {
|
||||||
register<RunServer>("runServer-$it") {
|
register<RunServer>("runServer-$it") {
|
||||||
minecraftVersion(it)
|
minecraftVersion(it)
|
||||||
pluginJars(*project(":plotsquared-bukkit").getTasksByName("shadowJar", false).map { (it as Jar).archiveFile }
|
pluginJars(*project(":plotsquared-bukkit").getTasksByName("shadowJar", false).map { (it as Jar).archiveFile }
|
||||||
.toTypedArray())
|
.toTypedArray())
|
||||||
jvmArgs("-DPaper.IgnoreJavaVersion=true", "-Dcom.mojang.eula.agree=true")
|
jvmArgs("-DPaper.IgnoreJavaVersion=true", "-Dcom.mojang.eula.agree=true")
|
||||||
|
downloadPlugins {
|
||||||
|
url("https://ci.athion.net/job/FastAsyncWorldEdit/lastSuccessfulBuild/artifact/artifacts/$artifact")
|
||||||
|
}
|
||||||
group = "run paper"
|
group = "run paper"
|
||||||
runDirectory.set(file("run-$it"))
|
runDirectory.set(file("run-$it"))
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,22 @@
|
|||||||
[versions]
|
[versions]
|
||||||
# Platform expectations
|
# Platform expectations
|
||||||
|
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.37.0"
|
||||||
|
gson = "2.10"
|
||||||
|
guava = "31.1-jre"
|
||||||
|
snakeyaml = "2.0"
|
||||||
|
adventure = "4.14.0"
|
||||||
|
adventure-bukkit = "4.3.0"
|
||||||
|
log4j = "2.19.0"
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
worldedit = "7.2.15"
|
worldedit = "7.2.15"
|
||||||
|
fawe = "2.7.1"
|
||||||
placeholderapi = "2.11.3"
|
placeholderapi = "2.11.3"
|
||||||
luckperms = "5.4"
|
luckperms = "5.4"
|
||||||
essentialsx = "2.20.0"
|
essentialsx = "2.20.1"
|
||||||
mvdwapi = "3.1.1"
|
mvdwapi = "3.1.1"
|
||||||
|
|
||||||
# Third party
|
# Third party
|
||||||
@ -16,18 +25,34 @@ aopalliance = "1.0"
|
|||||||
cloud-services = "1.8.3"
|
cloud-services = "1.8.3"
|
||||||
arkitektonika = "2.1.2"
|
arkitektonika = "2.1.2"
|
||||||
squirrelid = "0.3.2"
|
squirrelid = "0.3.2"
|
||||||
|
paster = "1.1.5"
|
||||||
|
bstats = "3.0.2"
|
||||||
|
paperlib = "1.0.8"
|
||||||
|
informative-annotations = "1.3"
|
||||||
|
vault = "1.7.1"
|
||||||
|
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.20.0"
|
spotless = "6.21.0"
|
||||||
nexus = "1.3.0"
|
nexus = "1.3.0"
|
||||||
|
runPaper = "2.2.0"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
# Platform expectations
|
# Platform expectations
|
||||||
|
paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" }
|
||||||
guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
|
guice = { group = "com.google.inject", name = "guice", version.ref = "guice" }
|
||||||
guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" }
|
guiceassistedinject = { group = "com.google.inject.extensions", name = "guice-assistedinject", version.ref = "guice" }
|
||||||
spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" }
|
spotbugs = { group = "com.github.spotbugs", name = "spotbugs-annotations", version.ref = "spotbugs" }
|
||||||
|
checkerqual = { group = "org.checkerframework", name = "checker-qual", version.ref = "checkerqual" }
|
||||||
|
gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" }
|
||||||
|
guava = { group = "com.google.guava", name = "guava", version.ref = "guava" }
|
||||||
|
snakeyaml = { group = "org.yaml", name = "snakeyaml", version.ref = "snakeyaml" }
|
||||||
|
adventureApi = { group = "net.kyori", name = "adventure-api", version.ref = "adventure" }
|
||||||
|
adventureMiniMessage = { group = "net.kyori", name = "adventure-text-minimessage", version.ref = "adventure" }
|
||||||
|
adventureBukkit = { group = "net.kyori", name = "adventure-platform-bukkit", version.ref = "adventure-bukkit" }
|
||||||
|
log4j = { group = "org.apache.logging.log4j", name = "log4j-api", version.ref = "log4j" }
|
||||||
|
|
||||||
# Plugins
|
# Plugins
|
||||||
worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" }
|
worldeditCore = { group = "com.sk89q.worldedit", name = "worldedit-core", version.ref = "worldedit" }
|
||||||
@ -35,6 +60,8 @@ worldeditBukkit = { group = "com.sk89q.worldedit", name = "worldedit-bukkit", ve
|
|||||||
placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
|
placeholderapi = { group = "me.clip", name = "placeholderapi", version.ref = "placeholderapi" }
|
||||||
luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" }
|
luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" }
|
||||||
essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" }
|
essentialsx = { group = "net.essentialsx", name = "EssentialsX", version.ref = "essentialsx" }
|
||||||
|
faweCore = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Core", version.ref = "fawe" }
|
||||||
|
faweBukkit = { group = "com.fastasyncworldedit", name = "FastAsyncWorldEdit-Bukkit", version.ref = "fawe" }
|
||||||
|
|
||||||
# Third party
|
# Third party
|
||||||
prtree = { group = "com.intellectualsites.prtree", name = "PRTree", version.ref = "prtree" }
|
prtree = { group = "com.intellectualsites.prtree", name = "PRTree", version.ref = "prtree" }
|
||||||
@ -43,9 +70,17 @@ cloudServices = { group = "cloud.commandframework", name = "cloud-services", ver
|
|||||||
mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" }
|
mvdwapi = { group = "com.intellectualsites.mvdwplaceholderapi", name = "MVdWPlaceholderAPI", version.ref = "mvdwapi" }
|
||||||
squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" }
|
squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" }
|
||||||
arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" }
|
arkitektonika = { group = "com.intellectualsites.arkitektonika", name = "Arkitektonika-Client", version.ref = "arkitektonika" }
|
||||||
|
paster = { group = "com.intellectualsites.paster", name = "Paster", version.ref = "paster" }
|
||||||
|
bstatsBase = { group = "org.bstats", name = "bstats-base", version.ref = "bstats" }
|
||||||
|
bstatsBukkit = { group = "org.bstats", name = "bstats-bukkit", version.ref = "bstats" }
|
||||||
|
informativeAnnotations = { group = "com.intellectualsites.informative-annotations", name = "informative-annotations", version.ref = "informative-annotations" }
|
||||||
|
paperlib = { group = "io.papermc", name = "paperlib", version.ref = "paperlib" }
|
||||||
|
vault = { group = "com.github.MilkBowl", name = "VaultAPI", version.ref = "vault" }
|
||||||
|
serverlib = { group = "dev.notmyfault.serverlib", name = "ServerLib", version.ref = "serverlib" }
|
||||||
|
|
||||||
[plugins]
|
[plugins]
|
||||||
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
|
shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" }
|
||||||
grgit = { id = "org.ajoberstar.grgit", version.ref = "grgit" }
|
grgit = { id = "org.ajoberstar.grgit", version.ref = "grgit" }
|
||||||
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
|
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
|
||||||
nexus = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexus" }
|
nexus = { id = "io.github.gradle-nexus.publish-plugin", version.ref = "nexus" }
|
||||||
|
runPaper = { id = "xyz.jpenilla.run-paper", version.ref = "runPaper" }
|
||||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
3
gradlew
vendored
3
gradlew
vendored
@ -83,7 +83,8 @@ done
|
|||||||
# This is normally unused
|
# This is normally unused
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
APP_BASE_NAME=${0##*/}
|
APP_BASE_NAME=${0##*/}
|
||||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD=maximum
|
MAX_FD=maximum
|
||||||
|
Reference in New Issue
Block a user