Implement plugins as event listeners

This commit is contained in:
Chipmunk 2022-12-24 09:43:33 -05:00
parent b8e03415c9
commit 6feabfc10a
2 changed files with 16 additions and 16 deletions

View file

@ -5,6 +5,7 @@ import com.github.steveice10.mc.protocol.MinecraftProtocol;
import com.github.steveice10.packetlib.ProxyInfo;
import com.github.steveice10.packetlib.Session;
import com.github.steveice10.packetlib.tcp.TcpClientSession;
import com.github.steveice10.packetlib.event.session.SessionListener;
import java.util.Map;
import java.util.HashMap;
import java.lang.reflect.Constructor;
@ -28,6 +29,7 @@ public class Client {
try {
Plugin plugin = pluginClass.newInstance();
plugin.inject(this, null);
if (plugin instanceof SessionListener) session.addListener((SessionListener) plugin);
plugins.put(plugin.id(), plugin);
} catch (Exception ignored) {
}

View file

@ -15,7 +15,7 @@ import java.util.List;
import java.util.ArrayList;
import java.util.UUID;
public class PlayerListPlugin implements Plugin {
public class PlayerListPlugin extends SessionAdapter implements Plugin {
private Client client;
public List<MutablePlayerListEntry> list = new ArrayList<MutablePlayerListEntry>();
@ -24,25 +24,23 @@ public class PlayerListPlugin implements Plugin {
@Override
public void inject (Client client, JsonObject options) {
this.client = client;
}
client.session().addListener(new SessionAdapter() {
@Override
public void packetReceived (Session session, Packet packet) {
if (packet instanceof ClientboundPlayerInfoPacket) {
ClientboundPlayerInfoPacket _packet = (ClientboundPlayerInfoPacket) packet;
@Override
public void packetReceived (Session session, Packet packet) {
if (packet instanceof ClientboundPlayerInfoPacket) {
ClientboundPlayerInfoPacket _packet = (ClientboundPlayerInfoPacket) packet;
PlayerListEntryAction action = _packet.getAction();
PlayerListEntryAction action = _packet.getAction();
for (PlayerListEntry entry : _packet.getEntries()) {
if (action == PlayerListEntryAction.ADD_PLAYER) addPlayer(entry);
else if (action == PlayerListEntryAction.UPDATE_GAMEMODE) updateGamemode(entry);
else if (action == PlayerListEntryAction.UPDATE_LATENCY) updateLatency(entry);
else if (action == PlayerListEntryAction.UPDATE_DISPLAY_NAME) updateDisplayName(entry);
else if (action == PlayerListEntryAction.REMOVE_PLAYER) removePlayer(entry);
}
}
for (PlayerListEntry entry : _packet.getEntries()) {
if (action == PlayerListEntryAction.ADD_PLAYER) addPlayer(entry);
else if (action == PlayerListEntryAction.UPDATE_GAMEMODE) updateGamemode(entry);
else if (action == PlayerListEntryAction.UPDATE_LATENCY) updateLatency(entry);
else if (action == PlayerListEntryAction.UPDATE_DISPLAY_NAME) updateDisplayName(entry);
else if (action == PlayerListEntryAction.REMOVE_PLAYER) removePlayer(entry);
}
});
}
}
public final MutablePlayerListEntry getEntry (UUID uuid) {