优化marlin的第三人称

This commit is contained in:
Atsuishio 2025-06-08 12:42:40 +08:00 committed by Light_Quanta
parent 891fb487bb
commit 5f5f9e4167
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
5 changed files with 371 additions and 1814 deletions

View file

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

View file

@ -10,6 +10,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem; import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone; import software.bernie.geckolib.cache.object.GeoBone;
@ -35,9 +36,12 @@ public class MinigunItemRenderer extends CustomGunRenderer<MinigunItem> {
var player = mc.player; var player = mc.player;
if (player == null) return; if (player == null) return;
ItemStack itemStack = player.getMainHandItem(); ItemStack itemStack = player.getMainHandItem();
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) { if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
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.1, 1.45, 0.9); AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.1, 1.45, 0.9);
} }
}
if (renderingArms) { if (renderingArms) {
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true); AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true);

View file

@ -0,0 +1,307 @@
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.marlin",
"texture_width": 32,
"texture_height": 32,
"visible_bounds_width": 2,
"visible_bounds_height": 2.5,
"visible_bounds_offset": [0, 0.75, 0]
},
"bones": [
{
"name": "group",
"pivot": [0, 2, 1],
"cubes": [
{
"origin": [-0.5, 0.25, 1.5],
"size": [1, 2.75, 6.25],
"uv": {
"north": {"uv": [8, 2], "uv_size": [1, 3]},
"east": {"uv": [0, 0], "uv_size": [8, 3]},
"south": {"uv": [9, 2], "uv_size": [1, 3]},
"west": {"uv": [0, 3], "uv_size": [8, 3]},
"up": {"uv": [7, 8], "uv_size": [1, 8]},
"down": {"uv": [8, 16], "uv_size": [1, -8]}
}
},
{
"origin": [-0.5, 3, 1.75],
"size": [1, 0.25, 4.75],
"uv": {
"north": {"uv": [11, 5], "uv_size": [1, 1]},
"east": {"uv": [8, 5], "uv_size": [3, 1]},
"south": {"uv": [12, 5], "uv_size": [1, 1]},
"west": {"uv": [10, 2], "uv_size": [3, 1]},
"up": {"uv": [3, 10], "uv_size": [1, 3]},
"down": {"uv": [4, 13], "uv_size": [1, -3]}
}
},
{
"origin": [-0.25, -0.98076, 5.99672],
"size": [0.5, 0.1, 1.5],
"uv": {
"north": {"uv": [6, 12], "uv_size": [1, 1]},
"east": {"uv": [10, 3], "uv_size": [2, 1]},
"south": {"uv": [12, 8], "uv_size": [1, 1]},
"west": {"uv": [10, 4], "uv_size": [2, 1]},
"up": {"uv": [5, 10], "uv_size": [1, 2]},
"down": {"uv": [6, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.25, -2.30398, 6.09126],
"size": [0.5, 0.1, 0.6],
"pivot": [0, -0.80398, 7.94126],
"rotation": [-45, 0, 0],
"uv": {
"north": {"uv": [6, 12], "uv_size": [1, 1]},
"east": {"uv": [10, 3], "uv_size": [2, 1]},
"south": {"uv": [12, 8], "uv_size": [1, 1]},
"west": {"uv": [10, 4], "uv_size": [2, 1]},
"up": {"uv": [6, 12], "uv_size": [-1, -2]},
"down": {"uv": [7, 12], "uv_size": [-1, -2]}
}
},
{
"origin": [-0.25, -0.5565, 5.57246],
"size": [0.5, 0.85, 0.1],
"uv": {
"north": {"uv": [7, 10], "uv_size": [-1, 2]},
"east": {"uv": [10, 3], "uv_size": [2, 1]},
"south": {"uv": [6, 12], "uv_size": [-1, -2]},
"west": {"uv": [10, 4], "uv_size": [2, 1]},
"up": {"uv": [6, 12], "uv_size": [1, 1]},
"down": {"uv": [12, 9], "uv_size": [1, -1]}
}
},
{
"origin": [-0.25, -0.43579, 7.21241],
"size": [0.5, 0.1, 0.6],
"pivot": [0, -0.38579, 8.06241],
"rotation": [45, 0, 0],
"uv": {
"north": {"uv": [6, 12], "uv_size": [1, 1]},
"east": {"uv": [10, 3], "uv_size": [2, 1]},
"south": {"uv": [12, 8], "uv_size": [1, 1]},
"west": {"uv": [10, 4], "uv_size": [2, 1]},
"up": {"uv": [6, 12], "uv_size": [-1, -2]},
"down": {"uv": [7, 12], "uv_size": [-1, -2]}
}
},
{
"origin": [-0.25, -0.59792, 7.82098],
"size": [0.5, 0.6, 0.1],
"uv": {
"north": {"uv": [6, 12], "uv_size": [-1, -2]},
"east": {"uv": [10, 3], "uv_size": [2, 1]},
"south": {"uv": [7, 10], "uv_size": [-1, 2]},
"west": {"uv": [10, 4], "uv_size": [2, 1]},
"up": {"uv": [12, 8], "uv_size": [1, 1]},
"down": {"uv": [6, 13], "uv_size": [1, -1]}
}
},
{
"origin": [-0.25, -0.68076, 6.54672],
"size": [0.5, 1.05, 0.35],
"pivot": [0, -0.15576, 6.82172],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [12, 9], "uv_size": [1, 1]},
"east": {"uv": [10, 12], "uv_size": [1, 1]},
"south": {"uv": [12, 10], "uv_size": [1, 1]},
"west": {"uv": [11, 12], "uv_size": [1, 1]},
"up": {"uv": [12, 11], "uv_size": [1, 1]},
"down": {"uv": [12, 13], "uv_size": [1, -1]}
}
},
{
"origin": [-0.5, 0.28911, 11.81023],
"size": [1, 2, 8.75],
"pivot": [0, 1.78911, 8.06023],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [10, 8], "uv_size": [1, 2]},
"east": {"uv": [10, 8], "uv_size": [1, 2]},
"south": {"uv": [10, 8], "uv_size": [1, 2]},
"west": {"uv": [10, 8], "uv_size": [1, 2]},
"up": {"uv": [10, 8], "uv_size": [1, 2]},
"down": {"uv": [10, 10], "uv_size": [1, -2]}
}
},
{
"origin": [-0.5, 0.28911, 7.31023],
"size": [1, 2, 4.55],
"pivot": [0, 1.78911, 8.06023],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [10, 10], "uv_size": [1, 2]},
"east": {"uv": [8, 0], "uv_size": [5, 2]},
"south": {"uv": [11, 8], "uv_size": [1, 2]},
"west": {"uv": [2, 8], "uv_size": [5, 2]},
"up": {"uv": [9, 8], "uv_size": [1, 5]},
"down": {"uv": [2, 15], "uv_size": [1, -5]}
}
},
{
"origin": [-0.5, 2.44135, 16.04486],
"size": [1, 2, 3.75],
"pivot": [0, -0.05865, 7.29486],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [11, 10], "uv_size": [1, 2]},
"east": {"uv": [11, 10], "uv_size": [1, 2]},
"south": {"uv": [11, 10], "uv_size": [1, 2]},
"west": {"uv": [11, 10], "uv_size": [1, 2]},
"up": {"uv": [11, 10], "uv_size": [1, 2]},
"down": {"uv": [11, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.5, -1.19938, 11.51388],
"size": [1, 2, 8.75],
"uv": {
"north": {"uv": [12, 3], "uv_size": [1, 2]},
"east": {"uv": [12, 3], "uv_size": [1, 2]},
"south": {"uv": [12, 3], "uv_size": [1, 2]},
"west": {"uv": [12, 3], "uv_size": [1, 2]},
"up": {"uv": [12, 3], "uv_size": [1, 2]},
"down": {"uv": [12, 5], "uv_size": [1, -2]}
}
},
{
"origin": [-0.5, -4.44938, 18.76388],
"size": [1, 5.25, 2],
"uv": {
"north": {"uv": [11, 10], "uv_size": [1, 2]},
"east": {"uv": [11, 10], "uv_size": [1, 2]},
"south": {"uv": [11, 10], "uv_size": [1, 2]},
"west": {"uv": [11, 10], "uv_size": [1, 2]},
"up": {"uv": [11, 10], "uv_size": [1, 2]},
"down": {"uv": [11, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.25, -1.69475, 7.33481],
"size": [0.5, 0.15, 3.5],
"pivot": [0, -1.61975, 9.08481],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [10, 10], "uv_size": [1, 2]},
"east": {"uv": [8, 0], "uv_size": [5, 2]},
"south": {"uv": [11, 8], "uv_size": [1, 2]},
"west": {"uv": [2, 8], "uv_size": [5, 2]},
"up": {"uv": [10, 13], "uv_size": [-1, -5]},
"down": {"uv": [3, 15], "uv_size": [-1, -5]}
}
},
{
"origin": [-0.25, -1.69475, 10.51098],
"size": [0.5, 0.15, 0.5],
"pivot": [0, -1.61975, 12.26098],
"rotation": [22.5, 0, 0],
"uv": {
"north": {"uv": [10, 10], "uv_size": [1, 2]},
"east": {"uv": [8, 0], "uv_size": [5, 2]},
"south": {"uv": [11, 8], "uv_size": [1, 2]},
"west": {"uv": [2, 8], "uv_size": [5, 2]},
"up": {"uv": [10, 13], "uv_size": [-1, -5]},
"down": {"uv": [3, 15], "uv_size": [-1, -5]}
}
},
{
"origin": [-0.25, -2.15772, 11.08622],
"size": [0.5, 0.5, 0.15],
"pivot": [0, -1.90772, 11.16122],
"rotation": [-22.5, 0, 0],
"uv": {
"north": {"uv": [10, 13], "uv_size": [-1, -5]},
"east": {"uv": [8, 0], "uv_size": [5, 2]},
"south": {"uv": [3, 10], "uv_size": [-1, 5]},
"west": {"uv": [2, 8], "uv_size": [5, 2]},
"up": {"uv": [11, 8], "uv_size": [1, 2]},
"down": {"uv": [10, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.25, -1.75318, 11.08622],
"size": [0.5, 0.5, 0.15],
"pivot": [0, -1.50318, 11.16122],
"rotation": [22.5, 0, 0],
"uv": {
"north": {"uv": [10, 13], "uv_size": [-1, -5]},
"east": {"uv": [8, 0], "uv_size": [5, 2]},
"south": {"uv": [3, 10], "uv_size": [-1, 5]},
"west": {"uv": [2, 8], "uv_size": [5, 2]},
"up": {"uv": [11, 8], "uv_size": [1, 2]},
"down": {"uv": [10, 12], "uv_size": [1, -2]}
}
},
{
"origin": [-0.4, 2, -21.5],
"size": [0.8, 0.8, 23],
"uv": {
"north": {"uv": [13, 0], "uv_size": [1, 1]},
"east": {"uv": [0, 6], "uv_size": [17, 1]},
"south": {"uv": [13, 1], "uv_size": [1, 1]},
"west": {"uv": [0, 7], "uv_size": [17, 1]},
"up": {"uv": [0, 8], "uv_size": [1, 17]},
"down": {"uv": [1, 25], "uv_size": [1, -17]}
}
},
{
"origin": [-0.4, 1.8, -19.8],
"size": [0.8, 0.2, 0.3],
"uv": {
"north": {"uv": [13, 0], "uv_size": [1, 1]},
"east": {"uv": [0, 6], "uv_size": [17, 1]},
"south": {"uv": [13, 1], "uv_size": [1, 1]},
"west": {"uv": [0, 7], "uv_size": [17, 1]},
"up": {"uv": [1, 25], "uv_size": [-1, -17]},
"down": {"uv": [2, 25], "uv_size": [-1, -17]}
}
},
{
"origin": [-0.4, 1, -20.25],
"size": [0.8, 0.8, 15.75],
"uv": {
"north": {"uv": [13, 0], "uv_size": [1, 1]},
"east": {"uv": [0, 6], "uv_size": [17, 1]},
"south": {"uv": [13, 1], "uv_size": [1, 1]},
"west": {"uv": [0, 7], "uv_size": [17, 1]},
"up": {"uv": [1, 25], "uv_size": [-1, -17]},
"down": {"uv": [2, 25], "uv_size": [-1, -17]}
}
},
{
"origin": [-0.5, 0.5, -9.2],
"size": [1, 2.1, 10.7],
"uv": {
"north": {"uv": [5, 12], "uv_size": [1, 2]},
"east": {"uv": [5, 12], "uv_size": [1, 2]},
"south": {"uv": [5, 12], "uv_size": [1, 2]},
"west": {"uv": [5, 12], "uv_size": [1, 2]},
"up": {"uv": [5, 12], "uv_size": [1, 2]},
"down": {"uv": [5, 14], "uv_size": [1, -2]}
}
},
{
"origin": [-0.1, 2.8, -21.25],
"size": [0.2, 0.55, 0.75],
"uv": {
"north": {"uv": [13, 2], "uv_size": [1, 1]},
"east": {"uv": [3, 13], "uv_size": [1, 1]},
"south": {"uv": [13, 3], "uv_size": [1, 1]},
"west": {"uv": [4, 13], "uv_size": [1, 1]},
"up": {"uv": [13, 4], "uv_size": [1, 1]},
"down": {"uv": [13, 6], "uv_size": [1, -1]}
}
}
]
}
]
}
]
}

View file

@ -13,22 +13,60 @@
-0.5 -0.5
] ]
}, },
"gui": { "thirdperson_righthand": {
"rotation": [
165.69,
-39.63,
178.66
],
"translation": [ "translation": [
0, -0.75,
-0.25, -0.5,
0 -4.25
], ],
"scale": [ "scale": [
0.55, 0.55,
0.55, 0.55,
0.55 0.55
] ]
},
"thirdperson_lefthand": {
"scale": [
0,
0,
0
]
},
"ground": {
"translation": [
0,
2.25,
0
],
"scale": [
0.6,
0.6,
0.6
]
},
"head": {
"translation": [
0,
6.75,
-1
]
},
"fixed": {
"rotation": [
0,
-90,
0
],
"translation": [
0.25,
-1,
0
],
"scale": [
1.2,
1.2,
1.2
]
} }
} }
} }

File diff suppressed because it is too large Load diff