添加坦克图标,移除yx100Gun

This commit is contained in:
Atsuihsio 2025-03-07 15:42:31 +08:00
parent 99518277d1
commit 112578b366
9 changed files with 5 additions and 703 deletions

View file

@ -1,36 +0,0 @@
package com.atsuishio.superbwarfare.client.model.entity;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.vehicle.Yx100GunEntity;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.core.animatable.model.CoreGeoBone;
import software.bernie.geckolib.core.animation.AnimationState;
import software.bernie.geckolib.model.GeoModel;
import software.bernie.geckolib.model.data.EntityModelData;
public class Yx100GunModel extends GeoModel<Yx100GunEntity> {
@Override
public ResourceLocation getAnimationResource(Yx100GunEntity entity) {
return null;
}
@Override
public ResourceLocation getModelResource(Yx100GunEntity entity) {
return ModUtils.loc("geo/yx_100_gun.geo.json");
}
@Override
public ResourceLocation getTextureResource(Yx100GunEntity entity) {
return ModUtils.loc("textures/entity/yx_100.png");
}
@Override
public void setCustomAnimations(Yx100GunEntity animatable, long instanceId, AnimationState<Yx100GunEntity> animationState) {
CoreGeoBone bone = getAnimationProcessor().getBone("barrel");
EntityModelData entityData = animationState.getData(DataTickets.ENTITY_MODEL_DATA);
bone.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD);
}
}

View file

@ -1,43 +0,0 @@
package com.atsuishio.superbwarfare.client.renderer.entity;
import com.atsuishio.superbwarfare.client.model.entity.Yx100GunModel;
import com.atsuishio.superbwarfare.entity.vehicle.Yx100GunEntity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.math.Axis;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRendererProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class Yx100GunRenderer extends GeoEntityRenderer<Yx100GunEntity> {
public Yx100GunRenderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new Yx100GunModel());
}
@Override
public RenderType getRenderType(Yx100GunEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) {
return RenderType.entityTranslucent(getTextureLocation(animatable));
}
@Override
public void preRender(PoseStack poseStack, Yx100GunEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green,
float blue, float alpha) {
float scale = 1f;
this.scaleHeight = scale;
this.scaleWidth = scale;
super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);
}
@Override
public void render(Yx100GunEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) {
poseStack.pushPose();
poseStack.mulPose(Axis.YP.rotationDegrees(-Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot())));
super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
poseStack.popPose();
}
}

View file

@ -88,7 +88,7 @@ public class Yx100Renderer extends GeoEntityRenderer<Yx100Entity> {
float a = animatable.getEntityData().get(YAW); float a = animatable.getEntityData().get(YAW);
float r = (Mth.abs(a) - 90f) / 90f; float r = (Mth.abs(a) - 90f) / 90f;
bone.setPosZ(r * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1.5f); bone.setPosZ(r * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1.75f);
bone.setRotX(r * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD); bone.setRotX(r * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD);
float r2; float r2;
@ -104,7 +104,9 @@ public class Yx100Renderer extends GeoEntityRenderer<Yx100Entity> {
} }
bone.setPosX(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1f); bone.setPosX(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1f);
bone.setRotZ(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD * 1.75f); bone.setRotZ(r2 * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * Mth.DEG_TO_RAD * 1.5f);
bone.setPosY(r * Mth.lerp(partialTick, (float) animatable.recoilShakeO, (float) animatable.getRecoilShake()) * 1.5f);
} }
super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha);

View file

@ -960,6 +960,6 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti
@Override @Override
public ResourceLocation getVehicleIcon() { public ResourceLocation getVehicleIcon() {
return ModUtils.loc("textures/vehicle_icon/bmp2_icon.png"); return ModUtils.loc("textures/vehicle_icon/yx_100_icon.png");
} }
} }

View file

