优化m98b的第三人称

This commit is contained in:
Atsuishio 2025-06-08 12:32:56 +08:00 committed by Light_Quanta
parent 9a3d343a32
commit 891fb487bb
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
5 changed files with 417 additions and 2195 deletions

View file

@ -41,6 +41,16 @@ public class M98bItemModel extends CustomGunModel<M98bItem> {
return Mod.loc("textures/item/m_98b.png");
}
@Override
public ResourceLocation getLODModelResource(M98bItem animatable) {
return Mod.loc("geo/lod/m_98b.geo.json");
}
@Override
public ResourceLocation getLODTextureResource(M98bItem animatable) {
return Mod.loc("textures/item/lod/m_98b.png");
}
@Override
public void setCustomAnimations(M98bItem animatable, long instanceId, AnimationState<M98bItem> animationState) {
Player player = Minecraft.getInstance().player;

View file

@ -42,7 +42,10 @@ public class M98bItemRenderer extends CustomGunRenderer<M98bItem> {
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
if (this.renderPerspective == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND || this.renderPerspective == ItemDisplayContext.THIRD_PERSON_RIGHT_HAND) {
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.15625, 0.6);
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
if (this.renderPerspective == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) {
if (GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2 && !NBTTool.getTag(itemStack).getBoolean("ScopeAlt") && (bone.getName().endsWith("_hide"))) {
@ -52,7 +55,8 @@ public class M98bItemRenderer extends CustomGunRenderer<M98bItem> {
if (GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 3 && (bone.getName().endsWith("_hide3"))) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
}
}
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
switch (scopeType) {
case 1 ->
@ -67,9 +71,10 @@ public class M98bItemRenderer extends CustomGunRenderer<M98bItem> {
case 3 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.29, 27, 5f, 255, 0, 0, 255, "sniper", true);
}
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.15625, 0.6);
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
}
} else {
ItemModelHelper.hideAllAttachments(bone, name);
}
} else {
ItemModelHelper.hideAllAttachments(bone, name);
}

View file

