SteamWar/BungeeCore
Archiviert
13
2

Forge Mod detection #292

Zusammengeführt
Lixfel hat 11 Commits von ModDetection1.13+ nach master 2022-02-03 22:06:16 +01:00 zusammengeführt
Mitglied
Keine Beschreibung angegeben.
zOnlyKroks hat 1 Commit 2022-01-07 11:51:29 +01:00 hinzugefügt
Primitive Version
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
9218544349
Autor
Mitglied

TODO: Mods schön aus dem Binär-blob rausholen und handeln.

TODO: Mods schön aus dem Binär-blob rausholen und handeln.
Lixfel hat 2022-01-07 20:57:03 +01:00 Änderungen angefragt
@ -0,0 +1,44 @@
package de.steamwar.bungeecore.listeners.mods;
Besitzer

Fehlender License-Header

Fehlender License-Header
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +33,4 @@
public void handle(LoginPayloadResponse response){
if(response.getData() == null) {
System.out.println("Data is null with id: " + response.getId() + " , which means Client has no installed mods!");
Besitzer

Diese Zeile bitte in der Production-Fassung entfernen.

Diese Zeile bitte in der Production-Fassung entfernen.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +37,4 @@
event.completeIntent(BungeeCore.get());
return;
}
Besitzer

Noch fehlende Modprüfung :)

Noch fehlende Modprüfung :)
@ -0,0 +38,4 @@
return;
}
Besitzer

Ich finde es hier gefährlich, dass du hier den PacketHandler nicht zurück auf den InitialHandler setzt (deshalb hat es wahrscheinlich auch nicht mit dem PreLoginEvent geklappt).

Es dürfte aber durch dadurch, dass LoginEvent.completeIntent dazu führt, dass es dann entweder einen Disconnect oder direkt den PlayHandler gibt, egal sein. Daher entweder den Packethandler zurücksetzen oder sich gar nicht hier den Wrapper merken (wozu brauchst du den sonst hier).

Ich finde es hier gefährlich, dass du hier den PacketHandler nicht zurück auf den InitialHandler setzt (deshalb hat es wahrscheinlich auch nicht mit dem PreLoginEvent geklappt). Es dürfte aber durch dadurch, dass LoginEvent.completeIntent dazu führt, dass es dann entweder einen Disconnect oder direkt den PlayHandler gibt, egal sein. Daher entweder den Packethandler zurücksetzen oder sich gar nicht hier den Wrapper merken (wozu brauchst du den sonst hier).
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +1,48 @@
package de.steamwar.bungeecore.listeners.mods;
Besitzer

Fehlender License-Header

Fehlender License-Header
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -41,3 +48,4 @@
private static final String FMLHS13 = "fml:handshake";
private static final String WRAPPER = "fml:loginwrapper";
private static final byte[] REGISTER;
private static final byte[] REGISTER13;
Besitzer

Bitte nicht vergessen, den alten 1.13 Forge-Support auszubauen :) (Aber bitte den 1.12- Support drin lassen!)

Du kannst dann auch ich glaube im Fabric-Modhandler? den Arenenblock für Forge-Spieler ausbauen.

