优化波塞克第三人称

This commit is contained in:
Atsuishio 2025-06-06 14:29:29 +08:00 committed by Light_Quanta
parent b970094f29
commit 2383f2a783
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
7 changed files with 2249 additions and 2140 deletions

View file

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

View file

@ -69,6 +69,7 @@ public class DroneRenderer extends GeoEntityRenderer<DroneEntity> {
if (entityIn.getEntityData().get(KAMIKAZE_MODE) == 3) {
Entity entity = new RpgRocketEntity(ModEntities.RPG_ROCKET.get(), entityIn.level());
entityRenderDispatcher.render(entity, 0, -0.03, -1.8, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn);
}

View file

@ -1,6 +1,7 @@
package com.atsuishio.superbwarfare.client.renderer.gun;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.ItemModelHelper;
import com.atsuishio.superbwarfare.client.model.item.BocekItemModel;
import com.atsuishio.superbwarfare.client.renderer.CustomGunRenderer;
import com.atsuishio.superbwarfare.client.renderer.ModRenderTypes;
@ -15,6 +16,7 @@ import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.FastColor;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import org.joml.Matrix4f;
import software.bernie.geckolib.animatable.GeoItem;
@ -71,17 +73,39 @@ public class BocekItemRenderer extends CustomGunRenderer<BocekItem> {
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
if (name.equals("arrow")) {
var data = GunData.from(itemStack);
bone.setHidden(data.ammo.get() == 0);
}
if (name.equals("arrow2")) {
var data = GunData.from(itemStack);
bone.setHidden(data.ammo.get() != 0);
}
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0.002, 0.1790625, 0.13, 0.08f, 255, 0, 0, 255, "dot", false);
boolean needHide = name.equals("safang");
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) {
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
if (this.renderPerspective == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) {
if (name.equals("arrow")) {
var data = GunData.from(itemStack);
bone.setHidden(data.ammo.get() == 0);
}
if (name.equals("arrow2")) {
var data = GunData.from(itemStack);
bone.setHidden(data.ammo.get() != 0);
}
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0.002, 0.1790625, 0.13, 0.08f, 255, 0, 0, 255, "dot", false);
} else if (needHide) {
bone.setHidden(true);
}
} else {
ItemModelHelper.hideAllAttachments(bone, name);
if (needHide) {
bone.setHidden(true);
}
}
} else {
ItemModelHelper.hideAllAttachments(bone, name);
if (needHide) {
bone.setHidden(true);
}
}
if (renderingArms) {

View file

@ -8,6 +8,7 @@ import net.minecraft.network.FriendlyByteBuf;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
@ -16,7 +17,10 @@ import java.util.List;
public class BufferSerializer {
public static List<Field> sortedFields(Class<?> clazz) {
return Arrays.stream(clazz.getDeclaredFields())
.filter(f -> !f.isAnnotationPresent(ServerOnly.class) && !f.getType().isAssignableFrom(Annotation.class))
.filter(f -> !f.isAnnotationPresent(ServerOnly.class)
&& !Modifier.isTransient(f.getModifiers())
&& !f.getType().isAssignableFrom(Annotation.class)
)
.sorted(Comparator.comparing(Field::getName))
.toList();
}

File diff suppressed because it is too large Load diff

View file

@ -25,21 +25,86 @@
0
]
},
"thirdperson_righthand": {
"translation": [
-1.5,
0.5,
2
],
"scale": [
0.5,
0.5,
0.5
]
},
"thirdperson_lefthand": {
"translation": [
-0.75,
6,
2.75
],
"scale": [
0,
0,
0
]
},
"ground": {
"translation": [
0,
11,
-2.75
],
"scale": [
0.5,
0.5,
0.5
]
},
"gui": {
"rotation": [
165.69,
-39.63,
178.66
90,
-45,
-90
],
"translation": [
0.25,
-3.5,
3.25,
-1.75,
0
],
"scale": [
0.45,
0.45,
0.45
0.8,
0.8,
0.8
]
},
"head": {
"rotation": [
90,
0,
90
],
"translation": [
-1,
13.75,
0
],
"scale": [
0.5,
0.5,
0.5
]
},
"fixed": {
"rotation": [
0,
-90,
0
],
"translation": [
4.75,
0.75,
-2.25
]
}
}

File diff suppressed because it is too large Load diff