mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-31 01:23:44 +01:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
			fix/road-s
			...
			remove-coc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 701a6f95b4 | ||
|   | 3e57e524b9 | ||
|   | f582ec03c5 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 893be136f0 | ||
|   | b74ba30281 | ||
|   | ba9dab1f73 | ||
|   | 8e60fdb477 | ||
|   | 443fe8dd47 | ||
|   | e56e52ba4f | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | cd008bed9b | ||
|   | d4c90283d6 | ||
|   | dc04ec955a | ||
|   | 72f511ce99 | ||
|   | 0d63c2bdb6 | ||
|   | 49e13384cf | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | 1ddc19ff69 | ||
| ![renovate[bot]](/assets/img/avatar_default.png)  | a6d436e841 | ||
|   | 9b0b39ac2e | ||
|   | 638f0bd078 | 
							
								
								
									
										8
									
								
								.github/renovate.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/renovate.json
									
									
									
									
										vendored
									
									
								
							| @@ -9,5 +9,11 @@ | ||||
|     "dependencies" | ||||
|   ], | ||||
|   "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", | ||||
|   ] | ||||
| } | ||||
|   | ||||
| @@ -21,20 +21,20 @@ dependencies { | ||||
|     api(projects.plotsquaredCore) | ||||
|  | ||||
|     // Metrics | ||||
|     implementation("org.bstats:bstats-bukkit") | ||||
|     implementation(libs.bstatsBukkit) | ||||
|  | ||||
|     // Paper | ||||
|     compileOnly("io.papermc.paper:paper-api") | ||||
|     implementation("io.papermc:paperlib") | ||||
|     compileOnly(libs.paper) | ||||
|     implementation(libs.paperlib) | ||||
|  | ||||
|     // Plugins | ||||
|     compileOnly(libs.worldeditBukkit) { | ||||
|         exclude(group = "org.bukkit") | ||||
|         exclude(group = "org.spigotmc") | ||||
|     } | ||||
|     compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false } | ||||
|     testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Bukkit") { isTransitive = false } | ||||
|     compileOnly("com.github.MilkBowl:VaultAPI") { | ||||
|     compileOnly(libs.faweBukkit) { isTransitive = false } | ||||
|     testImplementation(libs.faweBukkit) { isTransitive = false } | ||||
|     compileOnly(libs.vault) { | ||||
|         exclude(group = "org.bukkit") | ||||
|     } | ||||
|     compileOnly(libs.placeholderapi) | ||||
| @@ -44,15 +44,15 @@ dependencies { | ||||
|  | ||||
|     // Other libraries | ||||
|     implementation(libs.squirrelid) { isTransitive = false } | ||||
|     implementation("dev.notmyfault.serverlib:ServerLib") | ||||
|     implementation(libs.serverlib) | ||||
|  | ||||
|     // Our libraries | ||||
|     implementation(libs.arkitektonika) | ||||
|     implementation("com.intellectualsites.paster:Paster") | ||||
|     implementation("com.intellectualsites.informative-annotations:informative-annotations") | ||||
|     implementation(libs.paster) | ||||
|     implementation(libs.informativeAnnotations) | ||||
|  | ||||
|     // Adventure | ||||
|     implementation("net.kyori:adventure-platform-bukkit") | ||||
|     implementation(libs.adventureBukkit) | ||||
| } | ||||
|  | ||||
| tasks.processResources { | ||||
|   | ||||
| @@ -50,6 +50,7 @@ import com.plotsquared.bukkit.util.BukkitUtil; | ||||
| import com.plotsquared.bukkit.util.BukkitWorld; | ||||
| import com.plotsquared.bukkit.util.SetGenCB; | ||||
| 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.PaperTimeConverter; | ||||
| import com.plotsquared.bukkit.util.task.SpigotTimeConverter; | ||||
| @@ -302,11 +303,9 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl | ||||
|  | ||||
|         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) { | ||||
|             injector.getInstance(UpdateUtility.class).updateChecker(); | ||||
|         } | ||||
|          */ | ||||
|  | ||||
|         if (PremiumVerification.isPremium()) { | ||||
|             LOGGER.info("PlotSquared version licensed to Spigot user {}", getUserID()); | ||||
|   | ||||
| @@ -152,7 +152,7 @@ public class EntityEventListener implements Listener { | ||||
|                 } | ||||
|             } | ||||
|             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" -> { | ||||
|                 if (!area.isMobSpawning()) { | ||||
|                     event.setCancelled(true); | ||||
|   | ||||
| @@ -44,6 +44,10 @@ public class TranslationUpdateManager { | ||||
|         String minheightReplacement = "minheight"; | ||||
|         String maxHeight = "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()))) { | ||||
|             paths | ||||
| @@ -53,6 +57,8 @@ public class TranslationUpdateManager { | ||||
|                         replaceInFile(p, suggestCommand, suggestCommandReplacement); | ||||
|                         replaceInFile(p, minHeight, minheightReplacement); | ||||
|                         replaceInFile(p, maxHeight, maxheightReplacement); | ||||
|                         replaceInFile(p, usedGrants, usedGrantsReplacement); | ||||
|                         replaceInFile(p, remainingGrants, rremainingGrantsReplacement); | ||||
|                     }); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -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 { | ||||
|     // Expected everywhere. | ||||
|     compileOnlyApi("org.checkerframework:checker-qual") | ||||
|     compileOnlyApi(libs.checkerqual) | ||||
|  | ||||
|     // Minecraft expectations | ||||
|     compileOnlyApi("com.google.code.gson:gson") | ||||
|     compileOnly("com.google.guava:guava") | ||||
|     compileOnlyApi(libs.gson) | ||||
|     compileOnly(libs.guava) | ||||
|  | ||||
|     // Platform expectations | ||||
|     compileOnlyApi("org.yaml:snakeyaml") | ||||
|     compileOnlyApi(libs.snakeyaml) | ||||
|  | ||||
|     // Adventure | ||||
|     api("net.kyori:adventure-api") | ||||
|     api("net.kyori:adventure-text-minimessage") | ||||
|     api(libs.adventureApi) | ||||
|     api(libs.adventureMiniMessage) | ||||
|  | ||||
|     // Guice | ||||
|     api(libs.guice) { | ||||
| @@ -31,19 +31,19 @@ dependencies { | ||||
|         exclude(group = "dummypermscompat") | ||||
|     } | ||||
|     testImplementation(libs.worldeditCore) | ||||
|     compileOnly("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false } | ||||
|     testImplementation("com.fastasyncworldedit:FastAsyncWorldEdit-Core") { isTransitive = false } | ||||
|     compileOnly(libs.faweBukkit) { isTransitive = false } | ||||
|     testImplementation(libs.faweCore) { isTransitive = false } | ||||
|  | ||||
|     // Logging | ||||
|     compileOnlyApi("org.apache.logging.log4j:log4j-api") | ||||
|     compileOnlyApi(libs.log4j) | ||||
|  | ||||
|     // Other libraries | ||||
|     api(libs.prtree) | ||||
|     api(libs.aopalliance) | ||||
|     api(libs.cloudServices) | ||||
|     api(libs.arkitektonika) | ||||
|     api("com.intellectualsites.paster:Paster") | ||||
|     api("com.intellectualsites.informative-annotations:informative-annotations") | ||||
|     api(libs.paster) | ||||
|     api(libs.informativeAnnotations) | ||||
| } | ||||
|  | ||||
| tasks.processResources { | ||||
|   | ||||
| @@ -131,8 +131,8 @@ public class Auto extends SubCommand { | ||||
|                         player.sendMessage( | ||||
|                                 TranslatableCaption.of("economy.removed_granted_plot"), | ||||
|                                 TagResolver.builder() | ||||
|                                         .tag("usedGrants", Tag.inserting(Component.text(grantedPlots - left))) | ||||
|                                         .tag("remainingGrants", Tag.inserting(Component.text(left))) | ||||
|                                         .tag("used_grants", Tag.inserting(Component.text(grantedPlots - left))) | ||||
|                                         .tag("remaining_grants", Tag.inserting(Component.text(left))) | ||||
|                                         .build() | ||||
|                         ); | ||||
|                     } | ||||
| @@ -294,7 +294,7 @@ public class Auto extends SubCommand { | ||||
|                 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 mergeCostExp = plotarea.getPrices().get("merge"); | ||||
|             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"); | ||||
|                 double cost = costExr.evaluate(currentPlots); | ||||
|                 if (cost > 0d) { | ||||
| @@ -186,8 +186,8 @@ public class Claim extends SubCommand { | ||||
|                 player.sendMessage( | ||||
|                         TranslatableCaption.of("economy.removed_granted_plot"), | ||||
|                         TagResolver.builder() | ||||
|                                 .tag("usedGrants", Tag.inserting(Component.text(grants - 1))) | ||||
|                                 .tag("remainingGrants", Tag.inserting(Component.text(grants))) | ||||
|                                 .tag("used_grants", Tag.inserting(Component.text(grants - 1))) | ||||
|                                 .tag("remaining_grants", Tag.inserting(Component.text(grants))) | ||||
|                                 .build() | ||||
|                 ); | ||||
|             } | ||||
|   | ||||
| @@ -96,6 +96,7 @@ public class DebugRoadRegen extends SubCommand { | ||||
|         PlotArea area = location.getPlotArea(); | ||||
|         if (area == null) { | ||||
|             player.sendMessage(TranslatableCaption.of("errors.not_in_plot_world")); | ||||
|             return false; | ||||
|         } | ||||
|         Plot plot = player.getCurrentPlot(); | ||||
|         if (plot == null) { | ||||
|   | ||||
| @@ -183,7 +183,7 @@ public class MainCommand extends Command { | ||||
|                     if (cmd.hasConfirmation(player)) { | ||||
|                         CmdConfirm.addPending(player, cmd.getUsage(), () -> { | ||||
|                             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()); | ||||
|                                 double price = priceEval != null ? priceEval.evaluate(0d) : 0d; | ||||
| @@ -201,7 +201,7 @@ public class MainCommand extends Command { | ||||
|                         return; | ||||
|                     } | ||||
|                     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()); | ||||
|                         double price = priceEval != null ? priceEval.evaluate(0d) : 0d; | ||||
|                         if (price != 0d && econHandler.getMoney(player) < price) { | ||||
|   | ||||
| @@ -109,7 +109,7 @@ public class Merge extends SubCommand { | ||||
|                 } | ||||
|             } | ||||
|             if (direction == null && (args[0].equalsIgnoreCase("all") || args[0] | ||||
|                     .equalsIgnoreCase("auto"))) { | ||||
|                     .equalsIgnoreCase("auto")) && player.hasPermission(Permission.PERMISSION_MERGE_ALL)) { | ||||
|                 direction = Direction.ALL; | ||||
|             } | ||||
|         } | ||||
| @@ -178,7 +178,7 @@ public class Merge extends SubCommand { | ||||
|                 return true; | ||||
|             } | ||||
|             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); | ||||
|                     player.sendMessage( | ||||
|                             TranslatableCaption.of("economy.removed_balance"), | ||||
| @@ -196,8 +196,8 @@ public class Merge extends SubCommand { | ||||
|             player.sendMessage(TranslatableCaption.of("merge.no_available_automerge")); | ||||
|             return false; | ||||
|         } | ||||
|         if (!force && this.econHandler.isEnabled(plotArea) && price > 0d | ||||
|                 && this.econHandler.getMoney(player) < price) { | ||||
|         if (!force && this.econHandler.isEnabled(plotArea) && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON) && price > 0d && this.econHandler.getMoney( | ||||
|                 player) < price) { | ||||
|             player.sendMessage( | ||||
|                     TranslatableCaption.of("economy.cannot_afford_merge"), | ||||
|                     TagResolver.resolver("money", Tag.inserting(Component.text(this.econHandler.format(price)))) | ||||
| @@ -218,7 +218,7 @@ public class Merge extends SubCommand { | ||||
|             return true; | ||||
|         } | ||||
|         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); | ||||
|                 player.sendMessage( | ||||
|                         TranslatableCaption.of("economy.removed_balance"), | ||||
| @@ -259,7 +259,7 @@ public class Merge extends SubCommand { | ||||
|                     accepter.sendMessage(TranslatableCaption.of("merge.merge_not_valid")); | ||||
|                     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) { | ||||
|                         player.sendMessage( | ||||
|                                 TranslatableCaption.of("economy.cannot_afford_merge"), | ||||
| @@ -303,7 +303,7 @@ public class Merge extends SubCommand { | ||||
|                         player, | ||||
|                         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) { | ||||
|                             player.sendMessage( | ||||
|                                     TranslatableCaption.of("economy.cannot_afford_merge"), | ||||
|   | ||||
| @@ -206,7 +206,7 @@ public class ComponentPresetManager { | ||||
|                     return false; | ||||
|                 } | ||||
|  | ||||
|                 if (componentPreset.cost() > 0.0D) { | ||||
|                 if (componentPreset.cost() > 0.0D && !player.hasPermission(Permission.PERMISSION_ADMIN_BYPASS_ECON)) { | ||||
|                     if (!econHandler.isEnabled(plot.getArea())) { | ||||
|                         getPlayer().sendMessage( | ||||
|                                 TranslatableCaption.of("preset.economy_disabled"), | ||||
|   | ||||
| @@ -265,7 +265,6 @@ public class HybridPlotWorld extends ClassicPlotWorld { | ||||
|  | ||||
|         int worldGenHeight = getMaxGenHeight() - getMinGenHeight() + 1; | ||||
|  | ||||
|         int maxSchematicHeight = 0; | ||||
|         int plotSchemHeight = 0; | ||||
|  | ||||
|         // SCHEM_Y should be normalised to the plot "start" height | ||||
| @@ -278,18 +277,16 @@ public class HybridPlotWorld extends ClassicPlotWorld { | ||||
|                 SCHEM_Y = getMinGenHeight(); | ||||
|                 plotY = 0; | ||||
|             } | ||||
|             maxSchematicHeight = plotY + plotSchemHeight; | ||||
|         } | ||||
|  | ||||
|         int roadSchemHeight; | ||||
|         int roadSchemHeight = 0; | ||||
|  | ||||
|         if (schematic1 != null) { | ||||
|             roadSchemHeight = Math.max( | ||||
|                     schematic1.getClipboard().getDimensions().getY(), | ||||
|                     schematic2.getClipboard().getDimensions().getY() | ||||
|             ); | ||||
|             maxSchematicHeight = Math.max(roadSchemHeight, maxSchematicHeight); | ||||
|             if (maxSchematicHeight == worldGenHeight) { | ||||
|             if (roadSchemHeight == worldGenHeight) { | ||||
|                 SCHEM_Y = getMinGenHeight(); | ||||
|                 roadY = 0; // Road is the lowest schematic | ||||
|                 if (schematic3 != null && schematic3.getClipboard().getDimensions().getY() != worldGenHeight) { | ||||
| @@ -306,13 +303,12 @@ public class HybridPlotWorld extends ClassicPlotWorld { | ||||
|                         // Road is the lowest schematic. Normalize plotY to it. | ||||
|                         plotY = PLOT_HEIGHT - SCHEM_Y; | ||||
|                     } | ||||
|                     maxSchematicHeight = Math.max(maxSchematicHeight, plotY + plotSchemHeight); | ||||
|                 } | ||||
|             } else { | ||||
|                 roadY = minRoadWall - SCHEM_Y; | ||||
|                 maxSchematicHeight = Math.max(maxSchematicHeight, roadY + roadSchemHeight); | ||||
|             } | ||||
|         } | ||||
|         int maxSchematicHeight = Math.max(plotY + plotSchemHeight, roadY + roadSchemHeight); | ||||
|  | ||||
|         if (schematic3 != null) { | ||||
|             this.PLOT_SCHEMATIC = true; | ||||
|   | ||||
| @@ -77,6 +77,10 @@ public class HybridUtils { | ||||
|     private static final Logger LOGGER = LogManager.getLogger("PlotSquared/" + HybridUtils.class.getSimpleName()); | ||||
|     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 Set<BlockVector2> regions; | ||||
|     public static int height; | ||||
|   | ||||
| @@ -66,7 +66,7 @@ public final class UncheckedWorldLocation extends Location { | ||||
|      * @param world World | ||||
|      * @param loc   Coordinates | ||||
|      * @return New location | ||||
|      * @since TODO | ||||
|      * @since 7.0.0 | ||||
|      */ | ||||
|     @DoNotUse | ||||
|     public static @NonNull UncheckedWorldLocation at(final @NonNull String world, BlockVector3 loc) { | ||||
|   | ||||
| @@ -45,6 +45,7 @@ public enum Permission implements ComponentLike { | ||||
|     PERMISSION_ADMIN_ENTRY_FORCEFIELD("plots.admin.entry.forcefield"), | ||||
|     PERMISSION_ADMIN_COMMANDS_CHATSPY("plots.admin.command.chatspy"), | ||||
|     PERMISSION_MERGE("plots.merge"), | ||||
|     PERMISSION_MERGE_ALL("plots.merge.all"), | ||||
|     PERMISSION_MERGE_OTHER("plots.merge.other"), | ||||
|     PERMISSION_MERGE_KEEP_ROAD("plots.merge.keeproad"), | ||||
|     PERMISSION_ADMIN_CAPS_OTHER("plots.admin.caps.other"), | ||||
| @@ -200,7 +201,8 @@ public enum Permission implements ComponentLike { | ||||
|     PERMISSION_RATE("plots.rate"), | ||||
|     PERMISSION_ADMIN_FLIGHT("plots.admin.flight"), | ||||
|     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> | ||||
|  | ||||
|     private final String text; | ||||
|   | ||||
| @@ -124,7 +124,7 @@ | ||||
|   "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.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.setup_not_started": "<prefix><gold>No setup started.</gold>", | ||||
|   "setup.setup_init": "<prefix><gold>Usage: </gold><gray>/plot setup <value></gray>", | ||||
|   | ||||
| @@ -17,11 +17,11 @@ plugins { | ||||
|     eclipse | ||||
|     idea | ||||
|  | ||||
|     id("xyz.jpenilla.run-paper") version "2.1.0" | ||||
|     alias(libs.plugins.runPaper) | ||||
| } | ||||
|  | ||||
| group = "com.intellectualsites.plotsquared" | ||||
| version = "7.0.0-SNAPSHOT" | ||||
| version = "7.0.1-SNAPSHOT" | ||||
|  | ||||
| if (!File("$rootDir/.git").exists()) { | ||||
|     logger.lifecycle(""" | ||||
| @@ -76,13 +76,9 @@ subprojects { | ||||
|         plugin<IdeaPlugin>() | ||||
|     } | ||||
|  | ||||
|     dependencies { | ||||
|         implementation(platform("com.intellectualsites.bom:bom-newest:1.31")) | ||||
|     } | ||||
|  | ||||
|     dependencies { | ||||
|         // Tests | ||||
|         testImplementation("org.junit.jupiter:junit-jupiter:5.9.3") | ||||
|         testImplementation("org.junit.jupiter:junit-jupiter:5.10.0") | ||||
|     } | ||||
|  | ||||
|     plugins.withId("java") { | ||||
|   | ||||
| @@ -1,13 +1,22 @@ | ||||
| [versions] | ||||
| # Platform expectations | ||||
| paper = "1.20.1-R0.1-SNAPSHOT" | ||||
| guice = "7.0.0" | ||||
| 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 | ||||
| worldedit = "7.2.15" | ||||
| fawe = "2.7.0" | ||||
| placeholderapi = "2.11.3" | ||||
| luckperms = "5.4" | ||||
| essentialsx = "2.20.0" | ||||
| essentialsx = "2.20.1" | ||||
| mvdwapi = "3.1.1" | ||||
|  | ||||
| # Third party | ||||
| @@ -16,18 +25,34 @@ aopalliance = "1.0" | ||||
| cloud-services = "1.8.3" | ||||
| arkitektonika = "2.1.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.1" | ||||
|  | ||||
| # Gradle plugins | ||||
| shadow = "8.1.1" | ||||
| grgit = "4.1.1" | ||||
| spotless = "6.20.0" | ||||
| nexus = "1.3.0" | ||||
| runPaper = "2.1.0" | ||||
|  | ||||
| [libraries] | ||||
| # Platform expectations | ||||
| paper = { group = "io.papermc.paper", name = "paper-api", version.ref = "paper" } | ||||
| guice = { group = "com.google.inject", name = "guice", 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" } | ||||
| 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 | ||||
| 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" } | ||||
| luckperms = { group = "net.luckperms", name = "api", version.ref = "luckperms" } | ||||
| 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 | ||||
| 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" } | ||||
| squirrelid = { group = "org.enginehub", name = "squirrelid", version.ref = "squirrelid" } | ||||
| 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] | ||||
| shadow = { id = "com.github.johnrengelman.shadow", version.ref = "shadow" } | ||||
| grgit = { id = "org.ajoberstar.grgit", version.ref = "grgit" } | ||||
| spotless = { id = "com.diffplug.spotless", version.ref = "spotless" } | ||||
| 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 | ||||
| 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 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|   | ||||
							
								
								
									
										3
									
								
								gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								gradlew
									
									
									
									
										vendored
									
									
								
							| @@ -83,7 +83,8 @@ done | ||||
| # This is normally unused | ||||
| # shellcheck disable=SC2034 | ||||
| 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. | ||||
| MAX_FD=maximum | ||||
|   | ||||
		Reference in New Issue
	
	Block a user