@ -1,196 +0,0 @@
package com.atsuishio.superbwarfare.entity.vehicle;
import com.atsuishio.superbwarfare.ModUtils;
import com.atsuishio.superbwarfare.entity.vehicle.base.CannonEntity;
import com.atsuishio.superbwarfare.entity.vehicle.base.VehicleEntity;
import com.atsuishio.superbwarfare.init.ModEntities;
import com.atsuishio.superbwarfare.init.ModItems;
import com.atsuishio.superbwarfare.tools.AmmoType;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.network.syncher.EntityDataAccessor;
import net.minecraft.network.syncher.EntityDataSerializers;
import net.minecraft.network.syncher.SynchedEntityData;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraftforge.network.NetworkHooks;
import net.minecraftforge.network.PlayMessages;
import org.jetbrains.annotations.NotNull;
import software.bernie.geckolib.animatable.GeoEntity;
import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache;
import software.bernie.geckolib.core.animation.AnimatableManager;
import software.bernie.geckolib.util.GeckoLibUtil;
public class Yx100GunEntity extends VehicleEntity implements GeoEntity, CannonEntity {
public static final EntityDataAccessor<Integer> AMMO = SynchedEntityData.defineId(Yx100GunEntity.class, EntityDataSerializers.INT);
private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this);
public Yx100GunEntity(PlayMessages.SpawnEntity packet, Level world) {
this(ModEntities.YX_100_GUN.get(), world);
}
public Yx100GunEntity(EntityType<Yx100GunEntity> type, Level world) {
super(type, world);
this.noPhysics = true;
}
@Override
protected void defineSynchedData() {
super.defineSynchedData();
this.entityData.define(AMMO, 0);
}
@Override
public void addAdditionalSaveData(CompoundTag compound) {
super.addAdditionalSaveData(compound);
}
@Override
protected void readAdditionalSaveData(CompoundTag compound) {
super.readAdditionalSaveData(compound);
}
@Override
public @NotNull InteractionResult interact(Player player, @NotNull InteractionHand hand) {
return super.interact(player, hand);
}
@Override
public Packet<ClientGamePacketListener> getAddEntityPacket() {
return NetworkHooks.getEntitySpawningPacket(this);
}
@Override
public double getPassengersRidingOffset() {
return super.getPassengersRidingOffset() - 1;
}
@Override
public boolean isPushable() {
return false;
}
@Override
public boolean isPickable() {
return true;
}
@Override
public void baseTick() {
// if (!(this.getVehicle() instanceof Yx100Entity yx100)) {
// this.discard();
// }
if (this.level() instanceof ServerLevel) {
this.handleAmmo();
}
super.baseTick();
}
private void handleAmmo() {
if (!(this.getFirstPassenger() instanceof Player player)) return;
if (this.getVehicle() instanceof Yx100Entity yx100) {
int ammoCount = yx100.getItemStacks().stream().filter(stack -> {
if (stack.is(ModItems.AMMO_BOX.get())) {
return AmmoType.HEAVY.get(stack) > 0;
}
return false;
}).mapToInt(AmmoType.HEAVY::get).sum() + yx100.countItem(ModItems.HEAVY_AMMO.get());
this.entityData.set(AMMO, ammoCount);
}
}
@Override
public void vehicleShoot(Player player, int type) {
}
@Override
public void travel() {
Entity passenger = this.getFirstPassenger();
float diffY = 0;
float diffX = 0;
if (passenger != null) {
diffY = Mth.wrapDegrees(passenger.getYHeadRot() - this.getYRot());
diffX = Mth.wrapDegrees(passenger.getXRot() - this.getXRot());
}
this.setYRot(this.getYRot() + Mth.clamp(0.5f * diffY, -25f, 25f));
this.setXRot(Mth.clamp(this.getXRot() + Mth.clamp(0.5f * diffX, -25f, 25f), -65, 7f));
}
protected void clampRotation(Entity entity) {
float f = Mth.wrapDegrees(entity.getXRot());
float f1 = Mth.clamp(f, -85.0F, 16.3F);
entity.xRotO += f1 - f;
entity.setXRot(entity.getXRot() + f1 - f);
}
@Override
public void onPassengerTurned(Entity entity) {
this.clampRotation(entity);
}
@Override
public void registerControllers(AnimatableManager.ControllerRegistrar data) {
}
@Override
public AnimatableInstanceCache getAnimatableInstanceCache() {
return this.cache;
}
@Override
public float getMaxHealth() {
if (this.getVehicle() instanceof VehicleEntity vehicle) {
return vehicle.getMaxHealth();
}
return 0;
}
@Override
public int mainGunRpm(Player player) {
return 600;
}
@Override
public boolean canShoot(Player player) {
return true;
}
@Override
public int getAmmoCount(Player player) {
return this.entityData.get(AMMO);
}
@Override
public boolean banHand(Player player) {
return true;
}
@Override
public boolean hidePassenger() {
return true;
}
@Override
public int zoomFov() {
return 3;
}
@Override
public ResourceLocation getVehicleIcon() {
return ModUtils.loc("textures/vehicle_icon/sherman_icon.png");
}
}

