parent
e76808d1cb
commit
b168e9eac0
2 changed files with 13 additions and 41 deletions
|
@ -1,12 +1,10 @@
|
||||||
package com.atsuishio.superbwarfare.client.renderer;
|
package com.atsuishio.superbwarfare.client.renderer;
|
||||||
|
|
||||||
import com.atsuishio.superbwarfare.client.ItemModelHelper;
|
|
||||||
import com.atsuishio.superbwarfare.client.model.item.CustomGunModel;
|
import com.atsuishio.superbwarfare.client.model.item.CustomGunModel;
|
||||||
import com.atsuishio.superbwarfare.config.client.DisplayConfig;
|
import com.atsuishio.superbwarfare.config.client.DisplayConfig;
|
||||||
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
import com.atsuishio.superbwarfare.item.gun.GunItem;
|
||||||
import com.mojang.blaze3d.vertex.PoseStack;
|
import com.mojang.blaze3d.vertex.PoseStack;
|
||||||
import com.mojang.blaze3d.vertex.VertexConsumer;
|
import com.mojang.blaze3d.vertex.VertexConsumer;
|
||||||
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.client.renderer.texture.OverlayTexture;
|
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||||
|
@ -16,7 +14,6 @@ import net.minecraft.world.item.ItemStack;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.joml.Matrix4f;
|
import org.joml.Matrix4f;
|
||||||
import software.bernie.geckolib.animatable.GeoAnimatable;
|
import software.bernie.geckolib.animatable.GeoAnimatable;
|
||||||
import software.bernie.geckolib.animatable.GeoItem;
|
|
||||||
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
import software.bernie.geckolib.cache.object.BakedGeoModel;
|
||||||
import software.bernie.geckolib.cache.object.GeoBone;
|
import software.bernie.geckolib.cache.object.GeoBone;
|
||||||
import software.bernie.geckolib.model.GeoModel;
|
import software.bernie.geckolib.model.GeoModel;
|
||||||
|
@ -24,8 +21,6 @@ import software.bernie.geckolib.renderer.GeoItemRenderer;
|
||||||
import software.bernie.geckolib.util.Color;
|
import software.bernie.geckolib.util.Color;
|
||||||
import software.bernie.geckolib.util.RenderUtil;
|
import software.bernie.geckolib.util.RenderUtil;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class CustomGunRenderer<T extends GunItem & GeoAnimatable> extends GeoItemRenderer<T> {
|
public class CustomGunRenderer<T extends GunItem & GeoAnimatable> extends GeoItemRenderer<T> {
|
||||||
|
|
||||||
public static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
public static final float SCALE_RECIPROCAL = 1.0f / 16.0f;
|
||||||
|
@ -40,36 +35,10 @@ public class CustomGunRenderer<T extends GunItem & GeoAnimatable> extends GeoIte
|
||||||
super(model);
|
super(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 在其他视角下会隐藏的骨骼名称,例如配件的骨骼名
|
|
||||||
*/
|
|
||||||
public Set<String> getHiddenBonesInOtherPerspective() {
|
|
||||||
return Set.of();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderRecursively(PoseStack poseStack, T animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, int color) {
|
public void renderByItem(ItemStack stack, ItemDisplayContext transformType, PoseStack matrixStack, MultiBufferSource bufferIn, int combinedLightIn, int p_239207_6_) {
|
||||||
Minecraft mc = Minecraft.getInstance();
|
this.transformType = transformType;
|
||||||
String name = bone.getName();
|
super.renderByItem(stack, transformType, matrixStack, bufferIn, combinedLightIn, p_239207_6_);
|
||||||
|
|
||||||
var player = mc.player;
|
|
||||||
if (player == null) return;
|
|
||||||
ItemStack itemStack = player.getMainHandItem();
|
|
||||||
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
|
|
||||||
if (this.renderPerspective == ItemDisplayContext.FIXED) {
|
|
||||||
ItemModelHelper.hideAllAttachments(bone, name);
|
|
||||||
if (this.getHiddenBonesInOtherPerspective().contains(name)) {
|
|
||||||
bone.setHidden(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
ItemModelHelper.hideAllAttachments(bone, name);
|
|
||||||
if (this.getHiddenBonesInOtherPerspective().contains(name)) {
|
|
||||||
bone.setHidden(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, color);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -19,8 +19,6 @@ 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;
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class Mp5ItemRenderer extends CustomGunRenderer<Mp5Item> {
|
public class Mp5ItemRenderer extends CustomGunRenderer<Mp5Item> {
|
||||||
|
|
||||||
public Mp5ItemRenderer() {
|
public Mp5ItemRenderer() {
|
||||||
|
@ -56,6 +54,11 @@ public class Mp5ItemRenderer extends CustomGunRenderer<Mp5Item> {
|
||||||
}
|
}
|
||||||
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.05, 1, 0.35);
|
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0.05, 1, 0.35);
|
||||||
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||||
|
} else if (this.renderPerspective == ItemDisplayContext.FIXED) {
|
||||||
|
ItemModelHelper.hideAllAttachments(bone, name);
|
||||||
|
if (name.equals("yugu")) {
|
||||||
|
bone.setHidden(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
|
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
|
||||||
|
@ -65,6 +68,11 @@ public class Mp5ItemRenderer extends CustomGunRenderer<Mp5Item> {
|
||||||
case 2 ->
|
case 2 ->
|
||||||
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.52, 14, 1.4f, 255, 0, 0, 255, "acog", true);
|
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.52, 14, 1.4f, 255, 0, 0, 255, "acog", true);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ItemModelHelper.hideAllAttachments(bone, name);
|
||||||
|
if (name.equals("yugu")) {
|
||||||
|
bone.setHidden(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (renderingArms) {
|
if (renderingArms) {
|
||||||
|
@ -73,9 +81,4 @@ public class Mp5ItemRenderer extends CustomGunRenderer<Mp5Item> {
|
||||||
|
|
||||||
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Set<String> getHiddenBonesInOtherPerspective() {
|
|
||||||
return Set.of("yugu");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue