mirror of
https://github.com/trainerlord/WorldSystem.git
synced 2025-02-28 03:12:32 +01:00
Fixed WorldEditListener issues
This commit is contained in:
parent
1c674e1393
commit
767b743d78
10
pom.xml
10
pom.xml
@ -144,12 +144,12 @@
|
||||
AsyncWorld is not in the api so I have to use a local file
|
||||
Issue: https://github.com/boy0001/FastAsyncWorldedit/issues/1060
|
||||
-->
|
||||
<!-- FAWE-Bukkit Dependency -->
|
||||
<dependency>
|
||||
<groupId>com.boydti</groupId>
|
||||
<artifactId>fawe-bukkit</artifactId>
|
||||
<!-- https://ci.athion.net/job/FastAsyncWorldEdit/ws/mvn/com/boydti/fawe-bukkit/ -->
|
||||
<version>19.11.13-5505943-1282-22.3.5</version>
|
||||
<groupId>com.sk98q.worldedit</groupId>
|
||||
<artifactId>FastAsnycWorldEdit</artifactId>
|
||||
<scope>system</scope>
|
||||
<version>1.0</version>
|
||||
<systemPath>${pom.basedir}/lib/FastAsyncWorldEdit.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -1,18 +1,48 @@
|
||||
package de.butzlabben.world.listener;
|
||||
|
||||
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
|
||||
import de.butzlabben.world.config.MessageConfig;
|
||||
import de.butzlabben.world.config.WorldConfig;
|
||||
import de.butzlabben.world.config.WorldPerm;
|
||||
import de.butzlabben.world.wrapper.WorldPlayer;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.SimpleCommandMap;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class WorldEditListener implements Listener {
|
||||
|
||||
private final List<String> worldEditCommands= new ArrayList<>();
|
||||
|
||||
public WorldEditListener() {
|
||||
try {
|
||||
String packageName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
String version = packageName.substring(packageName.lastIndexOf(".") + 1);
|
||||
Class<?> serverClass = Class.forName("org.bukkit.craftbukkit." + version + ".CraftServer");
|
||||
|
||||
Field f1 = serverClass.getDeclaredField("commandMap");
|
||||
f1.setAccessible(true);
|
||||
SimpleCommandMap commandMap = (SimpleCommandMap) f1.get(Bukkit.getServer());
|
||||
|
||||
Field f2 = SimpleCommandMap.class.getDeclaredField("knownCommands");
|
||||
f2.setAccessible(true);
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
Map<String, Command> knownCommands = (Map) f2.get(commandMap);
|
||||
worldEditCommands.addAll(knownCommands.entrySet().stream().filter(entry -> entry.getKey().contains("worldedit"))
|
||||
.map(entry -> entry.getValue().getName()).collect(Collectors.toList()));
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void playerCommandHandler(PlayerCommandPreprocessEvent event) {
|
||||
String command = event.getMessage().split(" ")[0];
|
||||
@ -33,14 +63,9 @@ public class WorldEditListener implements Listener {
|
||||
}
|
||||
|
||||
private boolean isWorldEditCommand(String command) {
|
||||
WorldEditPlugin plugin = (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");
|
||||
// WorldEdit plugin not foung
|
||||
if (plugin == null)
|
||||
return false;
|
||||
if (command.startsWith("/")) {
|
||||
command = command.replaceFirst("/", "");
|
||||
}
|
||||
|
||||
return plugin.getCommand(command) != null;
|
||||
System.out.println(command);
|
||||
return worldEditCommands.contains(command)
|
||||
|| worldEditCommands.contains(command.replaceFirst("/", ""))
|
||||
|| worldEditCommands.contains(command.replaceFirst("/worldedit:", ""));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user