View file

@ -90,8 +90,6 @@ public class ModEntities {
EntityType.Builder.<LaserTowerEntity>of(LaserTowerEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f)); EntityType.Builder.<LaserTowerEntity>of(LaserTowerEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f));
public static final RegistryObject<EntityType<Yx100Entity>> YX_100 = register("yx_100", public static final RegistryObject<EntityType<Yx100Entity>> YX_100 = register("yx_100",
EntityType.Builder.<Yx100Entity>of(Yx100Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100Entity::new).fireImmune().sized(5.5f, 3.25f)); EntityType.Builder.<Yx100Entity>of(Yx100Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100Entity::new).fireImmune().sized(5.5f, 3.25f));
public static final RegistryObject<EntityType<Yx100GunEntity>> YX_100_GUN = register("yx_100_gun",
EntityType.Builder.<Yx100GunEntity>of(Yx100GunEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100GunEntity::new).fireImmune().sized(0.9f, 0.65f));
private static <T extends Entity> RegistryObject<EntityType<T>> register(String name, EntityType.Builder<T> entityTypeBuilder) { private static <T extends Entity> RegistryObject<EntityType<T>> register(String name, EntityType.Builder<T> entityTypeBuilder) {
return REGISTRY.register(name, () -> entityTypeBuilder.build(name)); return REGISTRY.register(name, () -> entityTypeBuilder.build(name));

View file

@ -43,6 +43,5 @@ public class ModEntityRenderers {
event.registerEntityRenderer(ModEntities.WG_MISSILE.get(), WgMissileRenderer::new); event.registerEntityRenderer(ModEntities.WG_MISSILE.get(), WgMissileRenderer::new);
event.registerEntityRenderer(ModEntities.LASER_TOWER.get(), LaserTowerRenderer::new); event.registerEntityRenderer(ModEntities.LASER_TOWER.get(), LaserTowerRenderer::new);
event.registerEntityRenderer(ModEntities.YX_100.get(), Yx100Renderer::new); event.registerEntityRenderer(ModEntities.YX_100.get(), Yx100Renderer::new);
event.registerEntityRenderer(ModEntities.YX_100_GUN.get(), Yx100GunRenderer::new);
} }
} }

View file

