From 112578b3666fa7e3a6da608969c158ecbe74c161 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Fri, 7 Mar 2025 15:42:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9D=A6=E5=85=8B=E5=9B=BE?= =?UTF-8?q?=E6=A0=87=EF=BC=8C=E7=A7=BB=E9=99=A4yx100Gun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/Yx100GunModel.java | 36 -- .../renderer/entity/Yx100GunRenderer.java | 43 -- .../client/renderer/entity/Yx100Renderer.java | 6 +- .../entity/vehicle/Yx100Entity.java | 2 +- .../entity/vehicle/Yx100GunEntity.java | 196 -------- .../superbwarfare/init/ModEntities.java | 2 - .../init/ModEntityRenderers.java | 1 - .../superbwarfare/geo/yx_100_gun.geo.json | 422 ------------------ .../textures/vehicle_icon/yx_100_icon.png | Bin 0 -> 10379 bytes 9 files changed, 5 insertions(+), 703 deletions(-) delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100GunModel.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100GunRenderer.java delete mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100GunEntity.java delete mode 100644 src/main/resources/assets/superbwarfare/geo/yx_100_gun.geo.json create mode 100644 src/main/resources/assets/superbwarfare/textures/vehicle_icon/yx_100_icon.png diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100GunModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100GunModel.java deleted file mode 100644 index 42776e20c..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Yx100GunModel.java +++ /dev/null @@ -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 { - - @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 animationState) { - CoreGeoBone bone = getAnimationProcessor().getBone("barrel"); - EntityModelData entityData = animationState.getData(DataTickets.ENTITY_MODEL_DATA); - bone.setRotX((entityData.headPitch()) * Mth.DEG_TO_RAD); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100GunRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100GunRenderer.java deleted file mode 100644 index bf3e81024..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100GunRenderer.java +++ /dev/null @@ -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 { - - 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(); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java index 4353239b4..36fa070e6 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/Yx100Renderer.java @@ -88,7 +88,7 @@ public class Yx100Renderer extends GeoEntityRenderer { float a = animatable.getEntityData().get(YAW); 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); float r2; @@ -104,7 +104,9 @@ public class Yx100Renderer extends GeoEntityRenderer { } 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); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java index d1c1e94a6..a76b23150 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100Entity.java @@ -960,6 +960,6 @@ public class Yx100Entity extends ContainerMobileVehicleEntity implements GeoEnti @Override public ResourceLocation getVehicleIcon() { - return ModUtils.loc("textures/vehicle_icon/bmp2_icon.png"); + return ModUtils.loc("textures/vehicle_icon/yx_100_icon.png"); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100GunEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100GunEntity.java deleted file mode 100644 index 5b932395b..000000000 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Yx100GunEntity.java +++ /dev/null @@ -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 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 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 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"); - } -} diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java index 773b2dbd3..3ed51b9bd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java @@ -90,8 +90,6 @@ public class ModEntities { EntityType.Builder.of(LaserTowerEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f)); public static final RegistryObject> YX_100 = register("yx_100", EntityType.Builder.of(Yx100Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100Entity::new).fireImmune().sized(5.5f, 3.25f)); - public static final RegistryObject> YX_100_GUN = register("yx_100_gun", - EntityType.Builder.of(Yx100GunEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Yx100GunEntity::new).fireImmune().sized(0.9f, 0.65f)); private static RegistryObject> register(String name, EntityType.Builder entityTypeBuilder) { return REGISTRY.register(name, () -> entityTypeBuilder.build(name)); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java index fc7e066dc..6a8bd017d 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java @@ -43,6 +43,5 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.WG_MISSILE.get(), WgMissileRenderer::new); event.registerEntityRenderer(ModEntities.LASER_TOWER.get(), LaserTowerRenderer::new); event.registerEntityRenderer(ModEntities.YX_100.get(), Yx100Renderer::new); - event.registerEntityRenderer(ModEntities.YX_100_GUN.get(), Yx100GunRenderer::new); } } diff --git a/src/main/resources/assets/superbwarfare/geo/yx_100_gun.geo.json b/src/main/resources/assets/superbwarfare/geo/yx_100_gun.geo.json deleted file mode 100644 index 830390a12..000000000 --- a/src/main/resources/assets/superbwarfare/geo/yx_100_gun.geo.json +++ /dev/null @@ -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]} - } - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/vehicle_icon/yx_100_icon.png b/src/main/resources/assets/superbwarfare/textures/vehicle_icon/yx_100_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..979c34f2c0d12b365cc4bba0c4a929c172573849 GIT binary patch literal 10379 zcmX9^bzGD0+kHq!ib#occZt$9Kst4lG>lG>t|2Ai5QHH(rKJ6WpbY5_MM^+K8kDIB z6N!P;d;5F$`4E3>&z|RsbDeXpJI&lwkB*w18iF7?1AQG!2qFRhLYgp2@O$5(x)c1N z3evX?fgmaVe?KG<fuM|H-QX zIj1wY=EC?o3H5kI^S%LAaffOp=t1bpD^+-AVm=oCr2X>xu1o?ee7H|Bi=mg1EDpuF z`L6N5P}Q89g_FOG%<5+x<~s;k+jnZVe-uorvv-_5o2qQ9tqoYLsUx&4pOIXj{(XK) z5r1*#NU>k(e8+M~owyLvb=*OSC4|=xs@Ai7ziU>U!d@rD6|s^q4t=I_W<{Ao=XBk6 zP~aLi(D9ee*il~53L>R_;c`_;ig?0QrP;Yq`5wJNj%Dsg5mdaFzyImcV>9)4MKOQg zCAw;i9bJV=AwS5kL6(ZwI_%>Jik+-#wGhIqLOhzVf)R9ExW@U3BLYEIVC*4ZG%g(KV8*R{Ph|JATb3<$R|Qg~ z(8OakF7Q0y)1sDv#88*u!|V8vPH?eNkJrwb$f+Oq9>`Wmzw)ixGrgRq^Oa9JaG-P$ z^65?>yWno#6_~ePXYs2Tt#yLO2)xh>0 zQ$tZjJR>R|+|2o%9D%2@2g%MdiVf3|R?6V{DD`vRuy@xcF>phvmWF=wLi_vsH`0^r zsCuC3kDD<_w+pDG($AdY9jLpD(Xwh-l0*J6CElcyNmt=DY@#K#Va7ct5vGOZ!lzHa z`Q13)iBRQAA6j4Pvm!aX+$Xa_JnkYd2G9ETObeFHteZxHT32+=>>&{Q8YPOoc*GOE z3yX94ipKdl=*gga4*1qOl}WE$(ez%EsjoFPq`DiL<^oYvx|7fIaa6L)n-A^YUqg}{ zYL6-LC!OrTRpxMXL&4ojss8iDxlu)-V{A{gEKWS1hsZ%V7q%J!gHebQ^JFAl?;*)F z1Rs8hv@Hta&~wcU9#i5N;(h1-(c9N|BxBKBKBuX+<_i@M7k%nFvjcbMFVyPBTPN_%`2c8!S ztXo)(3ZeMKrb+jGbJK`4;;SqA8}`^@daDfjX;gm`l7xOj@@3yc2=MIgKTrkqlB}CZ zST++95}Nq(CH-H@VoZM&dqq1#on0%Y=rTogVvPDlI83gM&={d#$+cY3^P49pC+CBkWiM)LePz8h zt7v;uAm}`q;m_-2`X>biN4DD9eX$Q8KKwa7%_MKKi#AL0FJ^bQt-$#whMfHduh+h_ zb)j^y*{9;K{^fFwC+S25f1(YYaShBw2f4ey&_W>I;de`#nwZPV%7Qp92xhb&m*(D= zz3Df9)6=t(=d2^+k_N<~boc8Vu^q2A_url76vw!uZ~ae~Pd218mOVT?ibbdu@d&Cf z!5lvGxbm8xb|zEm6f4)(nm0`-s**`(gAkgqBX(3c>04r|#>r}tB05ASe?(0~P3`pL z*RNk^t*y$RCMHle5-Aa?=)ZrXBnnDrH?TfYyOqZB}B{{0RrsmV<&u^bw z8p3!Pqzy&G2ur7z5Qr=i*gWo;Ia9erA))62w;$!i{OoLaWrcTF#by*tGu4^T75iA& zj6KEWMP+3rer+e>OfoRiDA3KVjFCF|{l+j`-{;S4y{j^`ea@|QQ|2P_lM@p`9zH%b zd9s6d?Cd;(#-1rrt<1uBKOtJu@~>Q{H1CUa3k$qis@sGm!@d0c zB#tHXM_hb-sI&FSQ(Sn8#;*+pd+{)6-guh4uK0a>J4Jvw6(>>qyO&1VFM6wKHYKoQ z-)h|?Flwswhg!%VziV+rx+$9mGMQFZJ-H@i34hR~e8LP@`PlWdY0EJc`P6cjFuG}=$vu=U(V z=n60f4+I+IXo@CFj10TW-HV8@iQgGuJr3JmpfZ`_kbu7e<)JUY__;mOF-)@hFh*U+ zY4qnt?vl4RZF>2ZZU3>O2-Bl??m=t)R5D=!lPr^oIRaEv5YGRxu@L{(VjJr`&YvHe zn3_rimFfQ4mX@BLQow+k0bY2;?W&-Goh+u8o$M`IOLUQwI{C~RgwnfkLY_`x@!n<9 z1PE2CJAd_@a4PlkH+o&uf{8p)i!CL=@5ab=lUgx5nh&F+S{Uj1GQ>jz`#&q7kE?2H z6H7&m2=){WHni$R7jNCVr5L6uuQsJ#*!9?GkjZ^}#`V;!# zm}1nrRwawtB!B$)aY;cz0Zw1wt~L)tl}60r?=D@8(#`-9KO7 zA#nbHq7d(nHQya;Bk^0oDu}0(8j2cEC6$WEn1HEIYGPsnnxoS%#8iOs$&)8gIn$gU z%TtBG!Qa1S0CvE5>!{7IEcvpf_$Iz(GB;c$9*^K2W@b9OyOS4Iw1{OYX3cK!8Zh!@ z!`QE09eH9W`1km@#Jez>mY2N599CGtn`f91f}WhTxG7qmBhZmO@~zVl_Rhkvs{?>H zbGE@-KU(LQn3G}w0}=#+vuIqe9otS$$wRv$1qG4>T|)&He>XH-Bei}bPSL>r;6mMA z!5ofrLVoLk#0Yn9ON$(o;Q2gq<0b-8-q0W$yWAN|gx*r2&|)bPeKL;>%VktlXa?Ez zWS2V;7-UiS3=>|#WJ;EnEX75?QDXPH@25vN94>N~g%-}Bul($$fMo~QP331P{`0RS zXh3s47;r7lb&ZN*2YrkUahJPNRYN_}xL~YmC>qfELkPk*(q1dbd};VyQoUZsD);Aw)ZZPvOQTyj1Z5t(Mj$*i~Z&O!z-{^!I-`nHipbwGgUC}uGVMYdRx8S+3iovAPoriqt=SSmZ)ch#|29J<)&r$^pVC19# zu(tQ9Cmm)(gU0Ykvh=NFI0?=_KW#6MXy#n9+#mmV9Pd)N(T>1cQkzUoOiY;L)YzZp z&;5eS*aa@4-miD8&*SKHEsATzESMBAu6{IQa=i(gE{P+oU$}| zy1|?VY^zj+?dnw;Wi*+|)LR!eb%PwN4xbj7^hQQBDJd!TYE8LajyHeh(Ly4#flmty z0SR1HM2r8VdUpH4qrA+XX!;(ner?egP|d5&w|K z6g)_-W&e8caHFx`d_{_j`IwTsZQa2uDY3Nyo9_a5US5{Hk`PAImB(@V>|6fDH zCD088#)A&JAuSwsc6LD<|NU9}N}|>{{y+{jQceoK27su|OY8x8pB!zU zgK<*BEetZ;5hMuYJ{ew;xtd|OIy0sMAZKSMSP|W4Bs%Z|gTZJV9L4BK|G1B#0x@E9 zJ7(6Mb9mqSo)O+DtEA+8cT8hVkv{C#XV7IX^EdvDkrEN=V2)J$Ze(?HGb^ZXGBPqi z+v=Ej_MFDKf7DgL8_f~S0H*2a=pG4B`F?uYQaT&?>$9wsy)XLKJ*Nw#BnB@l%HQt# z_>iMQYMs=J^!T#7pM@{AR4qlRA5Lb)CDqkQ8Jn5$=NXpN*9T6XQt^r)-X(xKq)dd; zw>xKQt=o2e0|Ubep@IolQ%J^IjB@j-4MnMwN!w*l@AJ~YrJ1PBnFa)-#+2?kglApe zm8gbcWe4x~@PNV>@Ta~6IuU}t=7M5>S=hj}>Y~5zO0A0Fah~`pDZ}OcjtqXWA10?V&naG{% zBs@M(%0Ab@#|Ls5LnQtO~Scn(xxyAK?B2>6*BIs=#!lx>!kU5#*u9b#jsyC4(dhc zs^xq9jS||kp)!N7qV|2jh~Fa;+Xk;f03RhKC1I(3$U(NDVEY}*DR~{fOW{qGxvf^q zBXsk)aq;g+FE1Fhu)PI=(*pXY(qdO2=g}3EAE>eK8`mumPC`W4WSQ^77i6#b_&tF@U4uU7Ipdd|1wpR~g zqAMEt%dLb?B)dRg{NI0cJbVFe??BvpjWba;qDC3 z!{Gz>cu&)|GG(OR|!)){jO^t$uiyC1L1_!L@I|1lvuw1&=ME1pS@jO4y3p+mx@@}tvb zH~zAS&nT^OG2he%YQrc;epD%63BN!fhA>T)3PTGHV)bE&;L%jl%ka3yg%BI5pfO#t zOyN~`0z#Pp~!zK?dg~Kd2R*TbzF|*zoa2;1B~y_ZvEOl zvS$V4Q7!i)m$Tz=2;~UV=de*DXqI0Qe~GE>Z2=e12drozX7W(vOq|7acE*_8U5 zuSY4LWPxTyf#jEFgWhx0L%s$hk*=XqZpYE`@MnBaNBN$aY72NrYCli@F3s2m6iTy1 zM$j1NZ9;F%fQ1{x3L87(g185jXgW~M=HKANCZS*lyjMWLU^c&A&4xBKuvS}Gp*0(7 zgV8mtF+K&HgcFj=sQm*szmvv7f>-TT$_g2q4Ib+nR??tfIWMkSuJ3D!+UN5l7Rr4I z9?Kr}$Tk+L|J!n_n(3ZHYTc&wetW6a@?F>6jZqO~OK+ou$NUY}eNG+OTuW+YS(7Qs zV&v;NP|fzfjNN>%BsMqGOBd2g$D}^)v`3v@x5)G26=0+SS_SBQXQ8ztO#$J^*DT`A zN@y}5I#SL|&CJ@EQ$N)?&_DrC>SiAZ57uJfzjTqZtc0*WnFUwwkdTl7B>$BBqDcFD zxRf;`0Bps$6Gf47dc3`uApg$Vy$q{(Ta50HP)j*#N(|dUIcxl0=B7 zt8G!#eeOuVSr(9BWHPmJ)SgYAk%%wI;>D9ZNG{62?i&*SqDm>R?pbJ0K`OS)=V9X+$KFVN3bu#UUJ$G;tCoI z+`wv(I78jUASqg6`ckFkvFK#7hZfxCrFw}An+Ov%^7@w8CO>J=yhEh#E}|}KX3REH zUF!kh?q>m0@*`soN;vOAz^!1FIaHDdS5SAp_C=4*Y!4+L&auiZA;xay@{izaHwZFN z#BAGA=t@Z{7yEKYG%^0dZ&^63$^R({p!;aqK^WvneKTr_Ky(T{wlEQxg}BzRTWz=Ld`K0OcQN|w%&?vihSTI zUb;}IDOYfhe~}zs@<>I)f^zig#H}j}WX?+jM@l9jdkr*s@(f8t!nQ9(;Y7?WN6{+| z`{GxunwI+sfPK=`c#3??BU|Ce?h+W`XKv%q)yz&#@EV@!r6(rpMe)JsXQy3%aLpZC zuX~(-haAP6%_}Sf^&QvH-75!e|Lu?+r5EI~=qr7N??(Ga85{$d&3A=j`+hpg#NE;{ zCSB2MpCnlIb*R;Y#8OaMVsR`cf}m zl)rvGw(^UnHQ8+D$WJ>6AETDO)|JHkB(f^%#uKDCG(XuRBAx znURz9osMRTy?*vO4Sk3jIwS2K^nG@i@P%68B6c?#I#Ek^U5KpKFa7@Fy8;ibYw4jd zWL;nX=55B8NI3S5|NN-sWki5>$)h`-W{00xja+$?y5&u*FR)?Gq;pp9q;aO# zq}3HgIa8UTyu|oUe)R4OaM|okq<@zo9NZQIJAm&$^8w9kl;CGf>z1LVrK58>KG+Jl zBe~jJE02lf<%5!ae@|E60^$U)@48iKmJCVn9~;=VV>?Xp`cPI`OA8p-oD-poNLYsL z&jh|(Bkpol_4Rrs=G~KJdXsZ=X&W0J3Z^|O=y1m+e_((WjhEHcjdjpxON#K(i(k7S zu4R~@o%v6`1Na4E42QeH059HD29=UAP!$#^U~s=~^AWN@JRL41EF1!SjMIDyvzUiq zc_IeZH|yB*tLX)?e7=ENhL<{iv?IKdS55YYFS7&^!gtoN`7LMtHPY;k=7zG@uTu=# z*j}Sa@afls1O$HT$l|NbV{N-W2mpUR9s$OO5HJ;f%A9s@){nUxJFBs zYx(tVOAW1o=9~D-30j%51tHt~No>1eohhJ6W_B)$$U#@SnNYH0N0^cl-a>tW;eu

xO3H1H6n>&@^`;lFb_kJ@BBkFn(y&D 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 mE@