修复M4的火焰,手臂动画
This commit is contained in:
parent
2ac0b4eeb3
commit
0b214c8f13
4 changed files with 62 additions and 96 deletions
|
@ -39,11 +39,8 @@ public class M4ItemModel extends GeoModel<M4Item> {
|
|||
ItemStack stack = player.getMainHandItem();
|
||||
if (!stack.is(ModTags.Items.GUN)) return;
|
||||
|
||||
double p = 0;
|
||||
p = player.getPersistentData().getDouble("zoom_pos");
|
||||
|
||||
double zp = 0;
|
||||
zp = player.getPersistentData().getDouble("zoom_pos_z");
|
||||
double p = player.getPersistentData().getDouble("zoom_pos");
|
||||
double zp = player.getPersistentData().getDouble("zoom_pos_z");
|
||||
|
||||
gun.setPosX(2.935f * (float) p);
|
||||
|
||||
|
@ -71,16 +68,16 @@ public class M4ItemModel extends GeoModel<M4Item> {
|
|||
}
|
||||
shen.setPosX(0.5f * (float)fr * (float)((player.getCapability(ModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new ModVariables.PlayerVariables())).recoilHorizon * fp));
|
||||
|
||||
CoreGeoBone flare = getAnimationProcessor().getBone("flare");
|
||||
// CoreGeoBone flare = getAnimationProcessor().getBone("flare");
|
||||
|
||||
if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
|
||||
flare.setHidden(false);
|
||||
flare.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
flare.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||
} else {
|
||||
flare.setHidden(true);
|
||||
}
|
||||
// if (stack.getOrCreateTag().getDouble("flash_time") > 0) {
|
||||
// flare.setHidden(false);
|
||||
// flare.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
// flare.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
// flare.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||
// } else {
|
||||
// flare.setHidden(true);
|
||||
// }
|
||||
|
||||
CoreGeoBone root = getAnimationProcessor().getBone("root");
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import net.minecraft.client.renderer.RenderType;
|
|||
import net.minecraft.client.renderer.entity.player.PlayerRenderer;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemDisplayContext;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||
|
@ -36,18 +37,19 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
|
|||
}
|
||||
|
||||
private static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||
protected boolean renderArms = false;
|
||||
protected MultiBufferSource currentBuffer;
|
||||
protected RenderType renderType;
|
||||
public ItemDisplayContext transformType;
|
||||
protected M4Item animatable;
|
||||
private final Set<String> hiddenBones = new HashSet<>();
|
||||
private final Set<String> suppressedBones = new HashSet<>();
|
||||
|
||||
@Override
|
||||
public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) {
|
||||
this.transformType = transformType;
|
||||
if (this.animatable != null) {
|
||||
if (this.animatable != null)
|
||||
this.animatable.getTransformType(transformType);
|
||||
}
|
||||
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||
}
|
||||
|
||||
|
@ -58,6 +60,9 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
|
|||
this.renderType = type;
|
||||
this.animatable = animatable;
|
||||
super.actuallyRender(matrixStackIn, animatable, model, type, renderTypeBuffer, vertexBuilder, isRenderer, partialTicks, packedLightIn, packedOverlayIn, red, green, blue, alpha);
|
||||
if (this.renderArms) {
|
||||
this.renderArms = false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -73,17 +78,26 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
|
|||
bone.setHidden(this.hiddenBones.contains(name));
|
||||
}
|
||||
|
||||
if (name.equals("flare")) {
|
||||
Player player = Minecraft.getInstance().player;
|
||||
ItemStack pstack = null;
|
||||
if (player != null) {
|
||||
pstack = player.getMainHandItem();
|
||||
}
|
||||
if (pstack != null && pstack.getOrCreateTag().getDouble("flash_time") > 0) {
|
||||
bone.setHidden(false);
|
||||
bone.setScaleX((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
bone.setScaleY((float) (0.55 + 0.5 * (Math.random() - 0.5)));
|
||||
bone.setRotZ((float) (0.5 * (Math.random() - 0.5)));
|
||||
} else {
|
||||
bone.setHidden(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (this.transformType.firstPerson() && renderingArms) {
|
||||
AbstractClientPlayer player = mc.player;
|
||||
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
float armsAlpha = player.isInvisible() ? 0.15f : 1.0f;
|
||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player);
|
||||
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
|
||||
|
||||
stack.pushPose();
|
||||
RenderUtils.translateMatrixToBone(stack, bone);
|
||||
RenderUtils.translateToPivotPoint(stack, bone);
|
||||
|
@ -93,17 +107,15 @@ public class M4ItemRenderer extends GeoItemRenderer<M4Item> {
|
|||
ResourceLocation loc = player.getSkinTextureLocation();
|
||||
VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc));
|
||||
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
||||
|
||||
if (name.equals("Lefthand")) {
|
||||
stack.translate(-1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||
AnimUtils.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
|
||||
AnimUtils.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
|
||||
} else {
|
||||
stack.translate(SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||
AnimUtils.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
|
||||
AnimUtils.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, armsAlpha);
|
||||
AnimUtils.renderPartOverBone(model.leftArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||
AnimUtils.renderPartOverBone(model.leftSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||
} else if (name.equals("Righthand")) {
|
||||
stack.translate(1.0f * SCALE_RECIPROCAL, 2.0f * SCALE_RECIPROCAL, 0.0f);
|
||||
AnimUtils.renderPartOverBone(model.rightArm, bone, stack, armBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||
AnimUtils.renderPartOverBone(model.rightSleeve, bone, stack, sleeveBuilder, packedLightIn, OverlayTexture.NO_OVERLAY, 1);
|
||||
}
|
||||
|
||||
this.currentBuffer.getBuffer(this.renderType);
|
||||
stack.popPose();
|
||||
}
|
||||
|
|
|
@ -260,14 +260,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Righthand": {
|
||||
"rotation": {
|
||||
"vector": [-2.03554, 4.28304, 3.39493]
|
||||
},
|
||||
"position": {
|
||||
"vector": [0.30134, -0.35141, 1.25128]
|
||||
}
|
||||
},
|
||||
"Lefthand": {
|
||||
"rotation": {
|
||||
"vector": [-1.41476, -16.33468, -1.66483]
|
||||
|
@ -567,44 +559,26 @@
|
|||
"0.625": {
|
||||
"vector": [0, 1.5, 1]
|
||||
},
|
||||
"0.9167": {
|
||||
"1.9167": {
|
||||
"vector": [0, 1.5, 1]
|
||||
},
|
||||
"1.0": {
|
||||
"vector": [-1.80149, -4.34261, -11.56806]
|
||||
},
|
||||
"1.9167": {
|
||||
"vector": [-1.80149, -4.34261, -11.56806]
|
||||
},
|
||||
"2.0417": {
|
||||
"vector": [8.98588, -28.60432, 4.50464]
|
||||
"vector": [-1.45517, 21.15308, 5.24726]
|
||||
},
|
||||
"2.1667": {
|
||||
"vector": [-22.62507, -32.8034, 18.28494]
|
||||
"vector": [11.44498, 46.40486, 9.26982]
|
||||
},
|
||||
"2.2083": {
|
||||
"vector": [-22.62507, -32.8034, 18.28494]
|
||||
},
|
||||
"2.2917": {
|
||||
"vector": [-15.46722, -16.63005, 1.48245],
|
||||
"2.25": {
|
||||
"vector": [7.25998, 14.54051, 4.65923],
|
||||
"easing": "easeInElastic"
|
||||
},
|
||||
"2.375": {
|
||||
"vector": [-15.46722, -16.63005, 1.48245],
|
||||
"easing": "easeInElastic"
|
||||
"2.3333": {
|
||||
"vector": [7.25998, 14.54051, 4.65923]
|
||||
},
|
||||
"2.4583": {
|
||||
"vector": [-15.14496, -21.26229, 5.31052],
|
||||
"easing": "easeOutSine"
|
||||
"vector": [-1.35683, 22.31471, 2.47949]
|
||||
},
|
||||
"2.5417": {
|
||||
"vector": [3.06668, -17.33275, 4.18047],
|
||||
"easing": "easeInOutSine"
|
||||
},
|
||||
"2.6667": {
|
||||
"vector": [-8.03996, -14.46909, -5.02907]
|
||||
},
|
||||
"2.75": {
|
||||
"2.7083": {
|
||||
"vector": [0, 0, 0]
|
||||
}
|
||||
},
|
||||
|
@ -624,14 +598,8 @@
|
|||
"0.625": {
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"0.9167": {
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"1.0": {
|
||||
"vector": [-0.3, -3.7, 5.6]
|
||||
},
|
||||
"1.9167": {
|
||||
"vector": [-0.3, -3.7, 5.6]
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"2.1667": {
|
||||
"vector": [-1, -2, 7]
|
||||
|
@ -655,10 +623,7 @@
|
|||
"vector": [0.29, -0.14, 6.76],
|
||||
"easing": "easeInOutSine"
|
||||
},
|
||||
"2.6667": {
|
||||
"vector": [0.14, -2.57, 2.38]
|
||||
},
|
||||
"2.75": {
|
||||
"2.7083": {
|
||||
"vector": [0, 0, 0]
|
||||
}
|
||||
}
|
||||
|
@ -962,14 +927,8 @@
|
|||
"0.625": {
|
||||
"vector": [0, 1.5, 1]
|
||||
},
|
||||
"0.9167": {
|
||||
"vector": [0, 1.5, 1]
|
||||
},
|
||||
"1.0": {
|
||||
"vector": [-1.80149, -4.34261, -11.56806]
|
||||
},
|
||||
"1.9167": {
|
||||
"vector": [-1.80149, -4.34261, -11.56806]
|
||||
"vector": [0, 1.5, 1]
|
||||
},
|
||||
"2.0417": {
|
||||
"vector": [-3.81928, -8.59364, -9.17363]
|
||||
|
@ -995,14 +954,8 @@
|
|||
"0.625": {
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"0.9167": {
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"1.0": {
|
||||
"vector": [-0.3, -3.7, 5.6]
|
||||
},
|
||||
"1.9167": {
|
||||
"vector": [-0.3, -3.7, 5.6]
|
||||
"vector": [0, -4, 5]
|
||||
},
|
||||
"2.0417": {
|
||||
"vector": [1.89205, -2.68839, 4.36626]
|
||||
|
|
|
@ -58,11 +58,13 @@
|
|||
"name": "Righthand",
|
||||
"parent": "0",
|
||||
"pivot": [-2.8, -6.4, 10.9],
|
||||
"rotation": [70.17995, -12.39135, -1.6575],
|
||||
"rotation": [109.82005, 12.39135, 178.3425],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [-4.8, -6.4, 8.9],
|
||||
"size": [4, 12, 4],
|
||||
"pivot": [-2.8, -0.4, 10.9],
|
||||
"rotation": [-180, 0, 180],
|
||||
"uv": {
|
||||
"north": {"uv": [0, 91.5], "uv_size": [4, 12]},
|
||||
"east": {"uv": [0, 91.5], "uv_size": [4, 12]},
|
||||
|
@ -11209,12 +11211,14 @@
|
|||
{
|
||||
"name": "Lefthand",
|
||||
"parent": "magazine",
|
||||
"pivot": [5.2, -4.7, 0],
|
||||
"rotation": [65.81754, 23.7695, -7.98205],
|
||||
"pivot": [4.8, -4.8, 0],
|
||||
"rotation": [117.38836, -19.19361, 174.18449],
|
||||
"cubes": [
|
||||
{
|
||||
"origin": [3.2, -8.7, -2],
|
||||
"size": [4, 16, 4],
|
||||
"origin": [2.8, -4.8, -2],
|
||||
"size": [4, 12, 4],
|
||||
"pivot": [4.8, -0.8, 0],
|
||||
"rotation": [-180, 0, 180],
|
||||
"uv": {
|
||||
"north": {"uv": [0, 92], "uv_size": [4, 12]},
|
||||
"east": {"uv": [0, 92], "uv_size": [4, 12]},
|
||||
|
|
Loading…
Add table
Reference in a new issue