@ -1,422 +0,0 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.unknown",
"texture_width": 1024,
"texture_height": 1024,
"visible_bounds_width": 20,
"visible_bounds_height": 15,
"visible_bounds_offset": [0, 0.5, 0]
},
"bones": [
{
"name": "root",
"pivot": [0, -0.5025, 0],
"cubes": [
{
"origin": [-5.15625, 1.02875, -7.03125],
"size": [10.3125, 2.8125, 10.3125],
"uv": {
"north": {"uv": [90, 279], "uv_size": [11, 3]},
"east": {"uv": [15, 567], "uv_size": [11, 3]},
"west": {"uv": [174, 572], "uv_size": [11, 3]},
"up": {"uv": [475, 347], "uv_size": [11, 11]},
"down": {"uv": [486, 375], "uv_size": [11, -11]}
}
},
{
"origin": [1.60041, 1.33665, -7.03125],
"size": [5.625, 2.8125, 15],
"pivot": [5.81916, 1.8054, -1.875],
"rotation": [0, 0, 45],
"uv": {
"north": {"uv": [184, 634], "uv_size": [6, 3]},
"east": {"uv": [608, 466], "uv_size": [16, 3]},
"south": {"uv": [190, 634], "uv_size": [6, 3]},
"west": {"uv": [608, 511], "uv_size": [16, 3]},
"up": {"uv": [336, 558], "uv_size": [6, 16]},
"down": {"uv": [342, 574], "uv_size": [6, -16]}
}
},
{
"origin": [8.18193, 3.89359, -7.5],
"size": [3.75, 0, 2.8125],
"pivot": [7.24443, 3.89359, -5.625],
"rotation": [0, -90, 45],
"uv": {
"up": {"uv": [37, 759.5], "uv_size": [266, 192.5]}
}
},
{
"origin": [5.83818, 3.89359, -0.9375],
"size": [7.03125, 0, 1.40625],
"pivot": [7.24443, 3.89359, 0.46875],
"rotation": [0, -90, 45],
"uv": {
"up": {"uv": [14.5, 956.5], "uv_size": [303, 52.5]}
}
},
{
"origin": [-9.45087, 3.56213, -4.21875],
"size": [3.75, 0, 2.8125],
"pivot": [-7.57587, 3.56213, -2.8125],
"rotation": [0, -90, 135],
"uv": {
"up": {"uv": [303, 759.5], "uv_size": [-266, 192.5]}
}
},
{
"origin": [-11.25724, 3.3964, 1.875],
"size": [7.03125, 0, 1.40625],
"pivot": [-7.74161, 3.3964, 2.57812],
"rotation": [0, -90, 135],
"uv": {
"up": {"uv": [317.5, 956.5], "uv_size": [-303, 52.5]}
}
},
{
"origin": [3.65275, 5.8766, -8.65441],
"size": [3.75, 1.875, 10.3125],
"pivot": [5.52775, 4.9391, -3.49816],
"rotation": [23.85865, 18.74724, -36.00521],
"uv": {
"west": {"uv": [630, 84], "uv_size": [11, 2]}
}
},
{
"origin": [-7.40276, 5.8766, -8.65441],
"size": [3.75, 1.875, 10.3125],
"pivot": [-5.52776, 4.9391, -3.49816],
"rotation": [23.85865, -18.74724, 36.00521],
"uv": {
"east": {"uv": [630, 86], "uv_size": [11, 2]}
}
},
{
"origin": [-7.22541, 1.33665, -7.03125],
"size": [5.625, 2.8125, 15],
"pivot": [-5.81916, 1.8054, -1.875],
"rotation": [0, 0, -45],
"uv": {
"north": {"uv": [634, 526], "uv_size": [6, 3]},
"east": {"uv": [608, 514], "uv_size": [16, 3]},
"south": {"uv": [539, 634], "uv_size": [6, 3]},
"west": {"uv": [608, 564], "uv_size": [16, 3]},
"up": {"uv": [436, 558], "uv_size": [6, 16]},
"down": {"uv": [442, 574], "uv_size": [6, -16]}
}
},
{
"origin": [-6.3419, 0.90104, -11.14254],
"size": [1.93265, 2.30324, 4.0579],
"pivot": [-5.4044, 2.40436, -8.17609],
"rotation": [-32.73241, -24.4045, -32.73241],
"uv": {
"north": {"uv": [325, 649], "uv_size": [2, 2]},
"east": {"uv": [539, 641], "uv_size": [4, 2]},
"south": {"uv": [649, 328], "uv_size": [2, 2]},
"west": {"uv": [566, 641], "uv_size": [4, 2]},
"up": {"uv": [593, 641], "uv_size": [2, 4]},
"down": {"uv": [595, 645], "uv_size": [2, -4]}
}
},
{
"origin": [-5.15625, 0.38779, -8.63619],
"size": [2.8125, 3.00666, 4.0579],
"pivot": [-1.28906, 5.71625, -6.5625],
"rotation": [-40, 0, 0],
"uv": {
"north": {"uv": [468, 539], "uv_size": [3, 3]},
"east": {"uv": [638, 73], "uv_size": [4, 3]},
"south": {"uv": [290, 544], "uv_size": [3, 3]},
"west": {"uv": [638, 104], "uv_size": [4, 3]},
"up": {"uv": [12, 639], "uv_size": [3, 4]},
"down": {"uv": [15, 643], "uv_size": [3, -4]}
}
},
{
"origin": [-5.15625, 0.81049, -6.06571],
"size": [2.8125, 8.63166, 2.1829],
"pivot": [-1.28906, 6.13895, -3.99204],
"rotation": [-60, 0, 0],
"uv": {
"north": {"uv": [204, 572], "uv_size": [3, 9]},
"east": {"uv": [407, 631], "uv_size": [2, 9]},
"south": {"uv": [513, 573], "uv_size": [3, 9]},
"west": {"uv": [428, 631], "uv_size": [2, 9]},
"down": {"uv": [380, 598], "uv_size": [3, -2]}
}
},
{
"origin": [2.34375, 0.38779, -8.63619],
"size": [2.8125, 3.00666, 4.0579],
"pivot": [1.28906, 5.71625, -6.5625],
"rotation": [-40, 0, 0],
"uv": {
"north": {"uv": [575, 78], "uv_size": [3, 3]},
"east": {"uv": [638, 151], "uv_size": [4, 3]},
"south": {"uv": [178, 595], "uv_size": [3, 3]},
"west": {"uv": [638, 240], "uv_size": [4, 3]},
"up": {"uv": [18, 639], "uv_size": [3, 4]},
"down": {"uv": [21, 643], "uv_size": [3, -4]}
}
},
{
"origin": [4.40926, 0.90104, -11.14254],
"size": [1.93265, 2.30324, 4.0579],
"pivot": [5.40441, 2.40436, -8.17609],
"rotation": [-32.73241, 24.4045, 32.73241],
"uv": {
"north": {"uv": [329, 649], "uv_size": [2, 2]},
"east": {"uv": [641, 582], "uv_size": [4, 2]},
"south": {"uv": [331, 649], "uv_size": [2, 2]},
"west": {"uv": [641, 595], "uv_size": [4, 2]},
"up": {"uv": [597, 641], "uv_size": [2, 4]},
"down": {"uv": [599, 645], "uv_size": [2, -4]}
}
},
{
"origin": [2.34375, 0.81049, -6.06571],
"size": [2.8125, 8.63166, 2.1829],
"pivot": [1.28906, 6.13895, -3.99204],
"rotation": [-60, 0, 0],
"uv": {
"north": {"uv": [444, 574], "uv_size": [3, 9]},
"east": {"uv": [557, 631], "uv_size": [2, 9]},
"south": {"uv": [499, 626], "uv_size": [3, 9]},
"west": {"uv": [116, 632], "uv_size": [2, 9]},
"down": {"uv": [630, 463], "uv_size": [3, -2]}
}
},
{
"origin": [-5.15594, 0.01756, -2.16791],
"size": [10.31188, 9.56854, 10.61978],
"inflate": 0.005,
"uv": {
"north": {"uv": [556, 44], "uv_size": [11, 10]},
"east": {"uv": [412, 556], "uv_size": [11, 10]},
"south": {"uv": [15, 557], "uv_size": [11, 10]},
"west": {"uv": [557, 17], "uv_size": [11, 10]},
"up": {"uv": [196, 553], "uv_size": [11, 11]},
"down": {"uv": [299, 564], "uv_size": [11, -11]}
}
},
{
"origin": [-5.15625, 3.11814, 5.52594],
"size": [10.3125, 6.76641, 6.76641],
"pivot": [0, 5.09998, 10.73215],
"rotation": [45, 0, 0],
"uv": {
"east": {"uv": [495, 604], "uv_size": [7, 7]},
"south": {"uv": [196, 582], "uv_size": [11, 7]},
"west": {"uv": [583, 606], "uv_size": [7, 7]},
"down": {"uv": [505, 590], "uv_size": [11, -7]}
}
},
{
"origin": [-4.21875, 5.71625, 4.21875],
"size": [7.5, 3.28125, 4.6875],
"uv": {
"east": {"uv": [566, 631], "uv_size": [5, 4]},
"west": {"uv": [571, 631], "uv_size": [5, 4]}
}
},
{
"origin": [2.34375, -0.93642, -7.52356],
"size": [2.34375, 4.6875, 8.4375],
"pivot": [1.28906, 5.71625, -6.5625],
"rotation": [45, 0, 0],
"uv": {
"north": {"uv": [41, 636], "uv_size": [3, 5]},
"east": {"uv": [33, 608], "uv_size": [9, 5]},
"south": {"uv": [636, 44], "uv_size": [3, 5]},
"west": {"uv": [550, 608], "uv_size": [9, 5]},
"up": {"uv": [30, 627], "uv_size": [3, 9]},
"down": {"uv": [63, 636], "uv_size": [3, -9]}
}
},
{
"origin": [-4.6875, -0.93642, -7.52356],
"size": [2.34375, 4.6875, 8.4375],
"pivot": [1.28906, 5.71625, -6.5625],
"rotation": [45, 0, 0],
"uv": {
"north": {"uv": [52, 636], "uv_size": [3, 5]},
"east": {"uv": [608, 568], "uv_size": [9, 5]},
"south": {"uv": [636, 58], "uv_size": [3, 5]},
"west": {"uv": [608, 573], "uv_size": [9, 5]},
"up": {"uv": [213, 627], "uv_size": [3, 9]},
"down": {"uv": [270, 636], "uv_size": [3, -9]}
}
}
]
},
{
"name": "barrel",
"parent": "root",
"pivot": [0.02781, 6.42016, -3.36644],
"cubes": [
{
"origin": [-2.29765, 3.72995, -12.65625],
"size": [4.6875, 4.6875, 17.8125],
"uv": {
"north": {"uv": [484, 628], "uv_size": [5, 5]},
"east": {"uv": [395, 211], "uv_size": [19, 5]},
"west": {"uv": [0, 404], "uv_size": [19, 5]},
"up": {"uv": [233, 478], "uv_size": [5, 19]},
"down": {"uv": [554, 577], "uv_size": [5, -19]}
}
},
{
"origin": [-0.9375, 7.1225, -10.78125],
"size": [1.875, 1.875, 9.375],
"pivot": [0, 8.06, -6.09375],
"rotation": [-5, 0, 0],
"uv": {
"north": {"uv": [343, 649], "uv_size": [2, 2]},
"east": {"uv": [567, 318], "uv_size": [10, 2]},
"south": {"uv": [345, 649], "uv_size": [2, 2]},
"west": {"uv": [583, 108], "uv_size": [10, 2]},
"up": {"uv": [40, 570], "uv_size": [2, 10]},
"down": {"uv": [191, 585], "uv_size": [2, -10]}
}
},
{
"origin": [-1.71171, 7.47789, -25.69907],
"size": [3.51563, 0.46875, 13.125],
"pivot": [0.0461, 6.29919, -23.4037],
"rotation": [2.5, 0, 0],
"uv": {
"north": {"uv": [649, 332], "uv_size": [4, 1]},
"east": {"uv": [636, 213], "uv_size": [14, 1]},
"south": {"uv": [333, 649], "uv_size": [4, 1]},
"west": {"uv": [636, 229], "uv_size": [14, 1]},
"up": {"uv": [481, 440], "uv_size": [4, 14]},
"down": {"uv": [150, 616], "uv_size": [4, -14]}
}
},
{
"origin": [-9.23467, 4.1987, -11.15577],
"size": [3.31456, 3.75, 3.31456],
"pivot": [0.0461, 6.0737, -1.875],
"rotation": [0, -45, 0],
"uv": {
"north": {"uv": [613, 635], "uv_size": [4, 4]},
"east": {"uv": [617, 635], "uv_size": [4, 4]},
"up": {"uv": [635, 623], "uv_size": [4, 4]},
"down": {"uv": [625, 639], "uv_size": [4, -4]}
}
},
{
"origin": [-1.59452, 9.4632, -19.7191],
"size": [3.28125, 0.46875, 4.99219],
"pivot": [0.0461, 9.69757, -12.45347],
"rotation": [45, 0, 0],
"uv": {
"east": {"uv": [576, 648], "uv_size": [5, 1]},
"west": {"uv": [648, 576], "uv_size": [5, 1]}
}
},
{
"origin": [-1.59452, 5.97226, -18.60456],
"size": [3.28125, 0.46875, 5.32031],
"pivot": [0.0461, 6.20664, -15.71002],
"rotation": [135, 0, 0],
"uv": {
"east": {"uv": [643, 167], "uv_size": [6, 1]},
"west": {"uv": [643, 168], "uv_size": [6, 1]}
}
},
{
"origin": [-1.59452, 9.4632, -23.93784],
"size": [3.28125, 0.46875, 4.26562],
"pivot": [0.0461, 9.69757, -17.14097],
"rotation": [45, 0, 0],
"uv": {
"east": {"uv": [648, 569], "uv_size": [5, 1]},
"west": {"uv": [648, 570], "uv_size": [5, 1]}
}
},
{
"origin": [-1.59452, 5.97226, -22.58894],
"size": [3.28125, 0.46875, 4.38281],
"pivot": [0.0461, 6.20664, -20.39752],
"rotation": [135, 0, 0],
"uv": {
"east": {"uv": [648, 571], "uv_size": [5, 1]},
"west": {"uv": [648, 572], "uv_size": [5, 1]}
}
},
{
"origin": [-1.36015, 5.13414, -25.69907],
"size": [2.8125, 2.8125, 13.125],
"pivot": [0.0461, 6.29919, -23.4037],
"rotation": [2.5, 0, 0],
"uv": {
"north": {"uv": [503, 618], "uv_size": [3, 3]},
"east": {"uv": [257, 352], "uv_size": [14, 3]},
"south": {"uv": [571, 639], "uv_size": [3, 3]},
"west": {"uv": [400, 99], "uv_size": [14, 3]},
"down": {"uv": [290, 544], "uv_size": [3, -14]}
}
},
{
"origin": [-1.36015, 4.82044, -25.89447],
"size": [2.8125, 2.8125, 13.125],
"pivot": [0.0461, 6.29919, -23.4037],
"rotation": [-5, 0, 0],
"uv": {
"north": {"uv": [588, 639], "uv_size": [3, 3]},
"east": {"uv": [581, 488], "uv_size": [14, 3]},
"south": {"uv": [618, 639], "uv_size": [3, 3]},
"west": {"uv": [609, 244], "uv_size": [14, 3]},
"up": {"uv": [506, 607], "uv_size": [3, 14]}
}
},
{
"origin": [-1.8289, 4.82044, -25.89447],
"size": [3.75, 0.46875, 13.125],
"pivot": [0.0461, 6.29919, -23.4037],
"rotation": [-5, 0, 0],
"uv": {
"north": {"uv": [649, 333], "uv_size": [4, 1]},
"east": {"uv": [636, 230], "uv_size": [14, 1]},
"south": {"uv": [649, 334], "uv_size": [4, 1]},
"west": {"uv": [636, 231], "uv_size": [14, 1]},
"up": {"uv": [344, 602], "uv_size": [4, 14]},
"down": {"uv": [348, 616], "uv_size": [4, -14]}
}
},
{
"origin": [-1.8289, 5.12786, -30.9375],
"size": [1.875, 1.875, 5.625],
"pivot": [-0.36406, 6.11808, -31.40625],
"rotation": [0, 0, 135],
"uv": {
"east": {"uv": [639, 44], "uv_size": [6, 2]},
"south": {"uv": [538, 652], "uv_size": [1, 2]},
"west": {"uv": [639, 46], "uv_size": [6, 2]},
"up": {"uv": [103, 643], "uv_size": [1, 6]},
"down": {"uv": [104, 649], "uv_size": [1, -6]}
}
},
{
"origin": [-1.47734, 5.14798, -37.5],
"size": [2.8125, 2.8125, 6.5625],
"uv": {
"north": {"uv": [133, 650], "uv_size": [1, 3]},
"east": {"uv": [192, 631], "uv_size": [7, 3]},
"south": {"uv": [170, 650], "uv_size": [1, 3]},
"west": {"uv": [631, 194], "uv_size": [7, 3]},
"up": {"uv": [69, 642], "uv_size": [1, 7]},
"down": {"uv": [70, 649], "uv_size": [1, -7]}
}
}
]
}
]
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB