diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekLayer.java index ad4c6a512..69b0ccd55 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekLayer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekLayer.java @@ -1,6 +1,7 @@ package com.atsuishio.superbwarfare.client.layer.gun; import com.atsuishio.superbwarfare.Mod; +import com.atsuishio.superbwarfare.client.ModRenderTypes; import com.atsuishio.superbwarfare.item.gun.special.BocekItem; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -21,7 +22,7 @@ public class BocekLayer extends GeoRenderLayer { @Override public void render(PoseStack poseStack, BocekItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { - RenderType glowRenderType = RenderType.eyes(LAYER); + RenderType glowRenderType = ModRenderTypes.ILLUMINATED.apply(LAYER); getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 0xFFFFFFFF); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekPowerLightLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekPowerLightLayer.java new file mode 100644 index 000000000..5f99d58dc --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/gun/BocekPowerLightLayer.java @@ -0,0 +1,32 @@ +package com.atsuishio.superbwarfare.client.layer.gun; + +import com.atsuishio.superbwarfare.Mod; +import com.atsuishio.superbwarfare.client.ModRenderTypes; +import com.atsuishio.superbwarfare.event.ClientEventHandler; +import com.atsuishio.superbwarfare.item.gun.special.BocekItem; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.FastColor; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class BocekPowerLightLayer extends GeoRenderLayer { + private static final ResourceLocation LAYER = Mod.loc("textures/item/bocek_power_e.png"); + + public BocekPowerLightLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, BocekItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = ModRenderTypes.ILLUMINATED.apply(LAYER); + + var value = Math.round((float) ClientEventHandler.bowPower * 255); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, FastColor.ARGB32.color(value, value, value)); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java index 9438a681e..228b34d62 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/item/BocekItemModel.java @@ -3,7 +3,6 @@ package com.atsuishio.superbwarfare.client.model.item; import com.atsuishio.superbwarfare.Mod; import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay; import com.atsuishio.superbwarfare.event.ClientEventHandler; -import com.atsuishio.superbwarfare.init.ModAttachments; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.special.BocekItem; import net.minecraft.client.Minecraft; @@ -18,8 +17,6 @@ import software.bernie.geckolib.model.GeoModel; public class BocekItemModel extends GeoModel { public static float rightHandPosZ; - public static float lerpEdit; - @Override public ResourceLocation getAnimationResource(BocekItem animatable) { return Mod.loc("animations/bocek.animation.json"); @@ -50,18 +47,15 @@ public class BocekItemModel extends GeoModel { float times = Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(); - var cap = player.getData(ModAttachments.PLAYER_VARIABLE); - lerpEdit = Mth.lerp(0.2f * times, lerpEdit, cap.edit ? 0 : 1); - double pp = ClientEventHandler.bowPullPos; double pp2 = 1 - ClientEventHandler.bowPullPos; double zp = ClientEventHandler.zoomPos; - double zp2 = (1 - ClientEventHandler.zoomPos) * lerpEdit; + double zp2 = 1 - ClientEventHandler.zoomPos; gun.setPosX((float) (0.2 * zp2 - 3 * pp2 * zp - 0.35 * pp + 0.35 * zp)); - gun.setPosY((float) (11f * zp + 3 * zp2 - 1 * pp2 * zp - 0.55 * zp)); + gun.setPosY((float) (11f * zp + 3 * zp2 - 1 * pp2 * zp - 0.5 * zp)); gun.setPosZ((float) (1.5f * zp + 2 * pp2)); - gun.setRotZ((float) (-60 * Mth.DEG_TO_RAD * zp2 + -5 * Mth.DEG_TO_RAD * pp2 * zp)); + gun.setRotZ((float) (-45 * Mth.DEG_TO_RAD * zp2 + -5 * Mth.DEG_TO_RAD * pp2 * zp)); gun.setScaleZ((float) (1f - (0.2f * zp))); leftHand.setRotY((float) (17.5 * Mth.DEG_TO_RAD * pp)); @@ -75,12 +69,16 @@ public class BocekItemModel extends GeoModel { GeoBone wing0 = getAnimationProcessor().getBone("wing0"); GeoBone wing1 = getAnimationProcessor().getBone("wing1"); GeoBone wing2 = getAnimationProcessor().getBone("wing2"); + GeoBone wing1Root = getAnimationProcessor().getBone("wing1Root"); + GeoBone wing2Root = getAnimationProcessor().getBone("wing2Root"); float m = (float) Math.min(zp, pp); wingControl(wing0, m); wingControl(wing1, m); wingControl(wing2, m); + wingControl(wing1Root, m); + wingControl(wing2Root, m); rightHand.setPosZ(rightHandPosZ); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java index 7ff175237..55879d1a9 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/item/BocekItemRenderer.java @@ -2,7 +2,6 @@ package com.atsuishio.superbwarfare.client.renderer.item; import com.atsuishio.superbwarfare.client.AnimationHelper; import com.atsuishio.superbwarfare.client.model.item.BocekItemModel; -import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.data.GunData; import com.atsuishio.superbwarfare.item.gun.special.BocekItem; @@ -26,7 +25,8 @@ public class BocekItemRenderer extends GeoItemRenderer { public BocekItemRenderer() { super(new BocekItemModel()); // TODO layer -// this.addRenderLayer(new BocekLayer(this)); +// this.addRenderLayer(new BocekLayer(this)); +// this.addRenderLayer(new BocekPowerLightLayer(this)); } @Override @@ -79,10 +79,6 @@ public class BocekItemRenderer extends GeoItemRenderer { ItemStack itemStack = player.getMainHandItem(); if (!(itemStack.getItem() instanceof GunItem)) return; - if (name.equals("holo")) { - bone.setHidden(ClientEventHandler.zoomPos < 0.7 || ClientEventHandler.bowPullPos < 0.7 || !ClientEventHandler.zoom); - } - if (name.equals("arrow")) { var data = GunData.from(itemStack); bone.setHidden(data.ammo.get() == 0); @@ -99,6 +95,7 @@ public class BocekItemRenderer extends GeoItemRenderer { super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color); } + @Override public ResourceLocation getTextureLocation(BocekItem instance) { return super.getTextureLocation(instance); diff --git a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java index 48e46ce62..d954e76dc 100644 --- a/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java +++ b/src/main/java/com/atsuishio/superbwarfare/item/gun/special/BocekItem.java @@ -1,7 +1,6 @@ package com.atsuishio.superbwarfare.item.gun.special; import com.atsuishio.superbwarfare.Mod; -import com.atsuishio.superbwarfare.capability.player.PlayerVariable; import com.atsuishio.superbwarfare.client.renderer.item.BocekItemRenderer; import com.atsuishio.superbwarfare.client.tooltip.component.BocekImageComponent; import com.atsuishio.superbwarfare.entity.projectile.ProjectileEntity; @@ -10,7 +9,6 @@ import com.atsuishio.superbwarfare.init.ModPerks; import com.atsuishio.superbwarfare.init.ModSounds; import com.atsuishio.superbwarfare.item.gun.GunItem; import com.atsuishio.superbwarfare.item.gun.data.GunData; -import com.atsuishio.superbwarfare.item.gun.data.value.AttachmentType; import com.atsuishio.superbwarfare.network.message.receive.ShootClientMessage; import com.atsuishio.superbwarfare.perk.AmmoPerk; import com.atsuishio.superbwarfare.perk.Perk; @@ -113,19 +111,6 @@ public class BocekItem extends GunItem implements GeoItem { return event.setAndContinue(RawAnimation.begin().thenLoop("animation.bocek.idle")); } - private PlayState editPredicate(AnimationState event) { - LocalPlayer player = Minecraft.getInstance().player; - if (player == null) return PlayState.STOP; - ItemStack stack = player.getMainHandItem(); - if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP; - - if (PlayerVariable.isEditing(player)) { - return event.setAndContinue(RawAnimation.begin().thenPlay("animation.bocek.edit")); - } - - return event.setAndContinue(RawAnimation.begin().thenLoop("animation.bocek.idle")); - } - @Override public void registerControllers(AnimatableManager.ControllerRegistrar data) { var idleController = new AnimationController<>(this, "idleController", 3, this::idlePredicate); @@ -134,8 +119,6 @@ public class BocekItem extends GunItem implements GeoItem { data.add(fireController); var reloadController = new AnimationController<>(this, "reloadController", 0, this::reloadPredicate); data.add(reloadController); - var editController = new AnimationController<>(this, "editController", 1, this::editPredicate); - data.add(editController); } @Override @@ -173,26 +156,6 @@ public class BocekItem extends GunItem implements GeoItem { return "Bocek"; } - @Override - public boolean isCustomizable(ItemStack stack) { - return true; - } - - @Override - public boolean hasCustomScope(ItemStack stack) { - return true; - } - - @Override - public double getCustomZoom(ItemStack stack) { - int scopeType = GunData.from(stack).attachment.get(AttachmentType.SCOPE); - return switch (scopeType) { - case 2 -> 0.75; - case 3 -> 1.75; - default -> 0; - }; - } - @Override public boolean canApplyPerk(Perk perk) { return switch (perk.type) { diff --git a/src/main/resources/assets/superbwarfare/animations/bocek.animation.json b/src/main/resources/assets/superbwarfare/animations/bocek.animation.json index 7313bc617..62c99b81b 100644 --- a/src/main/resources/assets/superbwarfare/animations/bocek.animation.json +++ b/src/main/resources/assets/superbwarfare/animations/bocek.animation.json @@ -3,46 +3,127 @@ "animations": { "animation.bocek.idle": { "loop": true, - "animation_length": 1.1, + "animation_length": 1.8667, "bones": { "r": { "rotation": [0, 0, 0] }, "wing0": { "rotation": { - "0.0": [24.84302, -42.45406, -54.663], - "0.1583": [24.84302, -42.45406, -54.663], - "0.1917": [15.97603, -36.10216, -40.71975], - "0.525": [15.97603, -36.10216, -40.71975], - "0.55": [30.97292, -44.96277, -63.46588], - "0.8083": [30.97292, -44.96277, -63.46588], - "0.8333": [24.84302, -42.45406, -54.663], - "1.1": [24.84302, -42.45406, -54.663] + "0.0": [7.85227, -25.04851, -24.89805], + "0.3333": [7.85227, -25.04851, -24.89805], + "0.3667": [8.74784, -26.73607, -26.9485], + "0.9917": [8.74784, -26.73607, -26.9485], + "1.0167": [9.61295, -27.862, -28.58268], + "1.3583": [9.61295, -27.862, -28.58268], + "1.3833": [7.85227, -25.04851, -24.89805], + "1.8667": [7.85227, -25.04851, -24.89805] } }, "wing1": { "rotation": { - "0.0": [9.87527, 33.20103, 32.07176], - "0.0917": [9.87527, 33.20103, 32.07176], - "0.125": [17.42021, 40.77696, 44.55304], - "0.425": [17.42021, 40.77696, 44.55304], - "0.4583": [14.35768, 38.08978, 39.68516], - "0.75": [14.35768, 38.08978, 39.68516], - "0.7833": [21.88875, 43.61684, 51.1403], - "1.0667": [21.88875, 43.61684, 51.1403], - "1.1": [9.87527, 33.20103, 32.07176] + "0.0": { + "post": [0, 67.5, 0], + "lerp_mode": "catmullrom" + }, + "0.4": { + "post": [0, 67.5, 0], + "lerp_mode": "catmullrom" + }, + "0.4417": { + "post": [0, 77.5, 0], + "lerp_mode": "catmullrom" + }, + "0.975": { + "post": [0, 77.5, 0], + "lerp_mode": "catmullrom" + }, + "1.0083": { + "post": [0, 70, 0], + "lerp_mode": "catmullrom" + }, + "1.3167": { + "post": [0, 70, 0], + "lerp_mode": "catmullrom" + }, + "1.3583": { + "post": [0, 72.5, 0], + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": [0, 72.5, 0], + "lerp_mode": "catmullrom" + }, + "1.8667": { + "post": [0, 67.5, 0], + "lerp_mode": "catmullrom" + } + } + }, + "wing1Root": { + "rotation": { + "0.0": [6.59238, -28.12658, -25.89615], + "0.4": [6.59238, -28.12658, -25.89615], + "0.4417": [11.1632, -34.81601, -34.62412], + "0.975": [11.1632, -34.81601, -34.62412], + "1.0083": [7.59472, -29.85262, -27.96391], + "1.3167": [7.59472, -29.85262, -27.96391], + "1.3583": [8.68736, -31.54532, -30.10372], + "1.8333": [8.68736, -31.54532, -30.10372], + "1.8667": [6.59238, -28.12658, -25.89615] + } + }, + "wing2Root": { + "rotation": { + "0.0": [5.67574, 26.3705, 23.8945], + "0.2667": [5.67574, 26.3705, 23.8945], + "0.3083": [3.39837, 20.95136, 18.23007], + "0.7417": [3.39837, 20.95136, 18.23007], + "0.775": [6.21569, 27.42758, 25.08788], + "1.375": [6.21569, 27.42758, 25.08788], + "1.4167": [5.50231, 26.01596, 23.50159], + "1.8333": [5.50231, 26.01596, 23.50159], + "1.8667": [5.67574, 26.3705, 23.8945] } }, "wing2": { "rotation": { - "0.0": [25.6525, -45.67972, -57.03841], - "0.25": [25.6525, -45.67972, -57.03841], - "0.2833": [38.17627, -49.59002, -73.92305], - "0.55": [38.17627, -49.59002, -73.92305], - "0.5833": [21.59877, -43.46728, -51.2118], - "0.8": [21.59877, -43.46728, -51.2118], - "1.0667": [21.59877, -43.46728, -51.2118], - "1.1": [25.6525, -45.67972, -57.03841] + "0.0": { + "post": [0, -65, 0], + "lerp_mode": "catmullrom" + }, + "0.2667": { + "post": [0, -65, 0], + "lerp_mode": "catmullrom" + }, + "0.3083": { + "post": [0, -57.5, 0], + "lerp_mode": "catmullrom" + }, + "0.7417": { + "post": [0, -57.5, 0], + "lerp_mode": "catmullrom" + }, + "0.775": { + "post": [0, -67.5, 0], + "lerp_mode": "catmullrom" + }, + "1.375": { + "post": [0, -67.5, 0], + "lerp_mode": "catmullrom" + }, + "1.4167": { + "post": [0, -65, 0], + "lerp_mode": "catmullrom" + }, + "1.8333": { + "post": [0, -65, 0], + "lerp_mode": "catmullrom" + }, + "1.8667": { + "post": [0, -65, 0], + "lerp_mode": "catmullrom" + } } } } @@ -512,24 +593,24 @@ "post": [0, 0, 0], "lerp_mode": "catmullrom" }, - "0.0333": { - "post": [2.05, -0.41, 1], + "0.025": { + "post": [4.2, -2.56, -12], "lerp_mode": "catmullrom" }, - "0.0833": { - "post": [2.13982, -0.98505, 2.41726], + "0.075": { + "post": [5.48982, -3.68505, -15.68274], "lerp_mode": "catmullrom" }, - "0.15": { - "post": [0.15, -1.1, 0.5], + "0.1833": { + "post": [3.2, -3.4, -11.15], "lerp_mode": "catmullrom" }, - "0.2333": { - "post": [-0.35, -0.29, -0.26], + "0.25": { + "post": [0.6, -2.59, -5.31], "lerp_mode": "catmullrom" }, "0.3": { - "post": [0.08, 0.09, 0.08], + "post": [-1.27, -1.81, -1.22], "lerp_mode": "catmullrom" }, "0.375": { @@ -542,16 +623,28 @@ "post": [0, 0, 0], "lerp_mode": "catmullrom" }, - "0.0333": { - "post": [0.23, -1.13, -4.36], + "0.0167": { + "post": [-0.17, -0.78, -5.25], + "lerp_mode": "catmullrom" + }, + "0.0417": { + "post": [-0.47, -2.08, -4.16], + "lerp_mode": "catmullrom" + }, + "0.1": { + "post": [-0.53, -2.21, -3.17], "lerp_mode": "catmullrom" }, "0.175": { - "post": [-0.35, -0.21, -0.25], + "post": [-0.15, -0.21, -1.8], "lerp_mode": "catmullrom" }, "0.2583": { - "post": [-0.34, 0.26, 0.14], + "post": [0.16, 0.26, -0.01], + "lerp_mode": "catmullrom" + }, + "0.3083": { + "post": [-0.02, 0.19, 0.52], "lerp_mode": "catmullrom" }, "0.375": { diff --git a/src/main/resources/assets/superbwarfare/geo/bocek.geo.json b/src/main/resources/assets/superbwarfare/geo/bocek.geo.json index 16030137b..78ad619ca 100644 --- a/src/main/resources/assets/superbwarfare/geo/bocek.geo.json +++ b/src/main/resources/assets/superbwarfare/geo/bocek.geo.json @@ -4736,7 +4736,22 @@ { "name": "up", "parent": "0", - "pivot": [0, 0, 7] + "pivot": [0, 0, 7], + "cubes": [ + { + "origin": [-0.24, 6.66596, 7.72429], + "size": [0.48, 0.33, 1.176], + "pivot": [0.25, 6.85596, 8.71229], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [98, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [81, 89], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 98], "uv_size": [0.5, 0.5]}, + "west": {"uv": [89, 81], "uv_size": [1, 0.5]}, + "up": {"uv": [82, 89], "uv_size": [0.5, 1]} + } + } + ] }, { "name": "wing0", @@ -4833,15 +4848,64 @@ ] }, { - "name": "wing1", + "name": "wing1Root", "parent": "up", - "pivot": [0.604, 6.35596, 0.01229], + "pivot": [0.43291, 6.85346, 0.56894], "rotation": [39.25, 0, 0], "cubes": [ { - "origin": [0.54, 5.87596, -0.33571], + "origin": [0.46723, 7.06396, -0.24055], + "size": [0.08, 0.08, 0.776], + "pivot": [0.50723, 7.10396, 0.14745], + "rotation": [0, -10, 0], + "uv": { + "north": {"uv": [98, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [81, 89], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 98], "uv_size": [0.5, 0.5]}, + "west": {"uv": [89, 81], "uv_size": [1, 0.5]}, + "up": {"uv": [82, 89], "uv_size": [0.5, 1]}, + "down": {"uv": [89, 83], "uv_size": [0.5, -1]} + } + }, + { + "origin": [0.46723, 6.56396, -0.24055], + "size": [0.08, 0.08, 0.776], + "pivot": [0.50723, 6.60396, 0.14745], + "rotation": [0, -10, 0], + "uv": { + "north": {"uv": [98, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [81, 89], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 98], "uv_size": [0.5, 0.5]}, + "west": {"uv": [89, 81], "uv_size": [1, 0.5]}, + "up": {"uv": [82, 89], "uv_size": [0.5, 1]}, + "down": {"uv": [89, 83], "uv_size": [0.5, -1]} + } + }, + { + "origin": [0.39291, 6.81346, 0.27844], + "size": [0.08, 0.08, 0.581], + "pivot": [0.43291, 6.85346, 0.56894], + "rotation": [-90, -10, 0], + "uv": { + "north": {"uv": [98, 15], "uv_size": [0.5, 0.5]}, + "east": {"uv": [81, 89], "uv_size": [1, 0.5]}, + "south": {"uv": [16, 98], "uv_size": [0.5, 0.5]}, + "west": {"uv": [89, 81], "uv_size": [1, 0.5]}, + "up": {"uv": [82, 89], "uv_size": [0.5, 1]}, + "down": {"uv": [89, 83], "uv_size": [0.5, -1]} + } + } + ] + }, + { + "name": "wing1", + "parent": "wing1Root", + "pivot": [0.604, 6.85596, -0.18771], + "cubes": [ + { + "origin": [0.54, 6.37596, -0.53571], "size": [0.088, 0.28, 1.072], - "pivot": [0.604, 6.19596, 0.37229], + "pivot": [0.604, 6.69596, 0.17229], "rotation": [-90, 0, 0], "uv": { "north": {"uv": [98, 16], "uv_size": [0.5, 0.5]}, @@ -4851,9 +4915,9 @@ } }, { - "origin": [0.54, 5.99007, 0.26487], + "origin": [0.54, 6.49007, 0.06487], "size": [0.088, 1.16, 0.352], - "pivot": [0.604, 6.31007, 0.25287], + "pivot": [0.604, 6.81007, 0.05287], "rotation": [-39.25, 0, 0], "uv": { "east": {"uv": [45, 85], "uv_size": [0.5, 1.5]}, @@ -4862,9 +4926,9 @@ } }, { - "origin": [0.54, 7.15007, 0.06487], + "origin": [0.54, 7.65007, -0.13513], "size": [0.088, 0.4, 0.552], - "pivot": [0.604, 6.31007, 0.25287], + "pivot": [0.604, 6.81007, 0.05287], "rotation": [-39.25, 0, 0], "uv": { "east": {"uv": [17, 98], "uv_size": [0.5, 0.5]}, @@ -4874,9 +4938,9 @@ } }, { - "origin": [0.54, 6.1927, 0.62965], + "origin": [0.54, 6.6927, 0.42965], "size": [0.088, 1.056, 0.552], - "pivot": [0.584, 7.0487, 0.90565], + "pivot": [0.584, 7.5487, 0.70565], "rotation": [-51.75, 0, 0], "uv": { "north": {"uv": [48, 85], "uv_size": [0.5, 1.5]}, @@ -4885,9 +4949,9 @@ } }, { - "origin": [0.564, 6.31596, -0.37571], + "origin": [0.564, 6.81596, -0.57571], "size": [0.08, 0.08, 0.776], - "pivot": [0.604, 6.35596, 0.01229], + "pivot": [0.604, 6.85596, -0.18771], "rotation": [-90, 0, 0], "uv": { "north": {"uv": [98, 15], "uv_size": [0.5, 0.5]}, @@ -4901,69 +4965,118 @@ ] }, { - "name": "wing2", + "name": "wing2Root", "parent": "up", - "pivot": [-0.604, 6.35596, 0.01229], + "pivot": [-0.43291, 6.85346, 0.56894], "rotation": [39.25, 0, 0], "cubes": [ { - "origin": [-0.628, 5.87596, -0.33571], + "origin": [-0.54723, 7.06396, -0.24055], + "size": [0.08, 0.08, 0.776], + "pivot": [-0.50723, 7.10396, 0.14745], + "rotation": [0, 10, 0], + "uv": { + "north": {"uv": [98.5, 15], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [90, 81], "uv_size": [-1, 0.5]}, + "south": {"uv": [16.5, 98], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [82, 89], "uv_size": [-1, 0.5]}, + "up": {"uv": [82.5, 89], "uv_size": [-0.5, 1]}, + "down": {"uv": [89.5, 83], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-0.54723, 6.56396, -0.24055], + "size": [0.08, 0.08, 0.776], + "pivot": [-0.50723, 6.60396, 0.14745], + "rotation": [0, 10, 0], + "uv": { + "north": {"uv": [98.5, 15], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [90, 81], "uv_size": [-1, 0.5]}, + "south": {"uv": [16.5, 98], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [82, 89], "uv_size": [-1, 0.5]}, + "up": {"uv": [82.5, 89], "uv_size": [-0.5, 1]}, + "down": {"uv": [89.5, 83], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-0.47291, 6.81346, 0.27844], + "size": [0.08, 0.08, 0.581], + "pivot": [-0.43291, 6.85346, 0.56894], + "rotation": [-90, 10, 0], + "uv": { + "north": {"uv": [98.5, 15], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [90, 81], "uv_size": [-1, 0.5]}, + "south": {"uv": [16.5, 98], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [82, 89], "uv_size": [-1, 0.5]}, + "up": {"uv": [82.5, 89], "uv_size": [-0.5, 1]}, + "down": {"uv": [89.5, 83], "uv_size": [-0.5, -1]} + } + } + ] + }, + { + "name": "wing2", + "parent": "wing2Root", + "pivot": [-0.604, 6.85596, -0.18771], + "cubes": [ + { + "origin": [-0.628, 6.37596, -0.53571], "size": [0.088, 0.28, 1.072], - "pivot": [-0.604, 6.19596, 0.37229], + "pivot": [-0.604, 6.69596, 0.17229], "rotation": [-90, 0, 0], "uv": { - "north": {"uv": [19, 98], "uv_size": [0.5, 0.5]}, - "east": {"uv": [85, 48], "uv_size": [1.5, 0.5]}, - "west": {"uv": [51, 85], "uv_size": [1.5, 0.5]}, - "down": {"uv": [85, 53.5], "uv_size": [0.5, -1.5]} + "north": {"uv": [98.5, 16], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [86.5, 43], "uv_size": [-1.5, 0.5]}, + "west": {"uv": [43.5, 85], "uv_size": [-1.5, 0.5]}, + "down": {"uv": [44.5, 86.5], "uv_size": [-0.5, -1.5]} } }, { - "origin": [-0.628, 5.99007, 0.26487], + "origin": [-0.628, 6.49007, 0.06487], "size": [0.088, 1.16, 0.352], - "pivot": [-0.604, 6.31007, 0.25287], + "pivot": [-0.604, 6.81007, 0.05287], "rotation": [-39.25, 0, 0], "uv": { - "east": {"uv": [54, 85], "uv_size": [0.5, 1.5]}, - "south": {"uv": [55, 85], "uv_size": [0.5, 1.5]}, - "west": {"uv": [85, 55], "uv_size": [0.5, 1.5]} + "east": {"uv": [46.5, 85], "uv_size": [-0.5, 1.5]}, + "south": {"uv": [85.5, 45], "uv_size": [-0.5, 1.5]}, + "west": {"uv": [45.5, 85], "uv_size": [-0.5, 1.5]} } }, { - "origin": [-0.628, 7.15007, 0.06487], + "origin": [-0.628, 7.65007, -0.13513], "size": [0.088, 0.4, 0.552], - "pivot": [-0.604, 6.31007, 0.25287], + "pivot": [-0.604, 6.81007, 0.05287], "rotation": [-39.25, 0, 0], "uv": { - "east": {"uv": [98, 19], "uv_size": [0.5, 0.5]}, - "south": {"uv": [20, 98], "uv_size": [0.5, 0.5]}, - "west": {"uv": [98, 20], "uv_size": [0.5, 0.5]}, - "up": {"uv": [21, 98], "uv_size": [0.5, 0.5]} + "east": {"uv": [18.5, 98], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [98.5, 17], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [17.5, 98], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [98.5, 18], "uv_size": [-0.5, 0.5]} } }, { - "origin": [-0.628, 6.1927, 0.62965], + "origin": [-0.628, 6.6927, 0.42965], "size": [0.088, 1.056, 0.552], - "pivot": [-0.584, 7.0487, 0.90565], + "pivot": [-0.584, 7.5487, 0.70565], "rotation": [-51.75, 0, 0], "uv": { - "north": {"uv": [57, 85], "uv_size": [0.5, 1.5]}, - "east": {"uv": [58, 85], "uv_size": [0.5, 1.5]}, - "west": {"uv": [85, 58], "uv_size": [0.5, 1.5]} + "north": {"uv": [48.5, 85], "uv_size": [-0.5, 1.5]}, + "east": {"uv": [85.5, 50], "uv_size": [-0.5, 1.5]}, + "west": {"uv": [49.5, 85], "uv_size": [-0.5, 1.5]} } }, { - "origin": [-0.644, 6.31596, -0.37571], + "origin": [-0.644, 6.81596, -0.57571], "size": [0.08, 0.08, 0.776], - "pivot": [-0.604, 6.35596, 0.01229], + "pivot": [-0.604, 6.85596, -0.18771], "rotation": [-90, 0, 0], "uv": { - "north": {"uv": [98, 21], "uv_size": [0.5, 0.5]}, - "east": {"uv": [83, 89], "uv_size": [1, 0.5]}, - "south": {"uv": [22, 98], "uv_size": [0.5, 0.5]}, - "west": {"uv": [89, 83], "uv_size": [1, 0.5]}, - "up": {"uv": [84, 89], "uv_size": [0.5, 1]}, - "down": {"uv": [89, 85], "uv_size": [0.5, -1]} + "north": {"uv": [98.5, 15], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [90, 81], "uv_size": [-1, 0.5]}, + "south": {"uv": [16.5, 98], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [82, 89], "uv_size": [-1, 0.5]}, + "up": {"uv": [82.5, 89], "uv_size": [-0.5, 1]}, + "down": {"uv": [89.5, 83], "uv_size": [-0.5, -1]} } } ] @@ -18689,7 +18802,14 @@ "up": {"uv": [117, 12], "uv_size": [0.5, 0.5]}, "down": {"uv": [112, 18.5], "uv_size": [0.5, -0.5]} } - }, + } + ] + }, + { + "name": "dot", + "parent": "bone127", + "pivot": [-1.01232, 3.84123, 0.10947], + "cubes": [ { "origin": [-1.06107, 3.79248, 0.09322], "size": [0.0975, 0.0975, 0.0325], diff --git a/src/main/resources/assets/superbwarfare/textures/item/bocek.png b/src/main/resources/assets/superbwarfare/textures/item/bocek.png index 25f9d4760..c3a29ec9b 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/bocek.png and b/src/main/resources/assets/superbwarfare/textures/item/bocek.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/bocek_e.png b/src/main/resources/assets/superbwarfare/textures/item/bocek_e.png index 3cd53578f..7aba3c273 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/item/bocek_e.png and b/src/main/resources/assets/superbwarfare/textures/item/bocek_e.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/item/bocek_power_e.png b/src/main/resources/assets/superbwarfare/textures/item/bocek_power_e.png new file mode 100644 index 000000000..8052ae018 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/item/bocek_power_e.png differ