Use Reflection to handle NMS
This commit is contained in:
parent
b75ae6d05e
commit
5bf87e50a5
42
jar/pom.xml
42
jar/pom.xml
|
@ -13,48 +13,6 @@
|
|||
<artifactId>jar</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_8_R3</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_8_R1</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_8_R2</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_9_R1</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_9_R2</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS_hook_1_10_R1</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>plugin</artifactId>
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>boosCooldowns</artifactId>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>NMS_hook_1_10_R1</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!--Spigot API-->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.10-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_10_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_10_R1.IChatBaseComponent.ChatSerializer;
|
||||
import net.minecraft.server.v1_10_R1.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_10_R1
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_8_R1.ChatSerializer;
|
||||
import net.minecraft.server.v1_8_R1.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_8_R1
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_8_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_8_R2.IChatBaseComponent.ChatSerializer;
|
||||
import net.minecraft.server.v1_8_R2.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_8_R2
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_8_R3
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
*
|
||||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_9_R1.IChatBaseComponent.ChatSerializer;
|
||||
import net.minecraft.server.v1_9_R1.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_9_R1
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>boosCooldowns</artifactId>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<relativePath>../../pom.xml</relativePath>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>NMS_hook_1_9_R2</artifactId>
|
||||
|
||||
<dependencies>
|
||||
<!--Spigot API-->
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>1.9.4-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -1,29 +0,0 @@
|
|||
package nms;
|
||||
|
||||
import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import net.minecraft.server.v1_9_R2.IChatBaseComponent.ChatSerializer;
|
||||
import net.minecraft.server.v1_9_R2.PacketPlayOutChat;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook_v1_9_R2
|
||||
implements NMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json)));
|
||||
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(new PacketPlayOutChat(ChatSerializer.a(json), (byte) 2));
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -20,12 +20,6 @@
|
|||
<version>${minecraft.version}-${bukkit.version}-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot</artifactId>
|
||||
<version>${minecraft.version}-${bukkit.version}-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!--Bukkit API-->
|
||||
<dependency>
|
||||
<groupId>org.bukkit</groupId>
|
||||
|
@ -38,12 +32,6 @@
|
|||
<artifactId>Vault</artifactId>
|
||||
<version>LATEST</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cz.boosik</groupId>
|
||||
<artifactId>NMS</artifactId>
|
||||
<version>3.11.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<finalName>plugin</finalName>
|
||||
|
|
|
@ -7,7 +7,7 @@ import org.bukkit.entity.Player;
|
|||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public interface NMSHook {
|
||||
public interface INMSHook {
|
||||
|
||||
/**
|
||||
* Sends a JSON message to a player.
|
||||
|
@ -15,7 +15,7 @@ public interface NMSHook {
|
|||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendJSON(String json, Player player);
|
||||
void sendJSON(String json, Player player);
|
||||
|
||||
/**
|
||||
* Sends an actionbar to a player.
|
||||
|
@ -23,6 +23,6 @@ public interface NMSHook {
|
|||
* @param json (String) - the plain JSON
|
||||
* @param player (Player) - the player
|
||||
*/
|
||||
public void sendActionBar(String json, Player player);
|
||||
void sendActionBar(String json, Player player);
|
||||
|
||||
}
|
|
@ -9,9 +9,9 @@ import org.bukkit.plugin.Plugin;
|
|||
*/
|
||||
public class NMS {
|
||||
|
||||
private static NMSHook hook;
|
||||
private static INMSHook hook;
|
||||
private static String version;
|
||||
private static boolean compatible = false;
|
||||
private static boolean compatible = true;
|
||||
|
||||
/**
|
||||
* Gets the server version and adjusts this API accordingly.
|
||||
|
@ -29,33 +29,19 @@ public class NMS {
|
|||
return new NMSSetupResponse(null, false);
|
||||
}
|
||||
|
||||
if (version.equals("v1_9_R1")) {
|
||||
hook = new NMSHook_v1_9_R1();
|
||||
} else if (version.equals("v1_9_R2")) {
|
||||
hook = new NMSHook_v1_9_R2();
|
||||
} else if (version.equals("v1_8_R3")) {
|
||||
hook = new NMSHook_v1_8_R3();
|
||||
} else if (version.equals("v1_8_R2")) {
|
||||
hook = new NMSHook_v1_8_R2();
|
||||
} else if (version.equals("v1_8_R1")) {
|
||||
hook = new NMSHook_v1_8_R1();
|
||||
} else if (version.equals("v1_10_R1")) {
|
||||
hook = new NMSHook_v1_10_R1();
|
||||
}
|
||||
hook = new NMSHook();
|
||||
|
||||
compatible = hook != null;
|
||||
|
||||
return new NMSSetupResponse(version, compatible);
|
||||
return new NMSSetupResponse(version, true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the NMS hook, if NMS is hooked.
|
||||
*
|
||||
* @return (NMSHook) - the NMSHook.
|
||||
* @return (INMSHook) - the INMSHook.
|
||||
* @throws NMSNotHookedException if NMS is not hooked (by using {@link #setup(Plugin)})
|
||||
*/
|
||||
public static NMSHook getHook()
|
||||
public static INMSHook getHook()
|
||||
throws NMSNotHookedException {
|
||||
|
||||
if (!compatible) {
|
|
@ -0,0 +1,68 @@
|
|||
package nms;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* All rights reserved.
|
||||
*
|
||||
* @author ColoredCarrot
|
||||
*/
|
||||
public class NMSHook
|
||||
implements INMSHook {
|
||||
|
||||
public void sendJSON(String json, Player player) {
|
||||
try {
|
||||
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
|
||||
Object nmsPlayer = player.getClass().getMethod("getHandle").invoke(player);
|
||||
Object connection = nmsPlayer.getClass().getField("playerConnection").get(nmsPlayer);
|
||||
Class<?> chatSerializer = Class.forName("net.minecraft.server." + version + ".IChatBaseComponent$ChatSerializer");
|
||||
Class<?> chatComponent = Class.forName("net.minecraft.server." + version + ".IChatBaseComponent");
|
||||
Class<?> packet = Class.forName("net.minecraft.server." + version + ".PacketPlayOutChat");
|
||||
Constructor constructor = packet.getConstructor(chatComponent);
|
||||
|
||||
Object text = chatSerializer.getMethod("a", String.class).invoke(chatSerializer, json);
|
||||
Object packetFinal = constructor.newInstance(text);
|
||||
|
||||
Field field = packetFinal.getClass().getDeclaredField("a");
|
||||
field.setAccessible(true);
|
||||
field.set(packetFinal, text);
|
||||
connection
|
||||
.getClass()
|
||||
.getMethod("sendPacket", Class.forName("net.minecraft.server." + version + ".Packet"))
|
||||
.invoke(connection, packetFinal);
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void sendActionBar(String json, Player player) {
|
||||
try {
|
||||
String version = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
|
||||
Object nmsPlayer = player.getClass().getMethod("getHandle").invoke(player);
|
||||
Object connection = nmsPlayer.getClass().getField("playerConnection").get(nmsPlayer);
|
||||
Class<?> chatSerializer = Class.forName("net.minecraft.server." + version + ".IChatBaseComponent$ChatSerializer");
|
||||
Class<?> chatComponent = Class.forName("net.minecraft.server." + version + ".IChatBaseComponent");
|
||||
Class<?> packet = Class.forName("net.minecraft.server." + version + ".PacketPlayOutChat");
|
||||
Constructor constructor = packet.getConstructor(chatComponent, byte.class);
|
||||
|
||||
Object text = chatSerializer.getMethod("a", String.class).invoke(chatSerializer, json);
|
||||
Object packetFinal = constructor.newInstance(text, (byte) 2);
|
||||
|
||||
Field field = packetFinal.getClass().getDeclaredField("a");
|
||||
field.setAccessible(true);
|
||||
field.set(packetFinal, text);
|
||||
connection
|
||||
.getClass()
|
||||
.getMethod("sendPacket", Class.forName("net.minecraft.server." + version + ".Packet"))
|
||||
.invoke(connection, packetFinal);
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
7
pom.xml
7
pom.xml
|
@ -5,13 +5,6 @@
|
|||
<artifactId>boosCooldowns</artifactId>
|
||||
<version>${boosCooldowns.version}</version>
|
||||
<modules>
|
||||
<module>nms/NMS_hook_1_8_R1</module>
|
||||
<module>nms/NMS_hook_1_8_R2</module>
|
||||
<module>nms/NMS_hook_1_8_R3</module>
|
||||
<module>nms/NMS_hook_1_9_R1</module>
|
||||
<module>nms/NMS_hook_1_9_R2</module>
|
||||
<module>nms/NMS_hook_1_10_R1</module>
|
||||
<module>nms/NMS</module>
|
||||
<module>plugin</module>
|
||||
<module>jar</module>
|
||||
</modules>
|
||||
|
|
Loading…
Reference in New Issue