This commit is contained in:
Telesphoreo 2020-11-16 19:21:24 -06:00
commit ab32000b3a
No known key found for this signature in database
GPG key ID: 50B67E055A6F167C
30 changed files with 100 additions and 35 deletions

View file

@ -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)

View file

@ -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)

View file

@ -16,4 +16,4 @@
</map>
</option>
</component>
</project>
</project>

View file

@ -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>

View file

@ -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();

View file

@ -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;
}
}

View file

@ -289,6 +289,8 @@ public interface ISettings extends IConf {
boolean isLastMessageReplyRecipient();
boolean isReplyToVanished();
BigDecimal getMinimumPayAmount();
boolean isPayExcludesIgnoreList();

View file

@ -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);
}

View file

@ -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"));

View file

@ -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;
}
}

View file

@ -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();
}

View file

@ -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()));
}

View file

@ -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) {

View file

@ -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)));

View file

@ -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();

View file

@ -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);

View file

@ -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;

View file

@ -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;
}
}

View file

@ -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);
}

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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;

View file

@ -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

View file

@ -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>

View file

@ -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

View file

@ -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 -->

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>