Skip to content

Commit 60d0b4d

Browse files
Properly Implement NMS
1 parent d7185c1 commit 60d0b4d

15 files changed

Lines changed: 544 additions & 29 deletions

README.md

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,47 @@ database:
222222

223223
# The prefix to prepend to all created tables
224224
table_prefix: "tdl_"
225-
```
225+
```
226+
227+
## Build Requirements
228+
229+
Since TrueDiscordLink uses NMS, you need to have all versions of NMS available.
230+
231+
The easiest way to do this is to use the following GitHub repository, follow its instructions, then copy the final jar to the project, naming it "all-spigot-nms.jar".
232+
233+
https://github.com/Jacxk/all-spigot-nms
234+
235+
If, for whatever reason, this doesn't work, you can comment that out and include all of the following versions via BuildTools:
236+
237+
```
238+
(Java 8)
239+
1.8
240+
1.8.3
241+
1.8.8
242+
1.9.2
243+
1.9.4
244+
1.10.2
245+
1.11.2
246+
1.12.2
247+
1.13
248+
1.13.2
249+
1.14.4
250+
1.15.2
251+
1.16.1
252+
1.16.3
253+
1.16.5
254+
255+
(Java 16)
256+
1.17.1
257+
258+
(Java 17)
259+
1.18.1
260+
1.18.2
261+
```
262+
263+
Run BuildTools with the following command for each version:
264+
```
265+
java -jar BuildTools.jar --rev <version> --remapped
266+
```
267+
268+
Depending on your default Java version, you may need to provide the file location to a "java.exe" file instead of just running "java" for some (or most) of the commands.

pom.xml

Lines changed: 138 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -261,15 +261,6 @@
261261
<scope>provided</scope>
262262
</dependency>
263263

264-
<!-- BUILD: Remapped -->
265-
<dependency>
266-
<groupId>org.spigotmc</groupId>
267-
<artifactId>spigot</artifactId>
268-
<version>1.18.2-R0.1-SNAPSHOT</version>
269-
<classifier>remapped-mojang</classifier>
270-
<scope>provided</scope>
271-
</dependency>
272-
273264
<!-- BUILD: PlaceholderAPI -->
274265
<dependency>
275266
<groupId>me.clip</groupId>
@@ -286,6 +277,144 @@
286277
<scope>provided</scope>
287278
</dependency>
288279

280+
<!-- BUILD: Mojang Mappings for NMS -->
281+
<dependency>
282+
<groupId>local.spigot.nms</groupId>
283+
<artifactId>all-spigot-nms</artifactId>
284+
<version>LATEST</version>
285+
<scope>system</scope>
286+
<systemPath>${project.basedir}/all-spigot-nms.jar</systemPath>
287+
</dependency>
288+
289+
<!-- 1_18_R2 - 1.18.2 -->
290+
<dependency>
291+
<groupId>org.spigotmc</groupId>
292+
<artifactId>spigot</artifactId>
293+
<version>1.18.2-R0.1-SNAPSHOT</version>
294+
<classifier>remapped-mojang</classifier>
295+
<scope>provided</scope>
296+
</dependency>
297+
<!-- 1_18_R1 - 1.18.1 -->
298+
<dependency>
299+
<groupId>org.spigotmc.</groupId>
300+
<artifactId>spigot</artifactId>
301+
<version>1.18.1-R0.1-SNAPSHOT</version>
302+
<classifier>remapped-mojang</classifier>
303+
<scope>provided</scope>
304+
</dependency>
305+
<!-- &lt;!&ndash; 1_17_R1 - 1.17.1 &ndash;&gt;-->
306+
<!-- <dependency>-->
307+
<!-- <groupId>org.spigotmc...</groupId>-->
308+
<!-- <artifactId>spigot</artifactId>-->
309+
<!-- <version>1.17.1-R0.1-SNAPSHOT</version>-->
310+
<!-- <classifier>remapped-mojang</classifier>-->
311+
<!-- <scope>provided</scope>-->
312+
<!-- </dependency>-->
313+
<!-- &lt;!&ndash; 1_16_R3 - 1.16.5 &ndash;&gt;-->
314+
<!-- <dependency>-->
315+
<!-- <groupId>org.spigotmc....</groupId>-->
316+
<!-- <artifactId>spigot</artifactId>-->
317+
<!-- <version>1.16.5-R0.1-SNAPSHOT</version>-->
318+
<!-- <scope>provided</scope>-->
319+
<!-- </dependency>-->
320+
<!-- &lt;!&ndash; 1_16_R2 - 1.16.3 &ndash;&gt;-->
321+
<!-- <dependency>-->
322+
<!-- <groupId>org.spigotmc.....</groupId>-->
323+
<!-- <artifactId>spigot</artifactId>-->
324+
<!-- <version>1.16.3-R0.1-SNAPSHOT</version>-->
325+
<!-- <scope>provided</scope>-->
326+
<!-- </dependency>-->
327+
<!-- &lt;!&ndash; 1_16_R1 - 1.16.1 &ndash;&gt;-->
328+
<!-- <dependency>-->
329+
<!-- <groupId>org.spigotmc......</groupId>-->
330+
<!-- <artifactId>spigot</artifactId>-->
331+
<!-- <version>1.16.1-R0.1-SNAPSHOT</version>-->
332+
<!-- <scope>provided</scope>-->
333+
<!-- </dependency>-->
334+
<!-- &lt;!&ndash; 1_15_R1 - 1.15.2 &ndash;&gt;-->
335+
<!-- <dependency>-->
336+
<!-- <groupId>org.spigotmc.......</groupId>-->
337+
<!-- <artifactId>spigot</artifactId>-->
338+
<!-- <version>1.15.2-R0.1-SNAPSHOT</version>-->
339+
<!-- <scope>provided</scope>-->
340+
<!-- </dependency>-->
341+
<!-- &lt;!&ndash; 1_14_R1 - 1.14.4 &ndash;&gt;-->
342+
<!-- <dependency>-->
343+
<!-- <groupId>org.spigotmc........</groupId>-->
344+
<!-- <artifactId>spigot</artifactId>-->
345+
<!-- <version>1.14.4-R0.1-SNAPSHOT</version>-->
346+
<!-- <scope>provided</scope>-->
347+
<!-- </dependency>-->
348+
<!-- &lt;!&ndash; 1_13_R2 - 1.13.2 &ndash;&gt;-->
349+
<!-- <dependency>-->
350+
<!-- <groupId>org.spigotmc.........</groupId>-->
351+
<!-- <artifactId>spigot</artifactId>-->
352+
<!-- <version>1.13.2-R0.1-SNAPSHOT</version>-->
353+
<!-- <scope>provided</scope>-->
354+
<!-- </dependency>-->
355+
<!-- &lt;!&ndash; 1_13_R1 - 1.13 &ndash;&gt;-->
356+
<!-- <dependency>-->
357+
<!-- <groupId>org.spigotmc..........</groupId>-->
358+
<!-- <artifactId>spigot</artifactId>-->
359+
<!-- <version>1.13-R0.1-SNAPSHOT</version>-->
360+
<!-- <scope>provided</scope>-->
361+
<!-- </dependency>-->
362+
<!-- &lt;!&ndash; 1_12_R1 - 1.12.2 &ndash;&gt;-->
363+
<!-- <dependency>-->
364+
<!-- <groupId>org.spigotmc...........</groupId>-->
365+
<!-- <artifactId>spigot</artifactId>-->
366+
<!-- <version>1.12.2-R0.1-SNAPSHOT</version>-->
367+
<!-- <scope>provided</scope>-->
368+
<!-- </dependency>-->
369+
<!-- &lt;!&ndash; 1_11_R1 - 1.11.2 &ndash;&gt;-->
370+
<!-- <dependency>-->
371+
<!-- <groupId>org.spigotmc............</groupId>-->
372+
<!-- <artifactId>spigot</artifactId>-->
373+
<!-- <version>1.11.2-R0.1-SNAPSHOT</version>-->
374+
<!-- <scope>provided</scope>-->
375+
<!-- </dependency>-->
376+
<!-- &lt;!&ndash; 1_10_R1 - 1.10.2 &ndash;&gt;-->
377+
<!-- <dependency>-->
378+
<!-- <groupId>org.spigotmc.............</groupId>-->
379+
<!-- <artifactId>spigot</artifactId>-->
380+
<!-- <version>1.10.2-R0.1-SNAPSHOT</version>-->
381+
<!-- <scope>provided</scope>-->
382+
<!-- </dependency>-->
383+
<!-- &lt;!&ndash; 1_9_R2 - 1.9.4 &ndash;&gt;-->
384+
<!-- <dependency>-->
385+
<!-- <groupId>org.spigotmc..............</groupId>-->
386+
<!-- <artifactId>spigot</artifactId>-->
387+
<!-- <version>1.9.4-R0.1-SNAPSHOT</version>-->
388+
<!-- <scope>provided</scope>-->
389+
<!-- </dependency>-->
390+
<!-- &lt;!&ndash; 1_9_R1 - 1.9.2 &ndash;&gt;-->
391+
<!-- <dependency>-->
392+
<!-- <groupId>org.spigotmc...............</groupId>-->
393+
<!-- <artifactId>spigot</artifactId>-->
394+
<!-- <version>1.9.2-R0.1-SNAPSHOT</version>-->
395+
<!-- <scope>provided</scope>-->
396+
<!-- </dependency>-->
397+
<!-- &lt;!&ndash; 1_8_R3 - 1.8.8 &ndash;&gt;-->
398+
<!-- <dependency>-->
399+
<!-- <groupId>org.spigotmc................</groupId>-->
400+
<!-- <artifactId>spigot</artifactId>-->
401+
<!-- <version>1.8.8-R0.1-SNAPSHOT</version>-->
402+
<!-- <scope>provided</scope>-->
403+
<!-- </dependency>-->
404+
<!-- &lt;!&ndash; 1_8_R2 - 1.8.3 &ndash;&gt;-->
405+
<!-- <dependency>-->
406+
<!-- <groupId>org.spigotmc.................</groupId>-->
407+
<!-- <artifactId>spigot</artifactId>-->
408+
<!-- <version>1.8.3-R0.1-SNAPSHOT</version>-->
409+
<!-- <scope>provided</scope>-->
410+
<!-- </dependency>-->
411+
<!-- &lt;!&ndash; 1_8_R1 - 1.8 &ndash;&gt;-->
412+
<!-- <dependency>-->
413+
<!-- <groupId>org.spigotmc..................</groupId>-->
414+
<!-- <artifactId>spigot</artifactId>-->
415+
<!-- <version>1.8-R0.1-SNAPSHOT</version>-->
416+
<!-- <scope>provided</scope>-->
417+
<!-- </dependency>-->
289418
</dependencies>
290419

