
cn.nukkit.block.customblock.data.Transformation Maven / Gradle / Ivy
package cn.nukkit.block.customblock.data;
import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import cn.nukkit.math.Vector3;
import cn.nukkit.nbt.tag.CompoundTag;
/**
* supports rotation, scaling, and translation. The component can be added to the whole block and/or to individual block permutations. Transformed geometries still have the same restrictions that non-transformed geometries have such as a maximum size of 30/16 units.
*/
@PowerNukkitXOnly
@Since("1.19.80-r1")
public record Transformation(Vector3 translation, Vector3 scale, Vector3 rotation) implements NBTData {
@Override
public CompoundTag toCompoundTag() {
int rx = (rotation.getFloorX() % 360) / 90;
int ry = (rotation.getFloorY() % 360) / 90;
int rz = (rotation.getFloorZ() % 360) / 90;
return new CompoundTag("minecraft:transformation")
.putInt("RX", rx)
.putInt("RY", ry)
.putInt("RZ", rz)
.putFloat("SX", (float) scale.x)
.putFloat("SY", (float) scale.y)
.putFloat("SZ", (float) scale.z)
.putFloat("TX", (float) translation.x)
.putFloat("TY", (float) translation.y)
.putFloat("TZ", (float) translation.z);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy