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