SchematicSelectorItemFix #203
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
4 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/SpigotCore#203
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "SchematicSelectorItemFix" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
@ -235,6 +235,10 @@ public class SchematicSelector {
private SWListInv.SWListEntry<SchematicNode> renderItem(SchematicNode node) {
Material m = SWItem.getMaterial(node.getItem());
if(m == null) {
Ist nicht der Fehler hier.
SWItem.getMaterial sollte ein Material oder STONE zurück geben. Also sollte da irgendwo der Bug liegen, hier ist nur das Symptom.
Aber das kann doch garkein null ausgeben
Doch.
SWItem.getMaterial ruft einen FlatteningWrapper auf (Version Dependend Code). d.h. In der 1.14 aufwärts wird der FlatteningWrapper14 aufgerufen. Dieser hat eine HashMap welche einen Lookup für Legacy Namen hat.
Also wenn die Material.valueOf nen Fehler wirft, dann kommt der HashMap Lookup, welcher dann null ausgeben kann. Daher kommt das null.
Das war dann woll irgendein 1.19 Material welches es nicht in der 1.15 gibt.
Schau mal im SpigotCore_14 de.steamwar.core.FlatteningWrapper14:244.
@ -236,2 +236,4 @@
Material m = SWItem.getMaterial(node.getItem());
if(m == null) {
m = Material.BARRIER;
Sollte auch STONE sein wie in der SWItem.getMaterial Methode, damit es konsistent bleibt.
Wie Chaoscaot schon geschrieben hat wäre es wahrscheinlich besser, statt dieser Änderung direkt in der SWItem.getMaterial -Methode das Ergebnis des FlatteningWrappers auf null zu prüfen und dort ggf. das Material direkt zu ersetzen (bislang hatten wir da immer STONE als fallback, aber ich finde die BARRIER da eigentlich auch nicht schlecht. Die Änderung direkt in getMaterial würde auch Items, welche an anderer Stelle/über andere Methode ngeneriert werden dann korrekt "fixen", daher wäre das zu bevorzugen.
Ich finde Barrier zeigt eher das es kaputt ist statt Stone