mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2024-09-28 12:53:04 +00:00
Merge https://github.com/EssentialsX/Essentials into 1.16
This commit is contained in:
commit
ab32000b3a
2
.github/PULL_REQUEST_TEMPLATE/bug-fix.md
vendored
2
.github/PULL_REQUEST_TEMPLATE/bug-fix.md
vendored
|
@ -69,7 +69,7 @@ This PR fixes #nnnn.
|
|||
other environments, add a new line with relevant details.
|
||||
-->
|
||||
|
||||
- [ ] Paper 1.16.3 (any OS, any Java 8+ version)
|
||||
- [ ] [Latest](https://papermc.io/downloads) Paper Version (any OS, any Java 8+ version)
|
||||
- [ ] CraftBukkit/Spigot/Paper 1.12.2 (any OS, any Java 8+ version)
|
||||
- [ ] CraftBukkit 1.8.8 (any OS, any Java 8+ version)
|
||||
|
||||
|
|
2
.github/PULL_REQUEST_TEMPLATE/new-feature.md
vendored
2
.github/PULL_REQUEST_TEMPLATE/new-feature.md
vendored
|
@ -69,7 +69,7 @@ This PR closes #nnnn.
|
|||
other environments, add a new line with relevant details.
|
||||
-->
|
||||
|
||||
- [ ] Paper 1.16.3 (any OS, any Java 8+ version)
|
||||
- [ ] [Latest](https://papermc.io/downloads) Paper Version (any OS, any Java 8+ version)
|
||||
- [ ] CraftBukkit/Spigot/Paper 1.12.2 (any OS, any Java 8+ version)
|
||||
- [ ] CraftBukkit 1.8.8 (any OS, any Java 8+ version)
|
||||
|
||||
|
|
|
@ -16,4 +16,4 @@
|
|||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
</project>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>EssentialsX</artifactId>
|
||||
|
@ -75,13 +75,13 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>BaseProviders</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>NMSReflectionProvider</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.bukkit</groupId>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>PaperProvider</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.destroystokyo.paper</groupId>
|
||||
|
@ -105,7 +105,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>1_8Provider</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>org.bukkit</groupId>
|
||||
|
|
|
@ -88,7 +88,7 @@ public class Backup implements Runnable {
|
|||
|
||||
ess.runTaskAsynchronously(() -> {
|
||||
try {
|
||||
final ProcessBuilder childBuilder = new ProcessBuilder(command);
|
||||
final ProcessBuilder childBuilder = new ProcessBuilder(command.split(" "));
|
||||
childBuilder.redirectErrorStream(true);
|
||||
childBuilder.directory(ess.getDataFolder().getParentFile().getParentFile());
|
||||
final Process child = childBuilder.start();
|
||||
|
|
|
@ -4,6 +4,7 @@ import com.earth2me.essentials.messaging.IMessageRecipient;
|
|||
import com.earth2me.essentials.messaging.SimpleMessageRecipient;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public final class Console implements IMessageRecipient {
|
||||
public static final String NAME = "Console";
|
||||
|
@ -80,4 +81,9 @@ public final class Console implements IMessageRecipient {
|
|||
public void setReplyRecipient(final IMessageRecipient recipient) {
|
||||
this.messageRecipient.setReplyRecipient(recipient);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHiddenFrom(Player player) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -289,6 +289,8 @@ public interface ISettings extends IConf {
|
|||
|
||||
boolean isLastMessageReplyRecipient();
|
||||
|
||||
boolean isReplyToVanished();
|
||||
|
||||
BigDecimal getMinimumPayAmount();
|
||||
|
||||
boolean isPayExcludesIgnoreList();
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.ess3.api.MaxMoneyException;
|
|||
import net.ess3.api.events.AfkStatusChangeEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
@ -207,4 +208,6 @@ public interface IUser {
|
|||
void setLastMessageReplyRecipient(boolean enabled);
|
||||
|
||||
Map<User, BigDecimal> getConfirmingPayments();
|
||||
|
||||
Block getTargetBlock(int maxDistance);
|
||||
}
|
||||
|
|
|
@ -1293,6 +1293,11 @@ public class Settings implements net.ess3.api.ISettings {
|
|||
return config.getBoolean("last-message-reply-recipient", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReplyToVanished() {
|
||||
return config.getBoolean("last-message-reply-vanished", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BigDecimal getMinimumPayAmount() {
|
||||
return new BigDecimal(config.getString("minimum-pay-amount", "0.001"));
|
||||
|
|
|
@ -17,6 +17,7 @@ import net.ess3.api.events.MuteStatusChangeEvent;
|
|||
import net.ess3.api.events.UserBalanceUpdateEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
@ -567,6 +568,11 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
|||
return isAfk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHiddenFrom(Player player) {
|
||||
return !player.canSee(getBase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHidden() {
|
||||
return hidden;
|
||||
|
@ -1004,4 +1010,13 @@ public class User extends UserData implements Comparable<User>, IMessageRecipien
|
|||
public void setLastHomeConfirmationTimestamp() {
|
||||
this.lastHomeConfirmationTimestamp = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getTargetBlock(int maxDistance) {
|
||||
final Block block;
|
||||
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_2_R01) || (block = base.getTargetBlockExact(maxDistance)) == null) {
|
||||
return base.getTargetBlock(null, maxDistance);
|
||||
}
|
||||
return block;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ public class Commandbreak extends EssentialsCommand {
|
|||
@Override
|
||||
public void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
|
||||
|
||||
final Block block = user.getBase().getTargetBlock(null, 20);
|
||||
final Block block = user.getTargetBlock(20);
|
||||
if (block.getType() == Material.AIR) {
|
||||
throw new NoChargeException();
|
||||
}
|
||||
|
|
|
@ -137,7 +137,7 @@ public class Commandclearinventory extends EssentialsCommand {
|
|||
if (amount == -1) {
|
||||
stack.setAmount(BASE_AMOUNT);
|
||||
final ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
|
||||
final int removedAmount = BASE_AMOUNT - removedStack.getAmount();
|
||||
final int removedAmount = BASE_AMOUNT - removedStack.getAmount() + InventoryWorkaround.clearItemInOffHand(player, stack);
|
||||
if (removedAmount > 0 || showExtended) {
|
||||
sender.sendMessage(tl("inventoryClearingStack", removedAmount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ public class Commanddelhome extends EssentialsCommand {
|
|||
final IUser user = sender.getUser(ess);
|
||||
final boolean canDelOthers = sender.isAuthorized("essentials.delhome.others", ess);
|
||||
if (args.length == 1) {
|
||||
final List<String> homes = sender.isPlayer() ? new ArrayList<>() : user.getHomes();
|
||||
final List<String> homes = user == null ? new ArrayList<>() : user.getHomes();
|
||||
if (canDelOthers) {
|
||||
final int sepIndex = args[0].indexOf(':');
|
||||
if (sepIndex < 0) {
|
||||
|
|
|
@ -25,7 +25,7 @@ public class Commandeditsign extends EssentialsCommand {
|
|||
throw new NotEnoughArgumentsException();
|
||||
}
|
||||
|
||||
final Block target = user.getBase().getTargetBlock(null, 5); //5 is a good number
|
||||
final Block target = user.getTargetBlock(5); //5 is a good number
|
||||
if (!(target.getState() instanceof Sign)) {
|
||||
throw new Exception(tl("editsignCommandTarget"));
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ public class Commandeditsign extends EssentialsCommand {
|
|||
return Lists.newArrayList("1", "2", "3", "4");
|
||||
} else if (args.length == 3 && args[0].equalsIgnoreCase("set") && NumberUtil.isPositiveInt(args[1])) {
|
||||
final int line = Integer.parseInt(args[1]);
|
||||
final Block target = user.getBase().getTargetBlock(null, 5);
|
||||
final Block target = user.getTargetBlock(5);
|
||||
if (target.getState() instanceof Sign && line <= 4) {
|
||||
final Sign sign = (Sign) target.getState();
|
||||
return Lists.newArrayList(FormatUtil.unformatString(user, "essentials.editsign", sign.getLine(line - 1)));
|
||||
|
|
|
@ -20,7 +20,7 @@ public class Commandlightning extends EssentialsLoopCommand {
|
|||
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
|
||||
if (args.length == 0 || !sender.isAuthorized("essentials.lightning.others", ess)) {
|
||||
if (sender.isPlayer()) {
|
||||
sender.getPlayer().getWorld().strikeLightning(sender.getPlayer().getTargetBlock(null, 600).getLocation());
|
||||
sender.getPlayer().getWorld().strikeLightning(sender.getUser(ess).getTargetBlock(600).getLocation());
|
||||
return;
|
||||
}
|
||||
throw new NotEnoughArgumentsException();
|
||||
|
|
|
@ -42,7 +42,8 @@ public class Commandr extends EssentialsCommand {
|
|||
|
||||
final IMessageRecipient target = messageSender.getReplyRecipient();
|
||||
// Check to make sure the sender does have a quick-reply recipient
|
||||
if (target == null) {
|
||||
if (target == null || (!ess.getSettings().isReplyToVanished() && sender.isPlayer() && target.isHiddenFrom(sender.getPlayer()))) {
|
||||
messageSender.setReplyRecipient(null);
|
||||
throw new Exception(tl("foreverAlone"));
|
||||
}
|
||||
messageSender.sendMessage(target, message);
|
||||
|
|
|
@ -71,10 +71,10 @@ public class Commandsethome extends EssentialsCommand {
|
|||
private boolean checkHomeLimit(final User user, final User usersHome, final String name) throws Exception {
|
||||
if (!user.isAuthorized("essentials.sethome.multiple.unlimited")) {
|
||||
final int limit = ess.getSettings().getHomeLimit(user);
|
||||
if (usersHome.getHomes().size() == limit && usersHome.getHomes().contains(name)) {
|
||||
return false;
|
||||
}
|
||||
if (usersHome.getHomes().size() >= limit) {
|
||||
if (usersHome.getHomes().contains(name)) {
|
||||
return false;
|
||||
}
|
||||
throw new Exception(tl("maxHomes", ess.getSettings().getHomeLimit(user)));
|
||||
}
|
||||
return limit == 1;
|
||||
|
|
|
@ -267,4 +267,22 @@ public final class InventoryWorkaround {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static int clearItemInOffHand(final Player p, final ItemStack item) {
|
||||
// This should be added because if `/clear` itself is not initilized it will return an Error: null.
|
||||
if (hasMainHandSupport == null || hasMainHandSupport) {
|
||||
try {
|
||||
int removedAmount = 0;
|
||||
if (p.getInventory().getItemInOffHand().getType().equals(item.getType())) {
|
||||
removedAmount = p.getInventory().getItemInOffHand().getAmount();
|
||||
p.getInventory().setItemInOffHand(null);
|
||||
}
|
||||
hasMainHandSupport = true;
|
||||
return removedAmount;
|
||||
} catch (final Throwable e) {
|
||||
hasMainHandSupport = false;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.earth2me.essentials.messaging;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* Represents an interface for message recipients.
|
||||
*/
|
||||
|
@ -113,4 +115,6 @@ public interface IMessageRecipient {
|
|||
return this == SUCCESS || this == SUCCESS_BUT_AFK;
|
||||
}
|
||||
}
|
||||
|
||||
boolean isHiddenFrom(Player player);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.earth2me.essentials.IUser;
|
|||
import com.earth2me.essentials.User;
|
||||
import net.ess3.api.events.PrivateMessagePreSendEvent;
|
||||
import net.ess3.api.events.PrivateMessageSentEvent;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
|
@ -190,4 +191,9 @@ public class SimpleMessageRecipient implements IMessageRecipient {
|
|||
public void setReplyRecipient(final IMessageRecipient replyRecipient) {
|
||||
this.replyRecipient = new WeakReference<>(replyRecipient);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHiddenFrom(Player player) {
|
||||
return parent.isHiddenFrom(player);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ public class SignPlayerListener implements Listener {
|
|||
if (event.isCancelled() && event.getAction() == Action.RIGHT_CLICK_AIR) {
|
||||
Block targetBlock = null;
|
||||
try {
|
||||
targetBlock = event.getPlayer().getTargetBlock(null, 5);
|
||||
targetBlock = ess.getUser(event.getPlayer()).getTargetBlock(5);
|
||||
} catch (final IllegalStateException ex) {
|
||||
if (ess.getSettings().isDebug()) {
|
||||
ess.getLogger().log(Level.WARNING, ex.getMessage(), ex);
|
||||
|
|
|
@ -29,9 +29,9 @@ public final class VersionUtil {
|
|||
public static final BukkitVersion v1_15_2_R01 = BukkitVersion.fromString("1.15.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_16_1_R01 = BukkitVersion.fromString("1.16.1-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_16_2_R01 = BukkitVersion.fromString("1.16.2-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_16_3_R01 = BukkitVersion.fromString("1.16.3-R0.1-SNAPSHOT");
|
||||
public static final BukkitVersion v1_16_4_R01 = BukkitVersion.fromString("1.16.4-R0.1-SNAPSHOT");
|
||||
|
||||
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_3_R01);
|
||||
private static final Set<BukkitVersion> supportedVersions = ImmutableSet.of(v1_8_8_R01, v1_9_4_R01, v1_10_2_R01, v1_11_2_R01, v1_12_2_R01, v1_13_2_R01, v1_14_4_R01, v1_15_2_R01, v1_16_4_R01);
|
||||
|
||||
private static BukkitVersion serverVersion = null;
|
||||
|
||||
|
|
|
@ -563,6 +563,11 @@ last-message-reply-recipient: true
|
|||
# Default is 180 (3 minutes)
|
||||
last-message-reply-recipient-timeout: 180
|
||||
|
||||
# Changes the default /reply functionality.
|
||||
# If true, /reply will not check if the person you're replying to has vanished.
|
||||
# If false, players will not be able to /reply to players who they can no longer see due to vanish.
|
||||
last-message-reply-vanished: false
|
||||
|
||||
# Toggles whether or not left clicking mobs with a milk bucket turns them into a baby.
|
||||
milk-bucket-easter-egg: true
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>EssentialsXSpawn</artifactId>
|
||||
|
|
|
@ -26,7 +26,7 @@ EssentialsX is almost a completely drop-in replacement for Essentials. However,
|
|||
|
||||
* **EssentialsX requires Java 8 or higher.** On older versions, the plugin may not work properly.
|
||||
|
||||
* **EssentialsX supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2, and 1.16.3.**
|
||||
* **EssentialsX supports Minecraft versions 1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2, and 1.16.4.**
|
||||
|
||||
|
||||
Support
|
||||
|
@ -53,7 +53,7 @@ Using EssentialsX in your plugin
|
|||
|
||||
Do you want to integrate with EssentialsX in your plugin? EssentialsX is available on the **ender.zone Maven repository** at https://ci.ender.zone/plugin/repository/everything/.
|
||||
|
||||
To depend on EssentialsX 2.18.1, you should use the artifact `net.ess3:EssentialsX:2.18.1`. You can find more information at the [wiki](https://essentialsx.net/wiki/Common-Issues.html#how-do-i-add-essentialsx-as-a-dependency).
|
||||
To depend on EssentialsX 2.18.2, you should use the artifact `net.ess3:EssentialsX:2.18.2`. You can find more information at the [wiki](https://essentialsx.net/wiki/Common-Issues.html#how-do-i-add-essentialsx-as-a-dependency).
|
||||
|
||||
|
||||
Contributing
|
||||
|
|
6
pom.xml
6
pom.xml
|
@ -5,7 +5,7 @@
|
|||
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
|
||||
<packaging>pom</packaging>
|
||||
|
||||
|
@ -58,7 +58,7 @@
|
|||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.16.3-R0.1-SNAPSHOT</version>
|
||||
<version>1.16.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -269,7 +269,7 @@
|
|||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
||||
<!-- The plugins' release version -->
|
||||
<release.version>2.18.1</release.version>
|
||||
<release.version>2.18.2</release.version>
|
||||
|
||||
<!-- The plugins' build number -->
|
||||
<!--suppress UnresolvedMavenProperty -->
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<groupId>net.ess3</groupId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
@ -16,7 +16,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>NMSReflectionProvider</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<groupId>net.ess3</groupId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<groupId>net.ess3</groupId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
@ -16,7 +16,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>BaseProviders</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<artifactId>EssentialsXParent</artifactId>
|
||||
<groupId>net.ess3</groupId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
@ -23,7 +23,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>BaseProviders</artifactId>
|
||||
<version>2.18.1</version>
|
||||
<version>2.18.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.destroystokyo.paper</groupId>
|
||||
|
|
Loading…
Reference in a new issue