Bitte nicht vergessen, den alten 1.13 Forge-Support auszubauen :) (Aber bitte den 1.12- Support drin lassen!) Du kannst dann auch ich glaube im Fabric-Modhandler? den Arenenblock für Forge-Spieler ausbauen.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -61,0 +70,4 @@
public void onServerConnected(LoginEvent event){
//Wir senden Packet ID 1
//Wir wollen empfangen Packet ID 2
//(FMLHS13, new byte[]{4, 1, 0, 0, 0});
Besitzer

Die Kommentarzeile (und ggf. noch die Zeilen drüber) können weg.

Die Kommentarzeile (und ggf. noch die Zeilen drüber) können weg.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -61,0 +72,4 @@
//Wir wollen empfangen Packet ID 2
//(FMLHS13, new byte[]{4, 1, 0, 0, 0});
//13,102,109,108,58,104,97,110,100,115,104,97,107,101 = 13 + "fml:handshake"
event.getConnection().unsafe().sendPacket(new LoginPayloadRequest(1,WRAPPER, new byte[]{13,102,109,108,58,104,97,110,100,115,104,97,107,101,4,1,0,0,0}));
Besitzer

Hier vorher noch eine Prüfung, dass der Client 1.13 oder höhere Version hat (in dem Fall einfach return). 1.12 und niedriger kennt nämlich keine LoginPayloadRequests.

Hier vorher noch eine Prüfung, dass der Client 1.13 oder höhere Version hat (in dem Fall einfach return). 1.12 und niedriger kennt nämlich keine LoginPayloadRequests.
zOnlyKroks markierte diese Unterhaltung als gelöst
Lixfel hat 2022-01-07 21:39:05 +01:00 überprüft
@ -61,0 +86,4 @@
ch.setAccessible(true);
wrapper = (ChannelWrapper) ch.get(handler);
} catch (NoSuchFieldException | IllegalAccessException e) {
e.printStackTrace();
Besitzer

Ach ja, hier einen ordentlichen Logger benutzen, so wie BungeeCore.get().getLogger().log(Level.SEVERE, "Could not get Channel", e);

Und danach returnen.

Und vllt. auch erst nach der Reflection den Intent registrieren...

Ach ja, hier einen ordentlichen Logger benutzen, so wie BungeeCore.get().getLogger().log(Level.SEVERE, "Could not get Channel", e); Und danach returnen. Und vllt. auch erst nach der Reflection den Intent registrieren...
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-01-08 09:57:50 +01:00 hinzugefügt
Fixes
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
28946876cf
zOnlyKroks hat 1 Commit 2022-01-08 09:58:44 +01:00 hinzugefügt
Merge branch 'master' into ModDetection1.13+
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
271afd5f48
Lixfel hat 2022-01-08 12:39:59 +01:00 überprüft
Lixfel hat einen Kommentar hinterlassen
Besitzer

Schaut ansonsten (bis auf die Packetzerlegung) schon richtig gut aus!

Schaut ansonsten (bis auf die Packetzerlegung) schon richtig gut aus!
@ -0,0 +32,4 @@
}
@Override
public String toString() {
Besitzer

Besteht hier wirklich die Notwendigkeit, toString zu überschreiben?

Besteht hier wirklich die Notwendigkeit, toString zu überschreiben?
Autor
Mitglied

ja, ansonsten meckert intellij rum.

ja, ansonsten meckert intellij rum.
zOnlyKroks markierte diese Unterhaltung als gelöst
@ -0,0 +24,4 @@
import java.util.List;
public class FMLPing extends ServerPing {
private final ForgeData forgeData = new ForgeData();
Besitzer

Man könnte noch argumentieren, dass es äußerst schade ist, dass wir hier für jeden Ping die ForeData neu erstellen und danach wieder verwerfen, aber das ist so schon in Ordnung.

Man könnte noch argumentieren, dass es äußerst schade ist, dass wir hier für jeden Ping die ForeData neu erstellen und danach wieder verwerfen, aber das ist so schon in Ordnung.
Besitzer

Könnte man das nicht einfach mit einem 'static' beheben?

Könnte man das nicht einfach mit einem 'static' beheben?
Autor
Mitglied

wird morgn als erledigt markiert.

wird morgn als erledigt markiert.
zOnlyKroks markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-01-09 09:29:50 +01:00 hinzugefügt
Performance
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
3773d3cefc
YoyoNow hat 2022-01-09 13:54:40 +01:00 Änderungen angefragt
Verworfen
@ -0,0 +25,4 @@
public class FMLPing extends ServerPing {
static {
Besitzer

Also von einem static block war nicht die rede nur den static modifier. Also sowas wie 'private static ForgeData forgeData = new ForgeData();'.

Also von einem static block war nicht die rede nur den static modifier. Also sowas wie 'private static ForgeData forgeData = new ForgeData();'.
Besitzer

Wo wird das überhaupt genutzt?

Wo wird das überhaupt genutzt?
Besitzer

GSON-Serializer des ServerListPings.

Anmerkung meinerseits: Ob das korrekt serialisiert wird, wenn die ForgeData als static final deklariert wird, muss getestet werden.

GSON-Serializer des ServerListPings. Anmerkung meinerseits: Ob das korrekt serialisiert wird, wenn die ForgeData als static final deklariert wird, muss getestet werden.
Besitzer

Naja es ist static also gar nicht serializiert? Ansonsten mach halt mit einem instance ansatz, im ForgeData selber.

Naja es ist static also gar nicht serializiert? Ansonsten mach halt mit einem instance ansatz, im ForgeData selber.
Besitzer

Ist unbekannt ob, muss daher getestet werden.

Ist unbekannt ob, muss daher getestet werden.
Autor
Mitglied

static mact hier in diesem Falle nur probleme

static mact hier in diesem Falle nur probleme
Lixfel markierte diese Unterhaltung als gelöst
zOnlyKroks hat 1 Commit 2022-01-14 12:08:06 +01:00 hinzugefügt
Performance
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
88ec0ad7db
Lixfel hat 2022-01-14 14:44:51 +01:00 überprüft
@ -0,0 +25,4 @@
public class FMLPing extends ServerPing {
private static final ForgeData data = new ForgeData();
Besitzer

Ich glaube, das muss weiterhin forgeData heißen, ansonsten erkennt Forge die Modliste nicht... du solltest auch mal probieren, mit Minecraft-Versionen anders als 1.15.2, ob dann immer noch die Kompatibilität gemeldet wird (da wir ja minecraft 1.15.2 als Mod drin haben...

Ich glaube, das muss weiterhin forgeData heißen, ansonsten erkennt Forge die Modliste nicht... du solltest auch mal probieren, mit Minecraft-Versionen anders als 1.15.2, ob dann immer noch die Kompatibilität gemeldet wird (da wir ja minecraft 1.15.2 als Mod drin haben...
Autor
Mitglied

Kompatibilität wird verneint. Forge 1.16.5

Kompatibilität wird verneint. Forge 1.16.5
zOnlyKroks hat 1 Commit 2022-01-15 16:26:09 +01:00 hinzugefügt
Merge branch 'master' into ModDetection1.13+
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
6dc33c85dd
zOnlyKroks hat 1 Commit 2022-01-15 16:29:48 +01:00 hinzugefügt
Performance
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
5461c47ea2
Lixfel hat 1 Commit 2022-01-29 13:16:34 +01:00 hinzugefügt
Forge packet parsing
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
2026893d95
Signed-off-by: Lixfel <agga-games@gmx.de>
Lixfel hat den Titel von WIP: Primitive Version zu Forge Mod detection 2022-01-29 13:16:58 +01:00 geändert
Besitzer

@zOnlyKroks Habe jetzt mal das Parsing mit implementiert, du musst einmal testen, ob die Mods korrekt erkannt werden. Und du musst noch die Kompatibilität mit Forge-Versionen anders als 1.15.2 einbauen.

@zOnlyKroks Habe jetzt mal das Parsing mit implementiert, du musst einmal testen, ob die Mods korrekt erkannt werden. Und du musst noch die Kompatibilität mit Forge-Versionen anders als 1.15.2 einbauen.
Lixfel verwarf YoyoNows Review 2022-01-29 13:18:58 +01:00
zOnlyKroks hat 1 Commit 2022-01-31 16:58:52 +01:00 hinzugefügt
FmlPing now multi versions
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
0033de233b
Lixfel hat 2022-01-31 17:02:06 +01:00 überprüft
@ -0,0 +80,4 @@
}
public String toString() {
return name().replace("MINECRAFT_", "").replace("_", ".");
Besitzer

Wäre es nicht einfacher, statt dem Enum einfach direkt eine HashMap<Integer, String> zu machen?

Wäre es nicht einfacher, statt dem Enum einfach direkt eine HashMap<Integer, String> zu machen?
zOnlyKroks hat 1 Commit 2022-01-31 17:21:22 +01:00 hinzugefügt
Performance
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
75e744435c
Lixfel hat die Änderungen 2022-01-31 17:24:36 +01:00 genehmigt
Lixfel hat einen Kommentar hinterlassen
Besitzer

Schaut soweit gut aus.

@YoyoNow könntest du auch nochmal drübergucken (nachdem ich einen nicht vernachlässigbaren Teil selbst zusammengepfuscht habe)?

Schaut soweit gut aus. @YoyoNow könntest du auch nochmal drübergucken (nachdem ich einen nicht vernachlässigbaren Teil selbst zusammengepfuscht habe)?
Lixfel hat 1 Commit 2022-01-31 21:20:25 +01:00 hinzugefügt
Fix missing value read
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful
70056b838e
Signed-off-by: Lixfel <agga-games@gmx.de>
YoyoNow hat die Änderungen 2022-02-03 22:03:43 +01:00 genehmigt
@ -0,0 +33,4 @@
private static class ForgeData {
private final List<ForgeChannel> channels = new ArrayList<>();
private final List<ForgeMod> mods = new ArrayList<>();
Besitzer

Style?

Style?
Lixfel hat Commit 3bacd8486e in master 2022-02-03 22:06:16 +01:00 gemerged
Lixfel löschte die Branch ModDetection1.13+ 2022-02-03 22:06:16 +01:00
Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
Keine Beschreibung angegeben.