mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 03:03:43 +01:00 
			
		
		
		
	Compare commits
	
		
			19 Commits
		
	
	
		
			7.0.0
			...
			chore/v7/r
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					42755a560f | ||
| 
						 | 
					ce8daed885 | ||
| 
						 | 
					9ebc5b81de | ||
| 
						 | 
					e138dc0267 | ||
| 
						 | 
					ca50b53f94 | ||
| 
						 | 
					f705487055 | ||
| 
						 | 
					b7c9453a1a | ||
| 
						 | 
					1aa370d562 | ||
| 
						 | 
					d3dab0d736 | ||
| 
						 | 
					764156b267 | ||
| 
						 | 
					665f5251bf | ||
| 
						 | 
					7c328095d7 | ||
| 
						 | 
					7884c91d52 | ||
| 
						 | 
					e9a19e0821 | ||
| 
						 | 
					022847fc4b | ||
| 
						 | 
					1ee673be58 | ||
| 
						 | 
					3c2aa99e86 | ||
| 
						 | 
					11fac3f060 | ||
| 
						 | 
					3e57e524b9 | 
							
								
								
									
										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]/
 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -252,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();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -550,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);
 | 
				
			||||||
@@ -1160,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();
 | 
				
			||||||
@@ -1181,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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
					 | 
				
			||||||
@@ -29,7 +29,6 @@ import com.plotsquared.core.util.WorldUtil;
 | 
				
			|||||||
import com.plotsquared.core.util.entity.EntityCategories;
 | 
					import com.plotsquared.core.util.entity.EntityCategories;
 | 
				
			||||||
import com.plotsquared.core.util.entity.EntityCategory;
 | 
					import com.plotsquared.core.util.entity.EntityCategory;
 | 
				
			||||||
import com.plotsquared.core.util.query.PlotQuery;
 | 
					import com.plotsquared.core.util.query.PlotQuery;
 | 
				
			||||||
import com.plotsquared.core.util.task.TaskManager;
 | 
					 | 
				
			||||||
import com.plotsquared.core.uuid.UUIDMapping;
 | 
					import com.plotsquared.core.uuid.UUIDMapping;
 | 
				
			||||||
import com.sk89q.worldedit.world.entity.EntityType;
 | 
					import com.sk89q.worldedit.world.entity.EntityType;
 | 
				
			||||||
import net.kyori.adventure.text.Component;
 | 
					import net.kyori.adventure.text.Component;
 | 
				
			||||||
@@ -71,7 +70,7 @@ public class Debug extends SubCommand {
 | 
				
			|||||||
                    TranslatableCaption.of("commandconfig.command_syntax"),
 | 
					                    TranslatableCaption.of("commandconfig.command_syntax"),
 | 
				
			||||||
                    TagResolver.resolver(
 | 
					                    TagResolver.resolver(
 | 
				
			||||||
                            "value",
 | 
					                            "value",
 | 
				
			||||||
                            Tag.inserting(Component.text("/plot debug <loadedchunks | player | debug-players | entitytypes | msg>"))
 | 
					                            Tag.inserting(Component.text("/plot debug <player | debug-players | entitytypes | msg>"))
 | 
				
			||||||
                    )
 | 
					                    )
 | 
				
			||||||
            );
 | 
					            );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -85,16 +84,6 @@ public class Debug extends SubCommand {
 | 
				
			|||||||
                return true;
 | 
					                return true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (args.length > 0 && "loadedchunks".equalsIgnoreCase(args[0])) {
 | 
					 | 
				
			||||||
            final long start = System.currentTimeMillis();
 | 
					 | 
				
			||||||
            player.sendMessage(TranslatableCaption.of("debug.fetching_loaded_chunks"));
 | 
					 | 
				
			||||||
            TaskManager.runTaskAsync(() -> player.sendMessage(StaticCaption
 | 
					 | 
				
			||||||
                    .of("Loaded chunks: " + this.worldUtil
 | 
					 | 
				
			||||||
                            .getChunkChunks(player.getLocation().getWorldName())
 | 
					 | 
				
			||||||
                            .size() + " (" + (System.currentTimeMillis()
 | 
					 | 
				
			||||||
                            - start) + "ms) using thread: " + Thread.currentThread().getName())));
 | 
					 | 
				
			||||||
            return true;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (args.length > 0 && "uuids".equalsIgnoreCase(args[0])) {
 | 
					        if (args.length > 0 && "uuids".equalsIgnoreCase(args[0])) {
 | 
				
			||||||
            final Collection<UUIDMapping> mappings = PlotSquared.get().getImpromptuUUIDPipeline().getAllImmediately();
 | 
					            final Collection<UUIDMapping> mappings = PlotSquared.get().getImpromptuUUIDPipeline().getAllImmediately();
 | 
				
			||||||
            player.sendMessage(
 | 
					            player.sendMessage(
 | 
				
			||||||
@@ -196,7 +185,7 @@ public class Debug extends SubCommand {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public Collection<Command> tab(final PlotPlayer<?> player, String[] args, boolean space) {
 | 
					    public Collection<Command> tab(final PlotPlayer<?> player, String[] args, boolean space) {
 | 
				
			||||||
        return Stream.of("loadedchunks", "debug-players", "entitytypes")
 | 
					        return Stream.of("debug-players", "entitytypes")
 | 
				
			||||||
                .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH)))
 | 
					                .filter(value -> value.startsWith(args[0].toLowerCase(Locale.ENGLISH)))
 | 
				
			||||||
                .map(value -> new Command(null, false, value, "plots.admin", RequiredType.NONE, null) {
 | 
					                .map(value -> new Command(null, false, value, "plots.admin", RequiredType.NONE, null) {
 | 
				
			||||||
                }).collect(Collectors.toList());
 | 
					                }).collect(Collectors.toList());
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -21,7 +22,7 @@ plugins {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
group = "com.intellectualsites.plotsquared"
 | 
					group = "com.intellectualsites.plotsquared"
 | 
				
			||||||
version = "7.0.0"
 | 
					version = "7.0.1-SNAPSHOT"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if (!File("$rootDir/.git").exists()) {
 | 
					if (!File("$rootDir/.git").exists()) {
 | 
				
			||||||
    logger.lifecycle("""
 | 
					    logger.lifecycle("""
 | 
				
			||||||
@@ -218,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"))
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ log4j = "2.19.0"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Plugins
 | 
					# Plugins
 | 
				
			||||||
worldedit = "7.2.15"
 | 
					worldedit = "7.2.15"
 | 
				
			||||||
fawe = "2.7.0"
 | 
					fawe = "2.7.1"
 | 
				
			||||||
placeholderapi = "2.11.3"
 | 
					placeholderapi = "2.11.3"
 | 
				
			||||||
luckperms = "5.4"
 | 
					luckperms = "5.4"
 | 
				
			||||||
essentialsx = "2.20.1"
 | 
					essentialsx = "2.20.1"
 | 
				
			||||||
@@ -30,14 +30,14 @@ bstats = "3.0.2"
 | 
				
			|||||||
paperlib = "1.0.8"
 | 
					paperlib = "1.0.8"
 | 
				
			||||||
informative-annotations = "1.3"
 | 
					informative-annotations = "1.3"
 | 
				
			||||||
vault = "1.7.1"
 | 
					vault = "1.7.1"
 | 
				
			||||||
serverlib = "2.3.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.1.0"
 | 
					runPaper = "2.2.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[libraries]
 | 
					[libraries]
 | 
				
			||||||
# Platform expectations
 | 
					# Platform expectations
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user