Skip to content

Commit 6678fd2

Browse files
committed
Use class reflect registry to avoid plugin crash
1 parent d7803de commit 6678fd2

File tree

1 file changed

+45
-44
lines changed

1 file changed

+45
-44
lines changed

bukkit/src/main/java/io/github/rothes/protocolstringreplacer/packetlistener/PacketListenerManager.java

Lines changed: 45 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -73,100 +73,101 @@ public void initialize() {
7373
}
7474

7575
public void addListeners() {
76-
List<BasePacketListener> listeners = new ArrayList<>();
76+
List<Class<? extends BasePacketListener>> listeners = new ArrayList<>();
7777
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 17) {
78-
listeners.add(new SetTitleText());
79-
listeners.add(new SetSubtitleText());
80-
listeners.add(new SetActionBar());
78+
listeners.add(SetTitleText.class);
79+
listeners.add(SetSubtitleText.class);
80+
listeners.add(SetActionBar.class);
8181

82-
listeners.add(new PlayerCombatKill());
82+
listeners.add(PlayerCombatKill.class);
8383
} else {
84-
listeners.add(new Title());
85-
listeners.add(new TitleActionBar());
84+
listeners.add(Title.class);
85+
listeners.add(TitleActionBar.class);
8686

87-
listeners.add(new CombatEvent());
87+
listeners.add(CombatEvent.class);
8888
}
8989

9090
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 11) {
91-
listeners.add(new WindowItemsPost11());
91+
listeners.add(WindowItemsPost11.class);
9292
} else {
93-
listeners.add(new WindowItems());
93+
listeners.add(WindowItems.class);
9494
}
9595
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 14) {
96-
listeners.add(new MerchantTradeList());
96+
listeners.add(MerchantTradeList.class);
9797
}
9898

9999
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 18) {
100-
listeners.add(new MapChunkPost18());
101-
listeners.add(new TileEntityDataPost18());
100+
listeners.add(MapChunkPost18.class);
101+
listeners.add(TileEntityDataPost18.class);
102102
} else if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 10) {
103-
listeners.add(new MapChunk());
104-
listeners.add(new TileEntityData());
103+
listeners.add(MapChunk.class);
104+
listeners.add(TileEntityData.class);
105105
} else {
106-
listeners.add(new UpdateSign());
106+
listeners.add(UpdateSign.class);
107107
}
108108

109109
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 17) {
110-
listeners.add(new BossBarPost17());
110+
listeners.add(BossBarPost17.class);
111111
} else if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 9) {
112-
listeners.add(new BossBar());
112+
listeners.add(BossBar.class);
113113
}
114114

115115
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 19) {
116-
listeners.add(new SystemChat());
117-
listeners.add(new SystemChatActionBar());
116+
listeners.add(SystemChat.class);
117+
listeners.add(SystemChatActionBar.class);
118118
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() != 19 || ProtocolStringReplacer.getInstance().getServerMinorVersion() >= 3) {
119119
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 21) {
120-
listeners.add(new DisguisedChatPost21());
120+
listeners.add(DisguisedChatPost21.class);
121121
} else {
122-
listeners.add(new DisguisedChat());
122+
listeners.add(DisguisedChat.class);
123123
}
124124
}
125125
}
126126

127127
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() == 19 && ProtocolStringReplacer.getInstance().getServerMinorVersion() <= 2) {
128-
listeners.add(new ChatPreview());
128+
listeners.add(ChatPreview.class);
129129
}
130130

131131
if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 17) {
132-
listeners.add(new UpdateTeamPost17());
132+
listeners.add(UpdateTeamPost17.class);
133133
} else if (ProtocolStringReplacer.getInstance().getServerMajorVersion() >= 13) {
134-
listeners.add(new UpdateTeamPost13());
134+
listeners.add(UpdateTeamPost13.class);
135135
} else {
136-
listeners.add(new UpdateTeam());
136+
listeners.add(UpdateTeam.class);
137137
}
138-
listeners.add(new UpdateScore());
139-
listeners.add(new ScoreBoardObjective());
138+
listeners.add(UpdateScore.class);
139+
listeners.add(ScoreBoardObjective.class);
140140

141-
listeners.add(new KickDisconnect());
141+
listeners.add(KickDisconnect.class);
142142
if ((ProtocolStringReplacer.getInstance().getServerMajorVersion() == 20 && ProtocolStringReplacer.getInstance().getServerMinorVersion() >= 5)
143143
|| ProtocolStringReplacer.getInstance().getServerMajorVersion() > 20) {
144-
listeners.add(new TabCompletePost20_5());
144+
listeners.add(TabCompletePost20_5.class);
145145
} else {
146-
listeners.add(new TabComplete());
146+
listeners.add(TabComplete.class);
147147
}
148-
listeners.add(new Chat());
149-
listeners.add(new ChatActionBar());
150-
listeners.add(new SetSlot());
151-
listeners.add(new OpenWindow());
152-
listeners.add(new EntityMetadata());
148+
listeners.add(Chat.class);
149+
listeners.add(ChatActionBar.class);
150+
listeners.add(SetSlot.class);
151+
listeners.add(OpenWindow.class);
152+
listeners.add(EntityMetadata.class);
153153

154154

155-
listeners.add(new WindowClick());
156-
listeners.add(new SetCreativeSlot());
157-
listeners.add(new CloseWindow());
155+
listeners.add(WindowClick.class);
156+
listeners.add(SetCreativeSlot.class);
157+
listeners.add(CloseWindow.class);
158158
if ((ProtocolStringReplacer.getInstance().getServerMajorVersion() == 20 && ProtocolStringReplacer.getInstance().getServerMinorVersion() >= 2)
159159
|| ProtocolStringReplacer.getInstance().getServerMajorVersion() > 20) {
160-
listeners.add(new SettingsLocaleUpper20());
160+
listeners.add(SettingsLocaleUpper20.class);
161161
} else {
162-
listeners.add(new SettingsLocale());
162+
listeners.add(SettingsLocale.class);
163163
}
164164

165-
for (BasePacketListener listener : listeners) {
165+
for (Class<? extends BasePacketListener> listener : listeners) {
166166
try {
167-
listener.register();
167+
BasePacketListener packetListener = listener.getConstructor().newInstance();
168+
packetListener.register();
168169
} catch (Throwable throwable) {
169-
ProtocolStringReplacer.error("Unable to register listener " + listener.getClass().getSimpleName() + ":", throwable);
170+
ProtocolStringReplacer.error("Unable to register listener " + listener.getSimpleName() + ":", throwable);
170171
}
171172
}
172173

0 commit comments

Comments
 (0)