添加坦克图标,移除yx100Gun
This commit is contained in:
parent
99518277d1
commit
112578b366
9 changed files with 5 additions and 703 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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);
|
||||||
|
|
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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));
|
||||||
|
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 |
Loading…
Add table
Reference in a new issue