291420
</project>

src/main/java/com/firecontroller1847/truediscordlink/VersionHelper.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@
33
import com.firecontroller1847.truediscordlink.nms.advancement.*;
44
import org.bukkit.Bukkit;
55

6-
// TODO: This class is unnecessary, it needs to be removed.
7-
// I used to use this class to help generify the AdvancementHelper logic. But back then I'd have
8-
// to build every version and test it, then keep the version. This removes support for TravisCI
9-
// and makes the project dependent on having every raw NMS version available. I changed it to
10-
// use reflection, but now the abstraction of classes between versions is no longer necessary.
116
public class VersionHelper {
127

138
// Variables
@@ -21,18 +16,31 @@ protected VersionHelper(TrueDiscordLink discordlink) {
2116
// Create & Load In Classes
2217
String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
2318
discordlink.getLogger().info("Server running version " + version);
24-
advancementHelper = new AdvancementHelper$1_18_R2();
25-
// if (version.equals("v1_15_R1")) {
26-
// advancementHelper = new AdvancementHelper_1_15_R1();
27-
// } else if (version.equals("v1_16_R1")) {
28-
// advancementHelper = new AdvancementHelper_1_16_R1();
29-
// } else if (version.equals("v1_16_R2")) {
30-
// advancementHelper = new AdvancementHelper_1_16_R2();
31-
// } else if (version.equals("v1_16_R3")) {
32-
// advancementHelper = new AdvancementHelper_1_16_R3();
33-
// } else {
34-
// advancementHelper = null;
35-
// }
19+
if (version.equals("v1_12_R1")) {
20+
advancementHelper = new AdvancementHelper$1_12_R1();
21+
} else if (version.equals("v1_13_R1")) {
22+
advancementHelper = new AdvancementHelper$1_13_R1();
23+
} else if (version.equals("v1_13_R2")) {
24+
advancementHelper = new AdvancementHelper$1_13_R2();
25+
} else if (version.equals("v1_14_R1")) {
26+
advancementHelper = new AdvancementHelper$1_14_R1();
27+
} else if (version.equals("v1_15_R1")) {
28+
advancementHelper = new AdvancementHelper$1_15_R1();
29+
} else if (version.equals("v1_16_R1")) {
30+
advancementHelper = new AdvancementHelper$1_16_R1();
31+
} else if (version.equals("v1_16_R2")) {
32+
advancementHelper = new AdvancementHelper$1_16_R2();
33+
} else if (version.equals("v1_16_R3")) {
34+
advancementHelper = new AdvancementHelper$1_16_R3();
35+
} else if (version.equals("v1_17_R1")) {
36+
advancementHelper = new AdvancementHelper$1_17_R1();
37+
} else if (version.equals("v1_18_R1")) {
38+
advancementHelper = new AdvancementHelper$1_18_R1();
39+
} else if (version.equals("v1_18_R2")) {
40+
advancementHelper = new AdvancementHelper$1_18_R2();
41+
} else {
42+
advancementHelper = new AdvancementHelper$UNSUPPORTED();
43+
}
3644
}
3745

3846
// Getters
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.firecontroller1847.truediscordlink.nms.advancement;
2+
3+
import org.bukkit.advancement.Advancement;
4+
import org.bukkit.craftbukkit.v1_12_R1.advancement.CraftAdvancement;
5+
6+
import java.util.Objects;
7+
8+
public class AdvancementHelper$1_12_R1 implements IAdvancementHelper {
9+
10+
@Override
11+
public String getName(Advancement bukkitAdvancement) {
12+
try {
13+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
14+
return Objects.requireNonNull(advancement.getHandle().c()).a().getText();
15+
} catch (Exception e) {
16+
e.printStackTrace();
17+
return null;
18+
}
19+
}
20+
21+
@Override
22+
public String getDescription(Advancement bukkitAdvancement) {
23+
try {
24+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
25+
return Objects.requireNonNull(advancement.getHandle().c()).b().getText();
26+
} catch (Exception e) {
27+
e.printStackTrace();
28+
return null;
29+
}
30+
}
31+
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.firecontroller1847.truediscordlink.nms.advancement;
2+
3+
import org.bukkit.advancement.Advancement;
4+
import org.bukkit.craftbukkit.v1_13_R1.advancement.CraftAdvancement;
5+
6+
import java.util.Objects;
7+
8+
public class AdvancementHelper$1_13_R1 implements IAdvancementHelper {
9+
10+
@Override
11+
public String getName(Advancement bukkitAdvancement) {
12+
try {
13+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
14+
return Objects.requireNonNull(advancement.getHandle().c()).a().getString();
15+
} catch (Exception e) {
16+
e.printStackTrace();
17+
return null;
18+
}
19+
}
20+
21+
@Override
22+
public String getDescription(Advancement bukkitAdvancement) {
23+
try {
24+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
25+
return Objects.requireNonNull(advancement.getHandle().c()).b().getString();
26+
} catch (Exception e) {
27+
e.printStackTrace();
28+
return null;
29+
}
30+
}
31+
32+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.firecontroller1847.truediscordlink.nms.advancement;
2+
3+
import org.bukkit.advancement.Advancement;
4+
import org.bukkit.craftbukkit.v1_13_R2.advancement.CraftAdvancement;
5+
6+
import java.util.Objects;
7+
8+
public class AdvancementHelper$1_13_R2 implements IAdvancementHelper {
9+
10+
@Override
11+
public String getName(Advancement bukkitAdvancement) {
12+
try {
13+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
14+
return Objects.requireNonNull(advancement.getHandle().c()).a().getString();
15+
} catch (Exception e) {
16+
e.printStackTrace();
17+
return null;
18+
}
19+
}
20+
21+
@Override
22+
public String getDescription(Advancement bukkitAdvancement) {
23+
try {
24+
CraftAdvancement advancement = (CraftAdvancement) bukkitAdvancement;
25+
return Objects.requireNonNull(advancement.getHandle().c()).b().getString();
26+
} catch (Exception e) {
27+
e.printStackTrace();
28+
return null;
29+
}
30+
}
31+
32+
}

0 commit comments

Comments
 (0)