Migrando Scripts a CraftTweaker 7.1
Link to migrando-scripts-a-crafttweaker-71
La versión 7.1 contiene unos cambios que impiden retrocompatibilidad. Estos cambios estan en la API que los addons usan además de en los tipos que los scripts requieren. Este documento debería ayudarte a darte una idea general de cuales son los cambios más importantes y cómo los desarrolladores de modpacks pueden tener scripts que funcionen otra vez. Si tu versión es superior a 7.1, puedes ignorar esta página.
## MCTag se convertiene en MCTag<T>
Link to -mctag-se-convertiene-en-mctagt
Hemos reemplazado las Tags con un sistema genérico que es más extensible y que funcionará mejor con futuras actualizaciones. Este cambio inutiliza los scripts existentes de dos formas:
- Los métodos de añadir y removal especializados han sido eliminados.
Ahora puedes usaradd
yremove
en vez deaddItems
,addFluids
, y similares.
2) La sintaxis de Paréntesis ahora requiere el tipo de la tag como un parámetro adicional.
Ahora,<tag:forge:gems
se convierte en<tag:items:forge:gems>
Los comandos /ct dump tags
y /ct hand
han sido actualizados para reflectir estos cambios.
Si necesitas usar una tag con cualquiera de los métodos IIngredient, deberás usar .asIIngredient()
primero.
Ejemplo de migración
ZenScript Copy```zenscript
import crafttweaker.api.tag.MCTag;
import crafttweaker.api.item.MCItemDefinition;
import crafttweaker.api.fluid.MCFluid;
var tagFluidoAntigua = <tag:minecraft:water> as MCTag;
var tagObjetoAntigua = <tag:forge:gems> as MCTag;
var tagFluidoNueva = <tag:fluids:minecraft:water> as MCTag<MCFluid>;
var tagObjetoNueva = <tag:items:forge:gems> as MCTag<MCItemDefinition>;
//Como interactuar
var tagGemaAntigua = <tag:forge:gems>;
tagGemaAntigua.addItems(<item:minecraft:bedrock>);
tagGemaAntigua.removeItems(<item:minecraft:diamond>);
var tagGemaNueva = <tag:items:forge:gems>;
tagGemaNueva.add(<item:minecraft:bedrock>);
tagGemaNueva.remove(<item:minecraft:diamond>);
//Expansiones de IIngredient
var reusarAntigua = <tag:forge:gems>.reuse();
var reusarNuevo = <tag:items:forge:gems>.asIIngredient().reuse();
Copy
## ## Los tipos wrapper se convierten directamente en tipos de Vanilla
Hemos cambiado un parte de cosas internas sobre como funciona Crafttweaker, y ahora usa tipos de Minecraft directamente. Esto no debería influenciar tus scripts, pero si que inutilizará compatibilidad con otros mods.
Las clases inutilizadas apareceran en el crafttweaker log. Si alguno de tus scripts deja de funcionar, comprueba si tienen alguna de las clases que no funciona.
## ## El método para registrar eventos ha cambiado
Los event listeners ya no tienen el consumer en un constructor personalizado. En su lugar, el método de registracion se ha cambiado para ser genérico.
Ejemplo de migración:
```zenscript
```zenscript
import crafttweaker.api.events.CTEventManager;
import crafttweaker.api.event.entity.player.MCAnvilRepairEvent;
//Forma antigua:
CTEventManager.register(new MCAnvilRepairEvent((evento) => {
var jugador = evento.player;
var resultado = evento.itemResult;
println("El Jugador '" + jugador.name + "' crafteo " + resultado.commandString);
}));
//Nueva forma
CTEventManager.register<MCAnvilRepairEvent>((evento) => {
var jugador = evento.player;
var resultado = evento.itemResult;
println("El Jugador '" + jugador.name + "' crafteo " + resultado.commandString);
});
Copy
## ## ZenCode: Las tags de almacenamiento ya no existen
Hemos eliminado las tags de almacenamiento de ZenCode por ahora.<br> No eran requeridas por crafttweaker y complicaban la depuración más de lo que debía ser.<br> Como la mayoría de usuarios no las usaba esperamos que no tengas que migrar este apartado.<br>
Ejemplo de migración:
```zenscript
```zenscript
var antes = {} as string`static[string`static]`unique
var despues = {} as string[string];
function funcAntes(argumento as string`borrow) as string`unique {
return argumento + "!";
}
function funcDespues(argumento as string) as string {
return argumento + "!";
}
Copy