@ -0,0 +1,345 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.m_98b",
"texture_width": 32,
"texture_height": 32,
"visible_bounds_width": 5,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
"bones": [
{
"name": "group3",
"pivot": [0, 2.75, -3.75],
"cubes": [
{
"origin": [-0.5, 1.5, -13.75],
"size": [1, 1.5, 20.75],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [2, 6], "uv_size": [1, 16]},
"down": {"uv": [3, 22], "uv_size": [1, -16]}
}
},
{
"origin": [-0.5, -1.25, 12.6],
"size": [1, 4.25, 1.25],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, 2.7, 7],
"size": [1, 0.3, 5.6],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, 1.9, 7],
"size": [1, 0.3, 5.6],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, 1.2, 6.25],
"size": [1, 0.3, 2.6],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, -1.67886, 9.86673],
"size": [1, 3.6, 0.3],
"pivot": [0, 0.12114, 10.01673],
"rotation": [45, 0, 0],
"uv": {
"north": {"uv": [4, 6], "uv_size": [-1, 16]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [3, 22], "uv_size": [-1, -16]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [8, 9], "uv_size": [1, 2]},
"down": {"uv": [9, 11], "uv_size": [1, -2]}
}
},
{
"origin": [-0.5, -1.25772, 11.18345],
"size": [1, 0.3, 1.45],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, -0.00772, 9.98345],
"size": [1, 0.3, 2.65],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, 0.29228, 9.78345],
"size": [1, 2.5, 0.65],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.3, 3.09228, 6.78345],
"size": [0.6, 0.25, 4.9],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [0.12374, 2.91676, 6.78345],
"size": [0.6, 0.25, 4.9],
"pivot": [0.42374, 3.04176, 9.23345],
"rotation": [0, 0, 45],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [0.47426, 2.31802, 6.78345],
"size": [0.25, 0.6, 4.9],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [4, 6], "uv_size": [-1, 16]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [3, 22], "uv_size": [-1, -16]},
"up": {"uv": [0, 0], "uv_size": [16, 2]},
"down": {"uv": [0, 4], "uv_size": [16, -2]}
}
},
{
"origin": [-0.72426, 2.31802, 6.78345],
"size": [0.25, 0.6, 4.9],
"uv": {
"north": {"uv": [8, 11], "uv_size": [1, -2]},
"east": {"uv": [3, 6], "uv_size": [-1, 16]},
"south": {"uv": [9, 11], "uv_size": [1, -2]},
"west": {"uv": [4, 22], "uv_size": [-1, -16]},
"up": {"uv": [0, 2], "uv_size": [16, -2]},
"down": {"uv": [0, 2], "uv_size": [16, 2]}
}
},
{
"origin": [-0.72374, 2.91676, 6.78345],
"size": [0.6, 0.25, 4.9],
"pivot": [-0.42374, 3.04176, 9.23345],
"rotation": [0, 0, -45],
"uv": {
"north": {"uv": [9, 9], "uv_size": [-1, 2]},
"east": {"uv": [16, 2], "uv_size": [-16, 2]},
"south": {"uv": [10, 9], "uv_size": [-1, 2]},
"west": {"uv": [16, 0], "uv_size": [-16, 2]},
"up": {"uv": [2, 22], "uv_size": [1, -16]},
"down": {"uv": [3, 22], "uv_size": [1, -16]}
}
},
{
"origin": [-0.5, 0.65, -4.05],
"size": [1, 0.85, 6.4],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.5, -2.48039, -0.31645],
"size": [1, 3.3, 1.3],
"pivot": [0, 3.81961, 0.73355],
"rotation": [22.5, 0, 0],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.3, 3, -13.75],
"size": [0.6, 0.2, 16.75],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.8, 3.2, -3.25],
"size": [1.6, 1.3, 0.65],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.8, 3.2, -0.5],
"size": [1.6, 1.3, 0.65],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.9, 3.5, -6.5],
"size": [1.8, 1.75, 9.65],
"uv": {
"north": {"uv": [8, 9], "uv_size": [1, 2]},
"east": {"uv": [0, 0], "uv_size": [16, 2]},
"south": {"uv": [9, 9], "uv_size": [1, 2]},
"west": {"uv": [0, 2], "uv_size": [16, 2]},
"up": {"uv": [3, 22], "uv_size": [-1, -16]},
"down": {"uv": [4, 22], "uv_size": [-1, -16]}
}
},
{
"origin": [-0.3, -1.15, -3.8],
"size": [0.6, 3.4, 3],
"uv": {
"north": {"uv": [4, 9], "uv_size": [1, 3]},
"east": {"uv": [4, 6], "uv_size": [3, 3]},
"south": {"uv": [5, 9], "uv_size": [1, 3]},
"west": {"uv": [7, 6], "uv_size": [3, 3]},
"up": {"uv": [6, 9], "uv_size": [1, 3]},
"down": {"uv": [7, 12], "uv_size": [1, -3]}
}
},
{
"origin": [-0.25, -0.13076, -0.25328],
"size": [0.5, 0.1, 1.5],
"uv": {
"north": {"uv": [8, 11], "uv_size": [1, 1]},
"east": {"uv": [10, 6], "uv_size": [2, 1]},
"south": {"uv": [11, 8], "uv_size": [1, 1]},
"west": {"uv": [10, 7], "uv_size": [2, 1]},
"up": {"uv": [10, 8], "uv_size": [1, 2]},
"down": {"uv": [10, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.25, -0.13076, -0.60328],
"size": [0.5, 0.85, 0.35],
"uv": {
"north": {"uv": [9, 11], "uv_size": [1, 1]},
"east": {"uv": [11, 9], "uv_size": [1, 1]},
"south": {"uv": [11, 10], "uv_size": [1, 1]},
"west": {"uv": [11, 11], "uv_size": [1, 1]},
"up": {"uv": [4, 12], "uv_size": [1, 1]},
"down": {"uv": [5, 13], "uv_size": [1, -1]}
}
},
{
"origin": [-0.25, -0.43076, 0.14672],
"size": [0.5, 1.3, 0.15],
"pivot": [0, 0.09424, 1.32172],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [6, 12], "uv_size": [1, 1]},
"east": {"uv": [12, 6], "uv_size": [1, 1]},
"south": {"uv": [7, 12], "uv_size": [1, 1]},
"west": {"uv": [12, 7], "uv_size": [1, 1]},
"up": {"uv": [8, 12], "uv_size": [1, 1]},
"down": {"uv": [12, 9], "uv_size": [1, -1]}
}
},
{
"origin": [-0.327, 2.048, -33.875],
"size": [0.654, 0.654, 20.12],
"uv": {
"north": {"uv": [9, 12], "uv_size": [1, 1]},
"east": {"uv": [0, 4], "uv_size": [18, 1]},
"south": {"uv": [12, 9], "uv_size": [1, 1]},
"west": {"uv": [0, 5], "uv_size": [18, 1]},
"up": {"uv": [0, 6], "uv_size": [1, 18]},
"down": {"uv": [1, 24], "uv_size": [1, -18]}
}
},
{
"origin": [-0.436, 1.939, -33.875],
"size": [0.872, 0.872, 2.071],
"uv": {
"north": {"uv": [9, 12], "uv_size": [1, 1]},
"east": {"uv": [0, 4], "uv_size": [18, 1]},
"south": {"uv": [12, 9], "uv_size": [1, 1]},
"west": {"uv": [0, 5], "uv_size": [18, 1]},
"up": {"uv": [1, 24], "uv_size": [-1, -18]},
"down": {"uv": [2, 24], "uv_size": [-1, -18]}
}
}
]
}
]
}
]
}

View file

@ -7,30 +7,6 @@
],
"gui_light": "front",
"display": {
"thirdperson_righthand": {
"translation": [
-1.25,
0.25,
-2
],
"scale": [
0.6,
0.6,
0.6
]
},
"thirdperson_lefthand": {
"translation": [
0,
0.25,
-4.25
],
"scale": [
0.55,
0.55,
0.55
]
},
"firstperson_righthand": {
"translation": [
0.25,
@ -55,57 +31,59 @@
0
]
},
"thirdperson_righthand": {
"translation": [
-0.75,
-1.25,
0.5
],
"scale": [
0.7,
0.7,
0.7
]
},
"thirdperson_lefthand": {
"scale": [
0,
0,
0
]
},
"ground": {
"translation": [
0,
3,
0
1.75,
6.25
],
"scale": [
0.55,
0.55,
0.55
]
},
"gui": {
"rotation": [
165.69,
-39.63,
178.66
],
"translation": [
-3.4,
-1,
0
],
"scale": [
0.5,
0.5,
0.5
0.8,
0.8,
0.8
]
},
"head": {
"rotation": [
"translation": [
0,
-90,
0
5.5,
2.25
]
},
"fixed": {
"rotation": [
0,
90,
0
-90,
90
],
"translation": [
-10.25,
-1.75,
-2
-7,
-2.5,
0
],
"scale": [
1.1,
1.1,
1.1
1.6,
1.6,
1.6
]
}
}

File diff suppressed because it is too large Load diff