mirror of
https://github.com/TotalFreedomMC/TF-PlotSquared.git
synced 2024-12-23 00:15:06 +00:00
Merge https://github.com/IntellectualSites/PlotSquared into 1.16
This commit is contained in:
commit
f244d4381e
21 changed files with 155 additions and 235 deletions
101
.github/ISSUE_TEMPLATE.md
vendored
101
.github/ISSUE_TEMPLATE.md
vendored
|
@ -1,101 +0,0 @@
|
|||
---
|
||||
name: Bug/Issue report for PlotSquared
|
||||
about: Bug / Issue report about this plugin
|
||||
title: ''
|
||||
labels: "[?] Testing Required"
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--- READ THIS BEFORE SUBMITTING AN ISSUE REPORT!!! -->
|
||||
|
||||
<!--- ##### DO NOT REMOVE THIS TEMPLATE! YOUR ISSUE *WILL* FIT IN IT! ##### -->
|
||||
|
||||
<!--- # NOTICE:
|
||||
|
||||
**Feature requests & Suggestions are to be submitted at the [PlotSquared Suggestions tracker](https://github.com/IntellectualSites/PlotSquaredSuggestions)**
|
||||
|
||||
**Code contributions are to be done through [PRs](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request), tagging the specific issue ticket(s) if applicable.**
|
||||
|
||||
**[DISCORD INVITE LINK](https://discord.gg/KxkjDVg)**
|
||||
-->
|
||||
|
||||
# Bug Report Template:
|
||||
<!--- Incomplete reports will most likely be marked as invalid, and closed, with few exceptions.-->
|
||||
## Required Information section:
|
||||
> ALL FIELDS IN THIS SECTION ARE REQUIRED, and must contain appropriate information
|
||||
### Server config info (/plot debugpaste / file paste links):
|
||||
<!--- Issue /plot debugpaste in game or in your console and copy the supplied URL here -->
|
||||
<!--- If you cannot perform the above, we require logs/latest.log; settings.yml; worlds.yml and possibly PlotSquared.use_THIS.yml -->
|
||||
<!--- If you are unwilling to supply the information we need, we reserve the right to not assist you. Redact IP addresses if you need to. -->
|
||||
**/plot debugpaste:**
|
||||
|
||||
### Server type:
|
||||
**Select one**
|
||||
<!-- Select the type you are reporting the issue for (put an "X" between of brackets): -->
|
||||
- [] Spigot / Paper *(CraftBukkit should not be used, re-test with Spigot first!)*
|
||||
- [] Sponge
|
||||
- [] NukkitX
|
||||
|
||||
### PlotSquared version:
|
||||
<!-- Run /plot plugin in-game or in console & paste the full output here: -->
|
||||
```
|
||||
Paste the output here, between the tick marks, replacing this text
|
||||
```
|
||||
|
||||
### Minecraft Version:
|
||||
**Select one**
|
||||
<!-- Select the type you are reporting the issue for (put an "X" between of brackets) -->
|
||||
- [] Minecraft 1.15.2
|
||||
- [] Minecraft 1.14.4
|
||||
- [] Minecraft 1.13.2
|
||||
- [] Minecraft 1.12.2
|
||||
- [] Minecraft 1.11.2
|
||||
- [] Minecraft 1.10.2
|
||||
- [] Minecraft 1.9.4
|
||||
- [] Minecraft 1.8.8
|
||||
- [] Minecraft Java Edition *other versions, please specify*:
|
||||
- [] Minecraft Bedrock Edition *specify version*:
|
||||
- [] Minecraft Sponge *specify version*:
|
||||
|
||||
### Server build info:
|
||||
<!--- Run /version in-game or in console & paste the full output here: -->
|
||||
```
|
||||
Paste the output here, between the tick marks, replacing this text
|
||||
```
|
||||
|
||||
### WorldEdit/FAWE versions:
|
||||
<!--- Specify which plugin you are using, and add its version. Either use /fawe version or /we version -->
|
||||
- [] FAWE version:
|
||||
- [] WorldEdit version:
|
||||
|
||||
### Description of the problem:
|
||||
<!--- Be as specific as possible. Don't lie, redact information, or use false names/situations. -->
|
||||
<!--- Who, What, When, Where, Why, How, Expected behavior, Resultant behavior, etc -->
|
||||
|
||||
### How to replicate:
|
||||
<!--- If you can reproduce the issue please tell us as detailed as possible step by step how to do that -->
|
||||
|
||||
## Additional Information:
|
||||
> The information here is optional for you to provide, however it may help us to more readily diagnose any compatibility and bug issues.
|
||||
|
||||
### Other plugins being used on the server:
|
||||
<!--- Optional but recommended - issue "/plugins" in-game or in console and copy/paste the list -->
|
||||
|
||||
### Relevant console output, log lines, and/or screenshots:
|
||||
<!--- Please use in-line code insertion
|
||||
```
|
||||
like this
|
||||
```
|
||||
for short (20 lines or less) text blobs, or a paste service for large blobs -->
|
||||
|
||||
### Additional relevant comments/remarks:
|
||||
<!--- Use this space to give us any additional information which may be relevant to this issue, such as: if you are using a Minecraft hosting provider; unusual installation environment; etc -->
|
||||
|
||||
# AFFIRMATION OF COMPLETION:
|
||||
<!-- Make sure you have completed the following steps (put an "X" between of brackets): -->
|
||||
- [] I included all information required in the sections above
|
||||
- [] I made sure there are no duplicates of this report [(Use Search)](https://github.com/IntellectualSites/PlotSquared/issues?utf8=%E2%9C%93&q=is%3Aissue)
|
||||
- [] I made sure I am using an up-to-date version of PlotSquared
|
||||
- [] I made sure the bug/error is not caused by any other plugin
|
||||
- [x] I didn't read but checked everything above.
|
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
|
@ -1,8 +0,0 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: PlotSquared Issue Tracker
|
||||
url: https://issues.intellectualsites.com/projects/ps
|
||||
about: Click here to move to our new issue tracker
|
||||
- name: PlotSquared Suggestions
|
||||
url: https://github.com/IntellectualSites/PlotSquaredSuggestions
|
||||
about: If you want to submit feature or suggestion ideas, do that here
|
|
@ -6,7 +6,7 @@ repositories {
|
|||
maven { url = "https://oss.sonatype.org/content/repositories/snapshots/" }
|
||||
maven { url = "https://jitpack.io" }
|
||||
maven { url = "https://repo.codemc.org/repository/maven-public" }
|
||||
maven { url = "http://repo.extendedclip.com/content/repositories/placeholderapi/" }
|
||||
maven { url = "https://repo.extendedclip.com/content/repositories/placeholderapi/" }
|
||||
maven {
|
||||
name = "papermc"
|
||||
url = "https://papermc.io/repo/repository/maven-public/"
|
||||
|
@ -23,8 +23,8 @@ dependencies {
|
|||
implementation(project(":PlotSquared-Core"))
|
||||
compile("org.bstats:bstats-bukkit:1.7")
|
||||
compile(project(":PlotSquared-Core"))
|
||||
compile("com.destroystokyo.paper:paper-api:1.16.1-R0.1-SNAPSHOT")
|
||||
implementation("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT")
|
||||
compile("com.destroystokyo.paper:paper-api:1.16.2-R0.1-SNAPSHOT")
|
||||
implementation("org.spigotmc:spigot-api:1.16.2-R0.1-SNAPSHOT")
|
||||
compile(group: "com.sk89q.worldedit", name: "worldedit-bukkit", version: "7.1.0") {
|
||||
exclude(module: "bukkit")
|
||||
|
||||
|
@ -36,7 +36,7 @@ dependencies {
|
|||
}
|
||||
implementation("me.clip:placeholderapi:2.10.6")
|
||||
implementation("net.luckperms:api:5.1")
|
||||
implementation("net.ess3:EssentialsX:2.17.2") {
|
||||
implementation("net.ess3:EssentialsX:2.18.0") {
|
||||
exclude(group: "io.papermc", module: "paperlib")
|
||||
}
|
||||
implementation("net.alpenblock:BungeePerms:4.0-dev-106")
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<dependency>
|
||||
<groupId>com.destroystokyo.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.16.1-R0.1-SNAPSHOT</version>
|
||||
<version>1.16.2-R0.1-SNAPSHOT</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -149,7 +149,7 @@
|
|||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.16.1-R0.1-SNAPSHOT</version>
|
||||
<version>1.16.2-R0.1-SNAPSHOT</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -179,7 +179,7 @@
|
|||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsX</artifactId>
|
||||
<version>2.17.2</version>
|
||||
<version>2.18.0</version>
|
||||
<scope>runtime</scope>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
|
|
|
@ -770,6 +770,7 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain<
|
|||
}
|
||||
continue;
|
||||
case "ZOMBIFIED_PIGLIN":
|
||||
case "PIGLIN_BRUTE":
|
||||
case "LLAMA":
|
||||
case "DONKEY":
|
||||
case "MULE":
|
||||
|
|
|
@ -310,6 +310,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
|||
case "HOGLIN":
|
||||
case "ZOMBIFIED_PIGLIN":
|
||||
case "PIGLIN":
|
||||
case "PIGLIN_BRUTE":
|
||||
case "ZOMBIE":
|
||||
case "WITHER":
|
||||
case "WITCH":
|
||||
|
@ -711,6 +712,7 @@ public final class ReplicatingEntityWrapper extends EntityWrapper {
|
|||
case "HOGLIN":
|
||||
case "PIGLIN":
|
||||
case "ZOMBIFIED_PIGLIN":
|
||||
case "PIGLIN_BRUTE":
|
||||
case "ZOMBIE":
|
||||
case "WITHER":
|
||||
case "WITCH":
|
||||
|
|
|
@ -69,6 +69,7 @@ import com.plotsquared.core.util.MainUtil;
|
|||
import com.plotsquared.core.util.MathMan;
|
||||
import com.plotsquared.core.util.Permissions;
|
||||
import com.plotsquared.core.util.PremiumVerification;
|
||||
import com.plotsquared.core.util.ReflectionUtils;
|
||||
import com.plotsquared.core.util.RegExUtil;
|
||||
import com.plotsquared.core.util.entity.EntityCategories;
|
||||
import com.plotsquared.core.util.task.TaskManager;
|
||||
|
@ -139,6 +140,7 @@ import java.util.HashSet;
|
|||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
|
@ -153,7 +155,15 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||
private PlayerMoveEvent moveTmp;
|
||||
private String internalVersion;
|
||||
|
||||
private final Predicate<Player> isRealPlayerCheck;
|
||||
|
||||
{
|
||||
Class<?> playerImplementation = ReflectionUtils.getCbClass("entity.CraftPlayer");
|
||||
if (playerImplementation == null) {
|
||||
isRealPlayerCheck = p -> true;
|
||||
} else {
|
||||
isRealPlayerCheck = p -> p.getClass() == playerImplementation;
|
||||
}
|
||||
try {
|
||||
fieldPlayer = PlayerEvent.class.getDeclaredField("player");
|
||||
fieldPlayer.setAccessible(true);
|
||||
|
@ -346,6 +356,9 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onTeleport(PlayerTeleportEvent event) {
|
||||
if (!isRealPlayerCheck.test(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
Player player = event.getPlayer();
|
||||
BukkitPlayer pp = BukkitUtil.getPlayer(player);
|
||||
Plot lastPlot = pp.getMeta(PlotPlayer.META_LAST_PLOT);
|
||||
|
@ -452,6 +465,9 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void playerMove(PlayerMoveEvent event) {
|
||||
if (!isRealPlayerCheck.test(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
org.bukkit.Location from = event.getFrom();
|
||||
org.bukkit.Location to = event.getTo();
|
||||
int x2;
|
||||
|
@ -643,6 +659,9 @@ public class PlayerEventListener extends PlotListener implements Listener {
|
|||
|
||||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
||||
public void onWorldChanged(PlayerChangedWorldEvent event) {
|
||||
if (!isRealPlayerCheck.test(event.getPlayer())) {
|
||||
return;
|
||||
}
|
||||
Player player = event.getPlayer();
|
||||
BukkitPlayer pp = BukkitUtil.getPlayer(player);
|
||||
// Delete last location
|
||||
|
|
|
@ -97,6 +97,26 @@ public class OfflinePlayerUtil {
|
|||
return callConstructor(c, worldServer);
|
||||
}
|
||||
|
||||
public static Object getWorldServer116() {
|
||||
Object server = getMinecraftServer();
|
||||
Class<?> minecraftServerClass = getNmsClass("MinecraftServer");
|
||||
Class<?> genericResourceKey = getNmsClass("ResourceKey");
|
||||
Class<?> minecraftKey = getNmsClass("MinecraftKey");
|
||||
// MinecraftKey + MinecraftKey -> ResourceKey
|
||||
Method constructResourceKey = makeMethod(genericResourceKey, "a", minecraftKey, minecraftKey);
|
||||
// MinecraftKey(String)
|
||||
Constructor<Object> minecraftKeyConstructor = makeConstructor(minecraftKey, String.class);
|
||||
// minecraft:overworld
|
||||
Object overworldKey = callConstructor(minecraftKeyConstructor, "overworld");
|
||||
// minecraft:dimension
|
||||
Object dimensionKey = callConstructor(minecraftKeyConstructor, "dimension");
|
||||
// ResourceKey[minecraft:dimension / minecraft:overworld]
|
||||
Object resourceKey = callMethod(constructResourceKey, null, dimensionKey, overworldKey);
|
||||
Method getWorldServer =
|
||||
makeMethod(minecraftServerClass, "getWorldServer", genericResourceKey);
|
||||
return callMethod(getWorldServer, server, resourceKey);
|
||||
}
|
||||
|
||||
public static Object getWorldServerNew() {
|
||||
Object server = getMinecraftServer();
|
||||
Class<?> minecraftServerClass = getNmsClass("MinecraftServer");
|
||||
|
@ -115,7 +135,11 @@ public class OfflinePlayerUtil {
|
|||
try {
|
||||
o = callMethod(getWorldServer, server, 0);
|
||||
} catch (final RuntimeException e) {
|
||||
try {
|
||||
o = getWorldServerNew();
|
||||
} catch (final RuntimeException f) {
|
||||
o = getWorldServer116();
|
||||
}
|
||||
}
|
||||
return o;
|
||||
}
|
||||
|
|
|
@ -35,11 +35,11 @@ import com.plotsquared.core.util.Permissions;
|
|||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.util.task.RunnableVal2;
|
||||
import com.plotsquared.core.util.task.RunnableVal3;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
|
@ -79,44 +79,49 @@ public class Add extends Command {
|
|||
} else {
|
||||
try {
|
||||
checkTrue(!uuids.isEmpty(), Captions.INVALID_PLAYER, args[0]);
|
||||
Iterator<UUID> iterator = uuids.iterator();
|
||||
|
||||
Iterator<UUIDMapping> iterator = uuids.iterator();
|
||||
int size = plot.getTrusted().size() + plot.getMembers().size();
|
||||
while (iterator.hasNext()) {
|
||||
UUID uuid = iterator.next();
|
||||
if (uuid == DBFunc.EVERYONE && !(
|
||||
UUIDMapping uuidMapping = iterator.next();
|
||||
if (uuidMapping.getUuid() == DBFunc.EVERYONE && !(
|
||||
Permissions.hasPermission(player, Captions.PERMISSION_TRUST_EVERYONE) || Permissions
|
||||
.hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid));
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername());
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (plot.isOwner(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid));
|
||||
if (plot.isOwner(uuidMapping.getUuid())) {
|
||||
new Thread(() ->
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername())
|
||||
).start();
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (plot.getMembers().contains(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid));
|
||||
if (plot.getMembers().contains(uuidMapping.getUuid())) {
|
||||
new Thread(() ->
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername())
|
||||
).start();
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
size += plot.getTrusted().contains(uuid) ? 0 : 1;
|
||||
size += plot.getTrusted().contains(uuidMapping.getUuid()) ? 0 : 1;
|
||||
}
|
||||
checkTrue(!uuids.isEmpty(), null);
|
||||
checkTrue(size <= plot.getArea().getMaxPlotMembers() || Permissions.hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST),
|
||||
Captions.PLOT_MAX_MEMBERS);
|
||||
// Success
|
||||
confirm.run(this, () -> {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != DBFunc.EVERYONE) {
|
||||
if (!plot.removeTrusted(uuid)) {
|
||||
if (plot.getDenied().contains(uuid)) {
|
||||
plot.removeDenied(uuid);
|
||||
for (UUIDMapping uuidMapping : uuids) {
|
||||
if (uuidMapping.getUuid() != DBFunc.EVERYONE) {
|
||||
if (!plot.removeTrusted(uuidMapping.getUuid())) {
|
||||
if (plot.getDenied().contains(uuidMapping.getUuid())) {
|
||||
plot.removeDenied(uuidMapping.getUuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
plot.addMember(uuid);
|
||||
PlotSquared.get().getEventDispatcher().callMember(player, plot, uuid, true);
|
||||
plot.addMember(uuidMapping.getUuid());
|
||||
PlotSquared.get().getEventDispatcher().callMember(player, plot, uuidMapping.getUuid(), true);
|
||||
MainUtil.sendMessage(player, Captions.MEMBER_ADDED);
|
||||
}
|
||||
}, null);
|
||||
|
|
|
@ -35,11 +35,11 @@ import com.plotsquared.core.util.MainUtil;
|
|||
import com.plotsquared.core.util.Permissions;
|
||||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
import com.sk89q.worldedit.world.gamemode.GameModes;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
@CommandDeclaration(command = "deny",
|
||||
|
@ -77,26 +77,26 @@ public class Deny extends SubCommand {
|
|||
} else if (throwable != null || uuids.isEmpty()) {
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]);
|
||||
} else {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid == DBFunc.EVERYONE && !(
|
||||
for (UUIDMapping uuidMapping : uuids) {
|
||||
if (uuidMapping.getUuid() == DBFunc.EVERYONE && !(
|
||||
Permissions.hasPermission(player, Captions.PERMISSION_DENY_EVERYONE) || Permissions
|
||||
.hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_DENY))) {
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid));
|
||||
} else if (plot.isOwner(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.CANT_REMOVE_OWNER, MainUtil.getName(uuid));
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, uuidMapping.getUsername());
|
||||
} else if (plot.isOwner(uuidMapping.getUuid())) {
|
||||
MainUtil.sendMessage(player, Captions.CANT_REMOVE_OWNER, uuidMapping.getUsername());
|
||||
return;
|
||||
} else if (plot.getDenied().contains(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid));
|
||||
} else if (plot.getDenied().contains(uuidMapping.getUuid())) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername());
|
||||
return;
|
||||
} else {
|
||||
if (uuid != DBFunc.EVERYONE) {
|
||||
plot.removeMember(uuid);
|
||||
plot.removeTrusted(uuid);
|
||||
if (uuidMapping.getUuid() != DBFunc.EVERYONE) {
|
||||
plot.removeMember(uuidMapping.getUuid());
|
||||
plot.removeTrusted(uuidMapping.getUuid());
|
||||
}
|
||||
plot.addDenied(uuid);
|
||||
PlotSquared.get().getEventDispatcher().callDenied(player, plot, uuid, true);
|
||||
if (!uuid.equals(DBFunc.EVERYONE)) {
|
||||
handleKick(PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuid), plot);
|
||||
plot.addDenied(uuidMapping.getUuid());
|
||||
PlotSquared.get().getEventDispatcher().callDenied(player, plot, uuidMapping.getUuid(), true);
|
||||
if (!uuidMapping.equals(DBFunc.EVERYONE)) {
|
||||
handleKick(PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuidMapping.getUuid()), plot);
|
||||
} else {
|
||||
for (PlotPlayer plotPlayer : plot.getPlayersInPlot()) {
|
||||
// Ignore plot-owners
|
||||
|
|
|
@ -35,12 +35,12 @@ import com.plotsquared.core.util.MainUtil;
|
|||
import com.plotsquared.core.util.Permissions;
|
||||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.util.WorldUtil;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
@CommandDeclaration(command = "kick",
|
||||
|
@ -75,8 +75,8 @@ public class Kick extends SubCommand {
|
|||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]);
|
||||
} else {
|
||||
Set<PlotPlayer<?>> players = new HashSet<>();
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid == DBFunc.EVERYONE) {
|
||||
for (UUIDMapping uuidMapping : uuids) {
|
||||
if (uuidMapping.getUuid() == DBFunc.EVERYONE) {
|
||||
for (PlotPlayer<?> pp : plot.getPlayersInPlot()) {
|
||||
if (pp == player || Permissions
|
||||
.hasPermission(pp, Captions.PERMISSION_ADMIN_ENTRY_DENIED)) {
|
||||
|
@ -86,7 +86,7 @@ public class Kick extends SubCommand {
|
|||
}
|
||||
continue;
|
||||
}
|
||||
PlotPlayer<?> pp = PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuid);
|
||||
PlotPlayer<?> pp = PlotSquared.imp().getPlayerManager().getPlayerIfExists(uuidMapping.getUuid());
|
||||
if (pp != null) {
|
||||
players.add(pp);
|
||||
}
|
||||
|
|
|
@ -34,10 +34,10 @@ import com.plotsquared.core.plot.Plot;
|
|||
import com.plotsquared.core.util.MainUtil;
|
||||
import com.plotsquared.core.util.Permissions;
|
||||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
@CommandDeclaration(command = "remove",
|
||||
|
@ -78,37 +78,37 @@ public class Remove extends SubCommand {
|
|||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, args[0]);
|
||||
return;
|
||||
} else if (!uuids.isEmpty()) {
|
||||
for (UUID uuid : uuids) {
|
||||
if (plot.getTrusted().contains(uuid)) {
|
||||
if (plot.removeTrusted(uuid)) {
|
||||
for (UUIDMapping uuidMapping : uuids) {
|
||||
if (plot.getTrusted().contains(uuidMapping.getUuid())) {
|
||||
if (plot.removeTrusted(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callTrusted(player, plot, uuid, false);
|
||||
.callTrusted(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
}
|
||||
} else if (plot.getMembers().contains(uuid)) {
|
||||
if (plot.removeMember(uuid)) {
|
||||
} else if (plot.getMembers().contains(uuidMapping.getUuid())) {
|
||||
if (plot.removeMember(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callMember(player, plot, uuid, false);
|
||||
.callMember(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
}
|
||||
} else if (plot.getDenied().contains(uuid)) {
|
||||
if (plot.removeDenied(uuid)) {
|
||||
} else if (plot.getDenied().contains(uuidMapping.getUuid())) {
|
||||
if (plot.removeDenied(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callDenied(player, plot, uuid, false);
|
||||
.callDenied(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
}
|
||||
} else if (uuid == DBFunc.EVERYONE) {
|
||||
if (plot.removeTrusted(uuid)) {
|
||||
} else if (uuidMapping.getUuid() == DBFunc.EVERYONE) {
|
||||
if (plot.removeTrusted(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callTrusted(player, plot, uuid, false);
|
||||
.callTrusted(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
} else if (plot.removeMember(uuid)) {
|
||||
} else if (plot.removeMember(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callMember(player, plot, uuid, false);
|
||||
.callMember(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
} else if (plot.removeDenied(uuid)) {
|
||||
} else if (plot.removeDenied(uuidMapping.getUuid())) {
|
||||
PlotSquared.get().getEventDispatcher()
|
||||
.callDenied(player, plot, uuid, false);
|
||||
.callDenied(player, plot, uuidMapping.getUuid(), false);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,11 +35,11 @@ import com.plotsquared.core.util.Permissions;
|
|||
import com.plotsquared.core.util.TabCompletions;
|
||||
import com.plotsquared.core.util.task.RunnableVal2;
|
||||
import com.plotsquared.core.util.task.RunnableVal3;
|
||||
import com.plotsquared.core.uuid.UUIDMapping;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
|
||||
|
@ -81,28 +81,28 @@ public class Trust extends Command {
|
|||
return;
|
||||
} else {
|
||||
checkTrue(!uuids.isEmpty(), Captions.INVALID_PLAYER, args[0]);
|
||||
Iterator<UUID> iterator = uuids.iterator();
|
||||
Iterator<UUIDMapping> iterator = uuids.iterator();
|
||||
int size = currentPlot.getTrusted().size() + currentPlot.getMembers().size();
|
||||
while (iterator.hasNext()) {
|
||||
UUID uuid = iterator.next();
|
||||
if (uuid == DBFunc.EVERYONE && !(
|
||||
UUIDMapping uuidMapping = iterator.next();
|
||||
if (uuidMapping.getUuid() == DBFunc.EVERYONE && !(
|
||||
Permissions.hasPermission(player, Captions.PERMISSION_TRUST_EVERYONE) || Permissions
|
||||
.hasPermission(player, Captions.PERMISSION_ADMIN_COMMAND_TRUST))) {
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, MainUtil.getName(uuid));
|
||||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, uuidMapping.getUsername());
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (currentPlot.isOwner(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid));
|
||||
if (currentPlot.isOwner(uuidMapping.getUuid())) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername());
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
if (currentPlot.getTrusted().contains(uuid)) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, MainUtil.getName(uuid));
|
||||
if (currentPlot.getTrusted().contains(uuidMapping.getUuid())) {
|
||||
MainUtil.sendMessage(player, Captions.ALREADY_ADDED, uuidMapping.getUsername());
|
||||
iterator.remove();
|
||||
continue;
|
||||
}
|
||||
size += currentPlot.getMembers().contains(uuid) ? 0 : 1;
|
||||
size += currentPlot.getMembers().contains(uuidMapping.getUuid()) ? 0 : 1;
|
||||
}
|
||||
checkTrue(!uuids.isEmpty(), null);
|
||||
checkTrue(size <= currentPlot.getArea().getMaxPlotMembers() || Permissions
|
||||
|
@ -110,16 +110,16 @@ public class Trust extends Command {
|
|||
Captions.PLOT_MAX_MEMBERS);
|
||||
// Success
|
||||
confirm.run(this, () -> {
|
||||
for (UUID uuid : uuids) {
|
||||
if (uuid != DBFunc.EVERYONE) {
|
||||
if (!currentPlot.removeMember(uuid)) {
|
||||
if (currentPlot.getDenied().contains(uuid)) {
|
||||
currentPlot.removeDenied(uuid);
|
||||
for (UUIDMapping uuidMapping : uuids) {
|
||||
if (uuidMapping.getUuid() != DBFunc.EVERYONE) {
|
||||
if (!currentPlot.removeMember(uuidMapping.getUuid())) {
|
||||
if (currentPlot.getDenied().contains(uuidMapping.getUuid())) {
|
||||
currentPlot.removeDenied(uuidMapping.getUuid());
|
||||
}
|
||||
}
|
||||
}
|
||||
currentPlot.addTrusted(uuid);
|
||||
PlotSquared.get().getEventDispatcher().callTrusted(player, currentPlot, uuid, true);
|
||||
currentPlot.addTrusted(uuidMapping.getUuid());
|
||||
PlotSquared.get().getEventDispatcher().callTrusted(player, currentPlot, uuidMapping.getUuid(), true);
|
||||
MainUtil.sendMessage(player, Captions.TRUSTED_ADDED);
|
||||
}
|
||||
}, null);
|
||||
|
|
|
@ -180,7 +180,9 @@ public class Visit extends Command {
|
|||
Captions.COMMAND_SYNTAX.send(player, getUsage());
|
||||
} else {
|
||||
final UUID uuid = uuids.toArray(new UUID[0])[0];
|
||||
this.visit(player, PlotQuery.newQuery().ownedBy(uuid).whereBasePlot(), finalSortByArea, confirm, whenDone, finalPage1);
|
||||
this.visit(player, PlotQuery.newQuery()
|
||||
.thatPasses(plot -> plot.isOwner(uuid)),
|
||||
finalSortByArea, confirm, whenDone, finalPage1);
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
@ -209,7 +211,7 @@ public class Visit extends Command {
|
|||
MainUtil.sendMessage(player, Captions.INVALID_PLAYER, finalArgs[0]);
|
||||
}
|
||||
} else {
|
||||
this.visit(player, PlotQuery.newQuery().ownedBy(uuid).whereBasePlot(), null, confirm, whenDone, finalPage);
|
||||
this.visit(player, PlotQuery.newQuery().thatPasses(plot -> plot.isOwner(uuid)).whereBasePlot(), null, confirm, whenDone, finalPage);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -262,27 +264,4 @@ public class Visit extends Command {
|
|||
|
||||
return completions;
|
||||
}
|
||||
|
||||
private void completeNumbers(final List<Command> commands, final String arg, final int start) {
|
||||
for (int i = 0; i < 100; i++) {
|
||||
final String command = Integer.toString(start + 1);
|
||||
if (!command.toLowerCase().startsWith(arg.toLowerCase())) {
|
||||
continue;
|
||||
}
|
||||
commands.add(new Command(this, false, command, "",
|
||||
RequiredType.NONE, CommandCategory.TELEPORT) {});
|
||||
}
|
||||
}
|
||||
|
||||
private void completeAreas(final List<Command> commands, final String arg) {
|
||||
for (final PlotArea area : PlotSquared.get().getPlotAreas()) {
|
||||
final String areaName = area.getWorldName() + ";" + area.getId();
|
||||
if (!areaName.toLowerCase().startsWith(arg.toLowerCase())) {
|
||||
continue;
|
||||
}
|
||||
commands.add(new Command(this, false, area.getWorldName() + ";" + area.getId(), "",
|
||||
RequiredType.NONE, CommandCategory.TELEPORT) {});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -748,10 +748,9 @@ public class MainUtil {
|
|||
return ratings;
|
||||
}
|
||||
|
||||
public static void getUUIDsFromString(final String list, final BiConsumer<Collection<UUID>, Throwable> consumer) {
|
||||
public static void getUUIDsFromString(final String list, final BiConsumer<Collection<UUIDMapping>, Throwable> consumer) {
|
||||
String[] split = list.split(",");
|
||||
|
||||
final Set<UUID> result = new HashSet<>();
|
||||
final Set<UUIDMapping> result = new HashSet<>();
|
||||
final List<String> request = new LinkedList<>();
|
||||
|
||||
for (final String name : split) {
|
||||
|
@ -759,10 +758,10 @@ public class MainUtil {
|
|||
consumer.accept(Collections.emptySet(), null);
|
||||
return;
|
||||
} else if ("*".equals(name)) {
|
||||
result.add(DBFunc.EVERYONE);
|
||||
result.add(new UUIDMapping(DBFunc.EVERYONE, "*"));
|
||||
} else if (name.length() > 16) {
|
||||
try {
|
||||
result.add(UUID.fromString(name));
|
||||
result.add(new UUIDMapping(UUID.fromString(name), name));
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
consumer.accept(Collections.emptySet(), null);
|
||||
return;
|
||||
|
@ -780,9 +779,7 @@ public class MainUtil {
|
|||
if (throwable != null) {
|
||||
consumer.accept(null, throwable);
|
||||
} else {
|
||||
for (final UUIDMapping uuid : uuids) {
|
||||
result.add(uuid.getUuid());
|
||||
}
|
||||
result.addAll(uuids);
|
||||
consumer.accept(result, null);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<p align="center">
|
||||
<img src="https://i.imgur.com/Kd7N6uf.png">
|
||||
<img src="https://i.imgur.com/33Y65YL.png" width="300">
|
||||
</p>
|
||||
|
||||
---
|
||||
|
|
|
@ -133,7 +133,6 @@ subprojects {
|
|||
relocate("org.json", "com.plotsquared.json") {
|
||||
exclude "org/json/simple/**"
|
||||
}
|
||||
// relocate('org.mcstats', 'com.plotsquared.stats')
|
||||
archiveFileName = "${project.name}-${parent.version}.jar"
|
||||
destinationDirectory = file "../target"
|
||||
}
|
||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
2
gradlew
vendored
2
gradlew
vendored
|
@ -82,6 +82,7 @@ esac
|
|||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
|
@ -129,6 +130,7 @@ fi
|
|||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
|
|
1
gradlew.bat
vendored
1
gradlew.bat
vendored
|
@ -84,6 +84,7 @@ set CMD_LINE_ARGS=%*
|
|||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
|
||||
|
|
Loading…
Reference in a new issue