Page history
25 March 2024
11 November 2023
15 June 2023
Created page with "El bloque será empujado dos bloques en lugar de uno y el jugador podrá accionarlo sigilosamente mientras hace clic con el botón derecho."
+28
Created page with "Vamos a crear otro bloque utilizando este comportamiento, pero esta vez vamos a configurar algunas propiedades adicionales ..."
+16
Created page with "== Añadir otro bloque =="
−1
Created page with "Lo siguiente que tenemos que cambiar es el propio método interact, para que se encargue de las propiedades de distancia y accionar... <syntaxhighlight lang="c#"> public override bool OnPlayerInteract(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling) { BlockPos pos = blockSel.Position.AddCopy(pull && byPlayer.WorldData.EntityControls.Sneak ? blockSel.Face : blockSel.Face.GetOpposite(), distance);..."
+5
Created page with "<syntaxhighlight lang="c#"> distance = properties["distance"].AsInt(1); pull = properties["pull"].AsBool(false); </syntaxhighlight>"
+22
Created page with "<syntaxhighlight lang="c#"> public int distance = 1; public bool pull = false; </syntaxhighlight>"
−8
Created page with "* para VS 1.9: [https://wiki.vintagestory.at/images/7/7b/Advancedmoving_v1.0.0.zip AdvancedMoving_v1.0.0.zip] * para VS 1.6: [https://wiki.vintagestory.at/images/7/72/AdvancedMoving.zip AdvancedMoving.zip]"
+2
Created page with "= Descarga de Mod ="
+3
Created page with "<syntaxhighlight lang="c#"> public override void Initialize(JsonObject properties) { base.Initialize(properties); } </syntaxhighlight>"
+19
Created page with "¿Qué tipo de propiedades podríamos añadir? * distancia de empuje * Bloqueo si el jugador se agacha"
+11
Created page with "Para ocuparse de las propiedades especiales existe un método llamado <code>Initialize(JsonObject)</code>. Cada tipo de bloque crea una nueva instancia del comportamiento, por lo que el método se puede utilizar para analizar las propiedades."
+31
Created page with "== Propiedades de análisis =="
+6
Created page with "<syntaxhighlight lang="json"> behaviors: [ { name: "FiniteSpreadingLiquid", properties: { spreadDelay: 150, liquidCollisionSound: "hotmetal", sourceReplacementCode: "obsidian", flowingReplacementCode: "basalt" } } ], </syntaxhighlight>"
+21
Created page with "=== Ejemplo ==="
+2
Created page with "Nuestro comportamiento sigue siendo bastante simple, pero hay muchas más posibilidades. Un comportamiento puede tener propiedades especiales, que pueden ser definidas por el propio tipo de bloque."
+35
Created page with "= Comportamiento avanzado ="
+6
Created page with "<youtube>8eVG0uQF2xs</youtube>"
−1
Created page with "Para terminar todo, abre el modtools y teclea <code>pack <tú mod id></code>. Ahora puedes coger el archivo zip y compartirlo con otras personas. * para VS 1.9: [https://wiki.vintagestory.at/images/2/2a/Moving_v1.0.0.zip Moving_v1.0.0.zip] * para VS 1.6: [https://wiki.vintagestory.at/images/c/cb/Moving.zip Moving.zip]"
−8
Created page with "} </syntaxhighlight>"
+1
Created page with "public override void Start(ICoreAPI api) { base.Start(api); api.RegisterBlockBehaviorClass("Moving", typeof(Moving)); }"
−11
Created page with "== Registro =="
Created page with "// Notificar al motor del juego otros comportamientos de bloque que manejamos la interacción de los jugadores con el bloque. // Si no fijáramos el campo de manipulación, el jugador seguiría pudiendo colocar bloques si los tiene en las manos. handling = EnumHandling.PreventDefault; return true; } </syntaxhighlight>"
+28
Created page with "// ¿Podemos colocar el bloque ahí? if (world.BlockAccessor.GetBlock(pos).IsReplacableBy(block)) { // Elimina el bloque de la posición actual y lo coloca en la posición de destino world.BlockAccessor.SetBlock(0, blockSel.Position); world.BlockAccessor.SetBlock(block.BlockId, pos); }"
+7
Created page with "<syntaxhighlight lang="c#"> public override bool OnPlayerInteract(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling) { // Encontrar la posición objetivo BlockPos pos = blockSel.Position.AddCopy(blockSel.Face.GetOpposite());"
+7
Created page with "# Calcula la nueva posición del bloque en función de la cara que mire el jugador # Comprueba si el bloque se puede colocar en esta posición # Retira el bloque original # Coloca el nuevo bloque utilizando la posición calculada anteriormente"
+12
Created page with "¿Qué debe hacer?"
Created page with "El método <code>bool OnPlayerInteract(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling)</code> parece ideal para nuestro propósito."
+3
Created page with "----"
+15
Created page with "Así que en primer lugar tenemos que crear el comportamiento en sí, que es una clase que extiende BlockBehavior <syntaxhighlight lang="csharp"> class Moving : BlockBehavior { public Moving(Block block) : base(block) { } } </syntaxhighlight>"
+17
Created page with "== Creación del comportamiento =="
+7
Created page with "Se requiere un espacio de trabajo de desarrollo. Además, necesitarás los recursos (tipo de bloque, textura y archivo lang). Se puede crear una propia o utilizar los que ya están hechos: [https://wiki.vintagestory.at/images/2/2f/Moving_-_No_CS_File.zip Moving - No CS File.zip]"
+17
Created page with "== Configuración =="
+4
Created page with "En este tutorial crearemos un nuevo comportamiento que podremos adjuntar a los bloques para hacerlos móviles haciendo clic con el botón derecho del ratón."
+39
Created page with "= Introducción = Los comportamientos de bloque son útiles cuando se desea que diferentes bloques actúen de la misma manera, ya que se pueden adjuntar uno o más comportamientos de bloque a un número arbitrario de bloques. Puede que le interese echar un vistazo a las comportamientos de bloque existentes antes de implementar las suyas propias."
+82
Created page with "Modding:Añadir comportamiento a bloque"
+6,575