Skip to content

Commit a42b3c8

Browse files
authored
Merge branch '2.x' into fix/teleport-safety-message
2 parents 2d2e8bf + ddaadf2 commit a42b3c8

File tree

27 files changed

+549
-177
lines changed

27 files changed

+549
-177
lines changed

Essentials/src/main/java/com/earth2me/essentials/EssentialsPlayerListener.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -503,12 +503,21 @@ private void joinFlow(final User user, final long currentTime, final String mess
503503
});
504504
}
505505

506+
final boolean restoreFly = user.isFlyModeEnabled() && user.isAuthorized("essentials.fly");
507+
if (restoreFly) {
508+
user.getBase().setAllowFlight(true);
509+
if (ess.getSettings().isSendFlyEnableOnJoin()) {
510+
user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName());
511+
}
512+
}
513+
506514
if (user.isAuthorized("essentials.fly.safelogin")) {
507515
user.getBase().setFallDistance(0);
508-
if (LocationUtil.shouldFly(ess, user.getLocation())) {
516+
final boolean inWater = VersionUtil.getServerBukkitVersion().isHigherThanOrEqualTo(VersionUtil.v1_17_R01) && user.getBase().isInWater();
517+
if (!inWater && LocationUtil.shouldFly(ess, user.getLocation())) {
509518
user.getBase().setAllowFlight(true);
510519
user.getBase().setFlying(true);
511-
if (ess.getSettings().isSendFlyEnableOnJoin()) {
520+
if (!restoreFly && ess.getSettings().isSendFlyEnableOnJoin()) {
512521
user.sendTl("flyMode", CommonPlaceholders.enableDisable(user.getSource(), true), user.getDisplayName());
513522
}
514523
}
@@ -524,6 +533,11 @@ private void joinFlow(final User user, final long currentTime, final String mess
524533
ess.getLogger().log(Level.INFO, "Set socialspy to false for {0} because they had it enabled without permission.", user.getName());
525534
}
526535

536+
if (user.isFlyModeEnabled() && !user.isAuthorized("essentials.fly")) {
537+
user.setFlyModeEnabled(false);
538+
ess.getLogger().log(Level.INFO, "Set fly mode to false for {0} because they had it enabled without permission.", user.getName());
539+
}
540+
527541
if (user.isGodModeEnabled() && !user.isAuthorized("essentials.god")) {
528542
user.setGodModeEnabled(false);
529543
ess.getLogger().log(Level.INFO, "Set god mode to false for {0} because they had it enabled without permission.", user.getName());
@@ -794,10 +808,9 @@ public void handlePlayerCommandPreprocess(final PlayerCommandPreprocessEvent eve
794808
final ComponentHolder base = (user.isMuted() && ess.getSettings().getSocialSpyListenMutedPlayers())
795809
? spyer.tlComponent("socialSpyMutedPrefix")
796810
: spyer.tlComponent("socialSpyPrefix");
797-
final ComponentHolder nameComponent = ess.getAdventureFacet().legacyToAdventure(playerName);
798-
final ComponentHolder messageComponent = ess.getAdventureFacet().text(": " + event.getMessage());
811+
final ComponentHolder formatted = ess.getAdventureFacet().deserializeMiniMessage(spyer.playerTl("socialSpyCmdFormat", playerName, event.getMessage()));
799812

800-
spyer.sendComponent(ess.getAdventureFacet().append(base, nameComponent, messageComponent));
813+
spyer.sendComponent(ess.getAdventureFacet().append(base, formatted));
801814
}
802815
}
803816
}
@@ -1174,6 +1187,10 @@ public void onInventoryCloseEvent(final InventoryCloseEvent event) {
11741187

11751188
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
11761189
public void onPlayerFishEvent(final PlayerFishEvent event) {
1190+
if (!ess.getSettings().cancelAfkOnFish()) {
1191+
return;
1192+
}
1193+
11771194
final User user = ess.getUser(event.getPlayer());
11781195
user.updateActivityOnInteract(true);
11791196
}

Essentials/src/main/java/com/earth2me/essentials/ISettings.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ public interface ISettings extends IConf {
221221

222222
boolean cancelAfkOnChat();
223223

224+
boolean cancelAfkOnFish();
225+
224226
boolean sleepIgnoresAfkPlayers();
225227

226228
boolean sleepIgnoresVanishedPlayers();

Essentials/src/main/java/com/earth2me/essentials/Settings.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,6 +1320,11 @@ public boolean cancelAfkOnChat() {
13201320
return config.getBoolean("cancel-afk-on-chat", true);
13211321
}
13221322

1323+
@Override
1324+
public boolean cancelAfkOnFish() {
1325+
return config.getBoolean("cancel-afk-on-fish", true);
1326+
}
1327+
13231328
@Override
13241329
public boolean sleepIgnoresAfkPlayers() {
13251330
return sleepIgnoresAfkPlayers;

Essentials/src/main/java/com/earth2me/essentials/User.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import net.ess3.api.events.MuteStatusChangeEvent;
2424
import net.ess3.api.events.UserBalanceUpdateEvent;
2525
import net.ess3.provider.PlayerLocaleProvider;
26+
import net.essentialsx.api.v2.events.PreTransactionEvent;
2627
import net.essentialsx.api.v2.events.TransactionEvent;
2728
import net.essentialsx.api.v2.services.mail.MailSender;
2829
import org.bukkit.Location;
@@ -263,12 +264,20 @@ public void payUser(final User reciever, final BigDecimal value) throws Exceptio
263264
payUser(reciever, value, UserBalanceUpdateEvent.Cause.UNKNOWN);
264265
}
265266

266-
public void payUser(final User reciever, final BigDecimal value, final UserBalanceUpdateEvent.Cause cause) throws Exception {
267+
public void payUser(final User reciever, BigDecimal value, final UserBalanceUpdateEvent.Cause cause) throws Exception {
267268
if (value.compareTo(BigDecimal.ZERO) < 1) {
268269
throw new Exception(tlLocale(playerLocale, "payMustBePositive"));
269270
}
270271

271272
if (canAfford(value)) {
273+
// Call an event for pre-transaction
274+
final PreTransactionEvent preTransactionEvent = new PreTransactionEvent(this.getSource(), reciever, value);
275+
ess.getServer().getPluginManager().callEvent(preTransactionEvent);
276+
if (preTransactionEvent.isCancelled()) {
277+
return;
278+
}
279+
value = preTransactionEvent.getAmount();
280+
272281
setMoney(getMoney().subtract(value), cause);
273282
reciever.setMoney(reciever.getMoney().add(value), cause);
274283
sendTl("moneySentTo", AdventureUtil.parsed(NumberUtil.displayCurrency(value, ess)), reciever.getDisplayName());

Essentials/src/main/java/com/earth2me/essentials/UserData.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,15 @@ public void setGodModeEnabled(final boolean set) {
469469
config.save();
470470
}
471471

472+
public boolean isFlyModeEnabled() {
473+
return holder.flyMode();
474+
}
475+
476+
public void setFlyModeEnabled(final boolean set) {
477+
holder.flyMode(set);
478+
config.save();
479+
}
480+
472481
public boolean getMuted() {
473482
return holder.muted();
474483
}

Essentials/src/main/java/com/earth2me/essentials/commands/Commandfly.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ protected void togglePlayer(final CommandSource sender, final User user, Boolean
3434
user.getBase().setFallDistance(0f);
3535
user.getBase().setAllowFlight(enabled);
3636

37+
user.setFlyModeEnabled(enabled);
38+
3739
if (!user.getBase().getAllowFlight()) {
3840
user.getBase().setFlying(false);
3941
}

Essentials/src/main/java/com/earth2me/essentials/commands/Commandmute.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public Commandmute() {
2121

2222
@Override
2323
public void run(final Server server, final CommandSource sender, final String commandLabel, final String[] args) throws Exception {
24+
final boolean isUnmute = commandLabel.toLowerCase(java.util.Locale.ENGLISH).contains("unmute");
2425
boolean nomatch = false;
2526
if (args.length < 1) {
2627
throw new NotEnoughArgumentsException();
@@ -32,19 +33,25 @@ public void run(final Server server, final CommandSource sender, final String co
3233
nomatch = true;
3334
user = ess.getUser(new OfflinePlayerStub(args[0], ess.getServer()));
3435
}
36+
37+
if (isUnmute && !user.getMuted()) {
38+
sender.sendTl("playerNotMuted", user.getDisplayName());
39+
return;
40+
}
41+
3542
if (!user.getBase().isOnline() && sender.isPlayer()) {
3643
if (!sender.isAuthorized("essentials.mute.offline")) {
3744
throw new TranslatableException("muteExemptOffline");
3845
}
39-
} else if (user.isAuthorized("essentials.mute.exempt")) {
46+
} else if (!isUnmute && user.isAuthorized("essentials.mute.exempt")) {
4047
throw new TranslatableException("muteExempt");
4148
}
4249

4350
long muteTimestamp = 0;
4451
final String time;
4552
String muteReason = null;
4653

47-
if (args.length > 1) {
54+
if (!isUnmute && args.length > 1) {
4855
time = args[1];
4956
try {
5057
muteTimestamp = DateUtil.parseDateDiff(time, true);
@@ -59,7 +66,7 @@ public void run(final Server server, final CommandSource sender, final String co
5966
}
6067
}
6168

62-
final boolean willMute = (args.length > 1) || !user.getMuted();
69+
final boolean willMute = !isUnmute && ((args.length > 1) || !user.getMuted());
6370
final User controller = sender.isPlayer() ? ess.getUser(sender.getPlayer()) : null;
6471
final MuteStatusChangeEvent event = new MuteStatusChangeEvent(user, controller, willMute, muteTimestamp, muteReason);
6572
ess.getServer().getPluginManager().callEvent(event);
@@ -121,6 +128,8 @@ public void run(final Server server, final CommandSource sender, final String co
121128
} else {
122129
sender.sendTl("unmutedPlayer", user.getDisplayName());
123130
user.sendTl("playerUnmuted");
131+
ess.getLogger().log(Level.INFO, ess.getAdventureFacet().miniToLegacy(tlLiteral("unmuteNotify", sender.getSender().getName(), user.getName())));
132+
ess.broadcastTl(null, "essentials.mute.notify", "unmuteNotify", new Object[]{sender.getSender().getName(), user.getName()});
124133
}
125134
}
126135
}

Essentials/src/main/java/com/earth2me/essentials/commands/Commandsetwarp.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ public void run(final Server server, final User user, final String commandLabel,
2525
throw new TranslatableException("invalidWarpName");
2626
}
2727

28+
if (StringUtil.isReservedFileName(args[0])) {
29+
throw new TranslatableException("invalidWarpName");
30+
}
31+
2832
final IWarps warps = ess.getWarps();
2933
Location warpLoc = null;
3034

Essentials/src/main/java/com/earth2me/essentials/commands/Commandspeed.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ protected void run(final Server server, final User user, final String commandLab
3737
final float speed;
3838
final boolean isBypass = user.isAuthorized("essentials.speed.bypass");
3939
if (args.length == 1) {
40-
isFly = flyPermCheck(user, user.getBase().isFlying());
40+
final boolean inferredFly = isFlyAlias(commandLabel) ? true : isWalkAlias(commandLabel) ? false : user.getBase().isFlying();
41+
isFly = flyPermCheck(user, inferredFly);
4142
speed = getMoveSpeed(args[0]);
4243
} else {
4344
isFly = flyPermCheck(user, isFlyMode(args[0]));
@@ -91,6 +92,14 @@ private Boolean flyPermCheck(final User user, final boolean input) {
9192
} else return !canWalk;
9293
}
9394

95+
private boolean isFlyAlias(final String label) {
96+
return label.contains("fly") || label.equalsIgnoreCase("fspeed") || label.equalsIgnoreCase("efspeed");
97+
}
98+
99+
private boolean isWalkAlias(final String label) {
100+
return label.contains("walk") || label.equalsIgnoreCase("wspeed") || label.equalsIgnoreCase("ewspeed");
101+
}
102+
94103
private boolean isFlyMode(final String modeString) throws NotEnoughArgumentsException {
95104
final boolean isFlyMode;
96105
if (modeString.contains("fly") || modeString.equalsIgnoreCase("f")) {

Essentials/src/main/java/com/earth2me/essentials/commands/Commandtpoffline.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public void run(final Server server, final User user, final String label, final
2121
final Location logout = target.getLogoutLocation();
2222

2323
if (logout == null) {
24-
user.sendTl("teleportOfflineUnknown", user.getDisplayName());
24+
user.sendTl("teleportOfflineUnknown", target.getDisplayName());
2525
throw new NoChargeException();
2626
}
2727

0 commit comments

Comments
 (0)