Das purpleSheepPredicate
prüft tatsächlich, ob das Schaf blau ist.
Es wird überprüft, ob die ursprüngliche Farbe in Kombination mit der neuen Farbe lila ist.
@ MAX1234567890 das kann nicht der Fall sein. Es ist ein Prädikat für ein Schaf, nicht zweifarbig.
Die zweite Farbe ist immer rot. Daher prüft es Schaf-> Farbe + Rot == Lila (dh Schaf-> Farbe == Blau)
Obwohl das stimmt, ist es eine irreführende Art, es auszudrücken.
`` `Java
private final TargetPredicate lilaSheepPredicate = (neues TargetPredicate ()). setBaseMaxDistance (16.0D) .includeInvulnerable (). setPredicate ((livingEntity) -> {
return ((SheepEntity) livingEntity) .getColor () == DyeColor.BLUE;
});
Die zweite Farbe ist immer rot. Daher prüft es Schaf-> Farbe + Rot == Lila (dh Schaf-> Farbe == Blau)
Das ist ein völliges Missverständnis der Spiellogik.
Dieses TargetPredicate wird verwendet, um zu testen, ob der Beschwörer das Schaf wololo soll, dh das Schaf MUSS blau sein:
List<SheepEntity> list = EvokerEntity.this.world.getTargets(SheepEntity.class, this.purpleSheepPredicate, EvokerEntity.this, EvokerEntity.this.getBoundingBox().expand(16.0D, 4.0D, 16.0D));
if (list.isEmpty()) {
return false;
Auch ein weiterer Blick in das Ziel zeigt, dass das Schaf niemals lila werden soll, sondern rot, wie in castSpell
Ich weiß, dass es nicht lila wird, aber das Prädikat, das bereits weiß, dass die Schafe rot werden, prüft, ob die ursprüngliche Farbe der Schafe in Kombination mit der neuen Farbe der Schafe lila ist. Grundsätzlich verwendet der Evoker ein {return lila - x; also muss er sicherstellen, dass rot = lila ist - die ursprüngliche Farbe, dh die Farbe ist blau.
Hmm, gibt es irgendetwas, das diese spezifische Hintergrundgeschichte dokumentiert? Wiki zum Beispiel?
Ich denke in diesem Fall sollte die Logik den Namen diktieren, aber ein bisschen humorvolles Javadoc darüber könnte Spaß machen
Nicht direkt, aber angesichts der Tatsache, dass a) offiziell angegeben ist, dass Evokers Redstone gebaut haben und b) die Tatsache, dass Vexes ebenfalls rot sind, mich zu dieser Schlussfolgerung geführt hat. Es ist auch wichtig, die symbolische Natur des Purpurs im Auge zu behalten: Der Evoker ist der einzige Illager (einschließlich Vexes und Witches), auf dem kein Purpur zu sehen ist, was zu der Idee führt, dass der Illager Purpur - Schafsfarbe "berechnet" um sie rot zu machen.
Max, dies sollte in die Dokumentation aufgenommen werden, nicht der tatsächliche Name. Der Name sollte kurz und prägnant sein und widerspiegeln, was er tut.
Lol, warum zum Teufel sind Sie besorgt über Implementierungsdetails, wenn die Implementierungsdetails verwirrend und nicht hilfreich sind. Nennen Sie es einfach convertibleSheepPredicate
, warum machen Sie sich Gedanken über einen Farbquatsch?
Beschuldigen Sie auch Mezz für diese Sache. Garn ist seitdem glücklicherweise viel schlauer und benennt die Dinge effizienter.
https://github.com/FabricMC/yarn/commit/5c6c0c71d1480a36e1d3c2a8f2adf859e307cbc6#diff -b6376ebd10e80e5e322fb28f766d47c4R44
Die Details sind nicht verwirrend und es ist sehr klar, was getan wird. Es prüft, ob das Schaf blau ist.
Hilfreichster Kommentar
Max, dies sollte in die Dokumentation aufgenommen werden, nicht der tatsächliche Name. Der Name sollte kurz und prägnant sein und widerspiegeln, was er tut.