Migriere Skripts zu CraftTweaker 7.1
Link to migriere-skripts-zu-crafttweaker-71
CraftTweaker 7.1 hat einige Änderungen, die nicht abwärtskompatibel sind. Diese Änderungen sind sowohl in der API als auch in den Skripten zu sehen.
MCTag wird zu MCTag<T>
Link to mctag-wird-zu-mctagt
Wir haben Tags durch ein generisches System ersetzt, das erweiterbar ist und mit zukünftigen Updates besser funktionieren wird.
Diese Änderung wird bestehende Skripte auf zwei Arten nicht funktionstüchtig machen:
- Die spezialisierten Zusatz- und Entnahmemethoden wurden entfernt.
Du verwendest jetztadd
undremove
anstelle vonaddItems
undaddFluids
sowie die "remove" Varianten. 2) Die Syntax der Bracket-Handler benötigt nun den Tag-Typ als zusätzlichen Parameter.
Also wird<tag:forge:gems>
zu<tag:items:forge:gems>
Die /ct dump tags
und /ct hand
Befehle wurden aktualisiert, um diese Änderung wiederzugeben.
Wenn Sie eine der Erweiterungsmethoden von IIngredient von einem Item-Tag verwenden müssen, müssen Sie diese mit .asIIngredient()
abrufen.
Migrationsbeispiel
ZenScript Copyimport crafttweaker.api.tag.MCTag;
import crafttweaker.api.item.MCItemDefinition;
import crafttweaker.api.fluid.MCFluid;
var fluidTagOld = <tag:minecraft:water> as MCTag;
var itemTagOld = <tag:forge:gems> as MCTag;
var fluidTagNew = <tag:fluids:minecraft:water> as MCTag<MCFluid>;
var itemTagNew = <tag:items:forge:gems> as MCTag<MCItemDefinition>;
//Wie man nun interagiert
var myGemTagOld = <tag:forge:gems>;
myGemTagOld.addItems(<item:minecraft:bedrock>);
myGemTagOld.removeItems(<item:minecraft:diamond>);
var myGemTagNew = <tag:items:forge:gems>;
myGemTagNew.add(<item:minecraft:bedrock>);
myGemTagNew.remove(<item:minecraft:diamond>);
//IIngredient Erweiterung
var reuseOld = <tag:forge:gems>.reuse();
var reuseNew = <tag:items:forge:gems>.asIIngredient().reuse();
Wrapper-Typen werden zu Vanilla-Typen
Link to wrapper-typen-werden-zu-vanilla-typen
Wir haben einige interne Funktionen von CraftTweaker geändert, um Minecraft-Typen direkt zu verwenden.
Diese Änderung sollte Ihre existierenden Skripte nicht direkt beeinflussen, wird aber einige der Integrationen, die von anderen Mods hinzugefügt wurden, zerstören.
Die kaputten Klassen werden im crafttweaker.log angezeigt. Wenn Sie feststellen, dass einige Ihrer Skripte kaputt gehen, überprüfen Sie, ob sie eine der kaputten Klassen verwenden.
Methode zum Registrieren von EventHandlers abgeänderte Signatur
Link to methode-zum-registrieren-von-eventhandlers-abgeänderte-signatur
Event Listeners haben nicht mehr den Verbraucher in einem benutzerdefinierten Konstruktor.
Stattdessen wurde die Registrierung generisch geändert.
Migrationsbeispiel:
ZenScript Copyimport crafttweaker.api.events.CTEventManager;
import crafttweaker.api.event.entity.player.MCAnvilRepairEvent;
//Alter Weg:
CTEventManager.register(new MCAnvilRepairEvent((event) => {
var player = event.player;
var result = event.itemResult;
println("Player '" + player.name + "' crafted " + result.commandString);
}));
//Neuer Weg:
CTEventManager.register<MCAnvilRepairEvent>((event) => {
var player = event.player;
var result = event.itemResult;
println("Player '" + player.name + "' crafted " + result.commandString);
});
ZenCode: Speicher-Tags sind verschwunden
Link to zencode-speicher-tags-sind-verschwunden
Wir haben Speicher-Tags von den ZenCode-Sprachspezifikationen entfernt.
Sie sind nicht für CraftTweaker erforderlich und haben das Debuggen erschwert.
Die meisten Leute mussten keine Speicher-Tags verwenden, so dass wir nicht erwarten, dass Sie diesen Migrationsschritt fortsetzen müssen.
Migrationsbeispiel:
ZenScript Copyvar before = {} as string`static[string`static]`unique
var after = {} as string[string];
function funcBefore(argument as string`borrow) as string`unique {
return argument + "!";
}
function funcAfter(argument as string) as string {
return argument + "!";
}