Skip to content

Commit 59f1c83

Browse files
committed
feat(spigot): add experimental packetevents support
1 parent e994c4d commit 59f1c83

File tree

13 files changed

+115
-25
lines changed

13 files changed

+115
-25
lines changed

core/loader/src/main/java/com/rexcantor64/triton/loader/utils/LoaderBootstrap.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@
55
*/
66
public interface LoaderBootstrap {
77

8-
default void onEnable() {}
8+
default void onLoad() {
9+
}
910

10-
default void onDisable() {}
11+
default void onEnable() {
12+
}
13+
14+
default void onDisable() {
15+
}
1116

1217
}

core/src/main/java/com/rexcantor64/triton/Triton.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public static boolean isSpigot() {
9595
return instance;
9696
}
9797

98-
protected void onEnable() {
98+
public void onLoad() {
9999
instance = this;
100100
TritonAPIUtils.register(instance);
101101

@@ -104,15 +104,8 @@ protected void onEnable() {
104104
logger = loader.getTritonLogger();
105105

106106
config = new MainConfig(this);
107-
languageManager = new LanguageManager(this);
108-
messagesConfig = new MessagesConfig();
109-
translationManager = new TranslationManager(this);
110-
111-
LanguageMigration.migrate();
112-
113-
reload();
114-
115-
twinManager = new TwinManager(this);
107+
configYAML = loadYAML("config", getConfigFileName());
108+
config.setup();
116109

117110
if (config.isUsePacketEvents()) {
118111
val dependencyManager = Triton.get().getLoader().getDependencyManager();
@@ -125,14 +118,27 @@ protected void onEnable() {
125118
}
126119

127120
if (this.packetEventsManager != null) {
128-
// TODO: when spigot is supported, onLoad needs to be called earlier
129121
this.packetEventsManager.onLoad();
122+
}
123+
}
124+
125+
public void onEnable() {
126+
languageManager = new LanguageManager(this);
127+
messagesConfig = new MessagesConfig();
128+
translationManager = new TranslationManager(this);
129+
130+
LanguageMigration.migrate();
131+
132+
reload();
133+
134+
twinManager = new TwinManager(this);
135+
136+
if (this.packetEventsManager != null) {
130137
this.packetEventsManager.onEnable();
131138
}
132139
}
133140

134-
protected void onDisable() {
135-
// TODO: this should be called at some point
141+
public void onDisable() {
136142
if (this.packetEventsManager != null) {
137143
this.packetEventsManager.onDisable();
138144
}

core/src/main/java/com/rexcantor64/triton/dependencies/Dependency.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ public enum Dependency {
136136
relocate("com{}github{}retrooper{}packetevents", "packetevents{}api"),
137137
relocate("io{}github{}retrooper{}packetevents", "packetevents{}impl")
138138
),
139+
PACKET_EVENTS_SPIGOT(
140+
"com{}github{}retrooper",
141+
"packetevents-spigot",
142+
"2.10.0",
143+
"DFb6juVlnwbbNIvGYUXDIRfjXFWQ+isuU/iVuwn56Yw=",
144+
relocate("com{}github{}retrooper{}packetevents", "packetevents{}api"),
145+
relocate("io{}github{}retrooper{}packetevents", "packetevents{}impl")
146+
),
139147
PACKET_EVENTS_VELOCITY(
140148
"com{}github{}retrooper",
141149
"packetevents-velocity",

core/src/main/java/com/rexcantor64/triton/packetinterceptor/PacketEventsManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ public void onLoad() {
3131

3232
initPacketEventsPlatform();
3333
}
34-
this.packetEventsListener.setupHandlers();
3534
PacketEvents.getAPI().load();
3635
if (isPacketEventsVendored) {
3736
// Don't check for PacketEvents updates if it's vendored (the user can't do anything)
@@ -40,10 +39,11 @@ public void onLoad() {
4039
// We can't do this when not vendored, since it might affect other plugins.
4140
PacketEvents.getAPI().getSettings().reEncodeByDefault(false);
4241
}
43-
PacketEvents.getAPI().getEventManager().registerListener(this.packetEventsListener, PacketListenerPriority.HIGHEST);
4442
}
4543

4644
public void onEnable() {
45+
this.packetEventsListener.setupHandlers();
46+
PacketEvents.getAPI().getEventManager().registerListener(this.packetEventsListener, PacketListenerPriority.HIGHEST);
4747
PacketEvents.getAPI().init();
4848
}
4949

triton-bungeecord/loader/src/main/java/com/rexcantor64/triton/loader/BungeeLoader.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public BungeeLoader() {
2424
.loadPlugin();
2525
}
2626

27+
@Override
28+
public void onLoad() {
29+
this.plugin.onLoad();
30+
}
31+
2732
@Override
2833
public void onEnable() {
2934
this.plugin.onEnable();

triton-bungeecord/src/main/java/com/rexcantor64/triton/bungeecord/plugin/BungeePlugin.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,27 @@ public class BungeePlugin implements PluginLoader, LoaderBootstrap {
3232
private DependencyManager dependencyManager;
3333

3434
@Override
35-
public void onEnable() {
35+
public void onLoad() {
3636
this.logger = new JavaLogger(this.getPlugin().getLogger());
3737
this.dependencyManager = new DependencyManager(new BungeeLibraryManager(this.getPlugin()), loaderFlags);
3838

3939
this.dependencyManager.init();
40+
41+
new BungeeTriton(this).onLoad();
42+
}
43+
44+
@Override
45+
public void onEnable() {
4046
this.dependencyManager.loadDependency(Dependency.ADVENTURE_TEXT_SERIALIZER_BUNGEECORD);
4147

42-
new BungeeTriton(this).onEnable();
48+
Triton.get().onEnable();
4349
}
4450

4551
@Override
4652
public void onDisable() {
4753
// Set the formatter back to default
4854
try {
55+
Triton.get().onDisable();
4956
if (Triton.get().getConfig().isTerminal()) {
5057
BungeeTerminalManager.uninjectTerminalFormatter();
5158
}

triton-spigot/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ dependencies {
2424
compileOnly 'com.comphenix.protocol:ProtocolLib:5.4.0-SNAPSHOT'
2525
compileOnly 'me.clip:placeholderapi:2.11.6'
2626

27+
compileOnly 'com.github.retrooper:packetevents-spigot:2.10.0'
28+
2729
// Libraries available on Spigot
2830
compileOnly 'org.fusesource.jansi:jansi:2.4.0' // Used for terminal translation
2931

triton-spigot/loader/src/main/java/com/rexcantor64/triton/loader/SpigotLoader.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public SpigotLoader() {
2828
builder.flag(LoaderFlag.RELOCATE_ADVENTURE);
2929
}
3030
}
31+
builder.flag(LoaderFlag.VENDOR_PACKET_EVENTS);
3132

3233
this.plugin = builder
3334
.build()
@@ -75,6 +76,11 @@ private boolean shouldRelocateAdventure() {
7576
}
7677
}
7778

79+
@Override
80+
public void onLoad() {
81+
this.plugin.onLoad();
82+
}
83+
7884
@Override
7985
public void onEnable() {
8086
this.plugin.onEnable();

triton-spigot/src/main/java/com/rexcantor64/triton/spigot/SpigotTriton.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.rexcantor64.triton.spigot.packetinterceptor.HandlerFunction;
1717
import com.rexcantor64.triton.spigot.packetinterceptor.MotdPacketHandler;
1818
import com.rexcantor64.triton.spigot.packetinterceptor.ProtocolLibListener;
19+
import com.rexcantor64.triton.spigot.packetinterceptor.SpigotPacketEventsManager;
1920
import com.rexcantor64.triton.spigot.placeholderapi.TritonPlaceholderHook;
2021
import com.rexcantor64.triton.spigot.player.SpigotLanguagePlayer;
2122
import com.rexcantor64.triton.spigot.plugin.SpigotPlugin;
@@ -98,7 +99,9 @@ public void onEnable() {
9899
Bukkit.getPluginManager().registerEvents(guiManager = new GuiManager(), getJavaPlugin());
99100
Bukkit.getPluginManager().registerEvents(new BukkitListener(), getJavaPlugin());
100101

101-
registerProtocolLibListeners();
102+
if (!this.getConfig().isUsePacketEvents()) {
103+
registerProtocolLibListeners();
104+
}
102105

103106
if (getConfig().isBungeecord()) {
104107
if (!isSpigotProxyMode() && !isPaperProxyMode()) {
@@ -170,7 +173,7 @@ public void reload() {
170173

171174
@Override
172175
protected void initPacketEventsManager() {
173-
// TODO: triton does not support packetevents on this platform yet
176+
this.packetEventsManager = new SpigotPacketEventsManager();
174177
}
175178

176179
@Override
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.rexcantor64.triton.spigot.packetinterceptor;
2+
3+
import com.github.retrooper.packetevents.PacketEvents;
4+
import com.rexcantor64.triton.dependencies.Dependency;
5+
import com.rexcantor64.triton.packetinterceptor.PacketEventsManager;
6+
import com.rexcantor64.triton.spigot.SpigotTriton;
7+
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
8+
import lombok.NonNull;
9+
import lombok.val;
10+
11+
public class SpigotPacketEventsManager extends PacketEventsManager {
12+
@Override
13+
protected void initPacketEventsPlatform() {
14+
val loader = SpigotTriton.asSpigot().getLoader();
15+
PacketEvents.setAPI(SpigotPacketEventsBuilder.build(loader.getPlugin()));
16+
}
17+
18+
@Override
19+
protected @NonNull Dependency getPlatformPacketEventsDependency() {
20+
return Dependency.PACKET_EVENTS_SPIGOT;
21+
}
22+
}

0 commit comments

Comments
 (0)