修改狙的渲染

This commit is contained in:
17146 2025-06-01 03:26:41 +08:00 committed by Light_Quanta
parent ce8d4128ca
commit 1eaee64c5f
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
18 changed files with 191 additions and 142 deletions

View file

@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.HuntingRifleItem;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -13,9 +12,8 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
public class HuntingRifleItemModel extends GeoModel<HuntingRifleItem> {
public class HuntingRifleItemModel extends CustomGunModel<HuntingRifleItem> {
@Override
public ResourceLocation getAnimationResource(HuntingRifleItem animatable) {
@ -33,14 +31,14 @@ public class HuntingRifleItemModel extends GeoModel<HuntingRifleItem> {
}
@Override
public void setCustomAnimations(HuntingRifleItem animatable, long instanceId, AnimationState animationState) {
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone shen = getAnimationProcessor().getBone("lieqiang");
public void setCustomAnimations(HuntingRifleItem animatable, long instanceId, AnimationState<HuntingRifleItem> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone shen = getAnimationProcessor().getBone("lieqiang");
float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8);
double zt = ClientEventHandler.zoomTime;

View file

@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.K98Item;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -13,9 +12,8 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
public class K98ItemModel extends GeoModel<K98Item> {
public class K98ItemModel extends CustomGunModel<K98Item> {
@Override
public ResourceLocation getAnimationResource(K98Item animatable) {
@ -33,18 +31,17 @@ public class K98ItemModel extends GeoModel<K98Item> {
}
@Override
public void setCustomAnimations(K98Item animatable, long instanceId, AnimationState animationState) {
public void setCustomAnimations(K98Item animatable, long instanceId, AnimationState<K98Item> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone shen = getAnimationProcessor().getBone("shen");
GeoBone clip = getAnimationProcessor().getBone("mag");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
var data = GunData.from(stack);
if (data.reload.prepareTimer.get() > 11 && data.ammo.get() == 1) {
if (GunData.from(stack).reload.prepareTimer.get() > 11 && GunData.from(stack).ammo.get() == 1) {
clip.setScaleX(0);
clip.setScaleY(0);
clip.setScaleZ(0);
@ -93,6 +90,7 @@ public class K98ItemModel extends GeoModel<K98Item> {
float numR = (float) (1 - 0.52 * zt);
float numP = (float) (1 - 0.58 * zt);
var data = GunData.from(stack);
if (data.reload.time() > 0 || data.reloading()) {
main.setRotX(numR * main.getRotX());
main.setRotY(numR * main.getRotY());

View file

@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.M98bItem;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -13,11 +12,10 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
import static com.atsuishio.superbwarfare.event.ClientEventHandler.isProne;
public class M98bItemModel extends GeoModel<M98bItem> {
public class M98bItemModel extends CustomGunModel<M98bItem> {
public static float fireRotY = 0f;
public static float fireRotZ = 0f;
@ -44,7 +42,12 @@ public class M98bItemModel extends GeoModel<M98bItem> {
}
@Override
public void setCustomAnimations(M98bItem animatable, long instanceId, AnimationState animationState) {
public void setCustomAnimations(M98bItem animatable, long instanceId, AnimationState<M98bItem> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone camera = getAnimationProcessor().getBone("camera");
GeoBone main = getAnimationProcessor().getBone("0");
@ -55,11 +58,6 @@ public class M98bItemModel extends GeoModel<M98bItem> {
GeoBone button6 = getAnimationProcessor().getBone("button6");
GeoBone button7 = getAnimationProcessor().getBone("button7");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
var data = GunData.from(stack);
int type = data.attachment.get(AttachmentType.SCOPE);

View file

@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.MosinNagantItem;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -13,9 +12,8 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
public class MosinNagantItemModel extends GeoModel<MosinNagantItem> {
public class MosinNagantItemModel extends CustomGunModel<MosinNagantItem> {
@Override
public ResourceLocation getAnimationResource(MosinNagantItem animatable) {
@ -33,7 +31,12 @@ public class MosinNagantItemModel extends GeoModel<MosinNagantItem> {
}
@Override
public void setCustomAnimations(MosinNagantItem animatable, long instanceId, AnimationState animationState) {
public void setCustomAnimations(MosinNagantItem animatable, long instanceId, AnimationState<MosinNagantItem> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone shen = getAnimationProcessor().getBone("shen");
GeoBone pu = getAnimationProcessor().getBone("pu");
@ -41,12 +44,6 @@ public class MosinNagantItemModel extends GeoModel<MosinNagantItem> {
GeoBone bone16 = getAnimationProcessor().getBone("bone16");
GeoBone qiangshen = getAnimationProcessor().getBone("qiangshen");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8);
double zt = ClientEventHandler.zoomTime;
double zp = ClientEventHandler.zoomPos;

View file

@ -4,7 +4,6 @@ import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.SentinelItem;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -13,9 +12,9 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
public class SentinelItemModel extends GeoModel<SentinelItem> {
// TODO 这个模型后面还有电线记得渲染时候清除掉
public class SentinelItemModel extends CustomGunModel<SentinelItem> {
@Override
public ResourceLocation getAnimationResource(SentinelItem animatable) {
@ -33,18 +32,18 @@ public class SentinelItemModel extends GeoModel<SentinelItem> {
}
@Override
public void setCustomAnimations(SentinelItem animatable, long instanceId, AnimationState animationState) {
public void setCustomAnimations(SentinelItem animatable, long instanceId, AnimationState<SentinelItem> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone shen = getAnimationProcessor().getBone("shen");
GeoBone scope = getAnimationProcessor().getBone("scope2");
GeoBone ammo = getAnimationProcessor().getBone("ammobar");
GeoBone cb = getAnimationProcessor().getBone("chamber2");
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8);
double zt = ClientEventHandler.zoomTime;
double zp = ClientEventHandler.zoomPos;

View file

@ -3,10 +3,9 @@ package com.atsuishio.superbwarfare.client.model.item;
import com.atsuishio.superbwarfare.Mod;
import com.atsuishio.superbwarfare.client.AnimationHelper;
import com.atsuishio.superbwarfare.client.overlay.CrossHairOverlay;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.data.gun.GunData;
import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.sniper.SvdItem;
import net.minecraft.client.Minecraft;
import net.minecraft.resources.ResourceLocation;
@ -15,11 +14,10 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animation.AnimationState;
import software.bernie.geckolib.cache.object.GeoBone;
import software.bernie.geckolib.model.GeoModel;
import static com.atsuishio.superbwarfare.event.ClientEventHandler.isProne;
public class SvdItemModel extends GeoModel<SvdItem> {
public class SvdItemModel extends CustomGunModel<SvdItem> {
public static float fireRotY = 0f;
public static float fireRotZ = 0f;
@ -41,14 +39,14 @@ public class SvdItemModel extends GeoModel<SvdItem> {
}
@Override
public void setCustomAnimations(SvdItem animatable, long instanceId, AnimationState animationState) {
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone bolt = getAnimationProcessor().getBone("bolt");
public void setCustomAnimations(SvdItem animatable, long instanceId, AnimationState<SvdItem> animationState) {
Player player = Minecraft.getInstance().player;
if (player == null) return;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return;
if (shouldCancelRender(stack, animationState)) return;
GeoBone gun = getAnimationProcessor().getBone("bone");
GeoBone bolt = getAnimationProcessor().getBone("bolt");
float times = 0.6f * (float) Math.min(Minecraft.getInstance().getTimer().getRealtimeDeltaTicks(), 0.8);
double zt = ClientEventHandler.zoomTime;

View file

@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class HuntingRifleItemRenderer extends CustomGunRenderer<HuntingRifleItem> {
@ -34,12 +35,12 @@ public class HuntingRifleItemRenderer extends CustomGunRenderer<HuntingRifleItem
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.234375, 0.6);
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.234375, 0.6);
}
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class K98ItemRenderer extends CustomGunRenderer<K98Item> {
@ -34,12 +35,12 @@ public class K98ItemRenderer extends CustomGunRenderer<K98Item> {
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.9772, 0.4);
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.9772, 0.4);
}
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -9,12 +9,15 @@ import com.atsuishio.superbwarfare.data.gun.value.AttachmentType;
import com.atsuishio.superbwarfare.event.ClientEventHandler;
import com.atsuishio.superbwarfare.item.gun.GunItem;
import com.atsuishio.superbwarfare.item.gun.sniper.M98bItem;
import com.atsuishio.superbwarfare.tools.NBTTool;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class M98bItemRenderer extends CustomGunRenderer<M98bItem> {
@ -38,42 +41,41 @@ public class M98bItemRenderer extends CustomGunRenderer<M98bItem> {
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
var data = GunData.from(itemStack);
int scopeType = data.attachment.get(AttachmentType.SCOPE);
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"))) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
}
if (data.attachment.get(AttachmentType.SCOPE) == 2 && !data.tag.getBoolean("ScopeAlt") && (bone.getName().endsWith("_hide"))) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
}
if (data.attachment.get(AttachmentType.SCOPE) == 3 && (bone.getName().endsWith("_hide3"))) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
}
switch (scopeType) {
case 1 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.275, 30, 1.2f, 255, 0, 0, 255, "dot", false);
case 2 -> {
if (data.tag.getBoolean("ScopeAlt")) {
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.34, 30, 0.18f, 255, 0, 0, 255, "delta", false);
} else {
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.294, 13, 0.75f, 255, 0, 0, 255, "hamr", true);
if (GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 3 && (bone.getName().endsWith("_hide3"))) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7 && ClientEventHandler.zoom);
}
}
case 3 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.29, 27, 5f, 255, 0, 0, 255, "sniper", true);
switch (scopeType) {
case 1 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.275, 30, 1.2f, 255, 0, 0, 255, "dot", false);
case 2 -> {
if (NBTTool.getTag(itemStack).getBoolean("ScopeAlt")) {
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.34, 30, 0.18f, 255, 0, 0, 255, "delta", false);
} else {
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.294, 13, 0.75f, 255, 0, 0, 255, "hamr", true);
}
}
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);
}
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.15625, 0.6);
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
// if (name.equals("ironSight")) {
// bone.setHidden(GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) != 0);
// }
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, false);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -11,7 +11,9 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class MosinNagantItemRenderer extends CustomGunRenderer<MosinNagantItem> {
@ -35,18 +37,23 @@ public class MosinNagantItemRenderer extends CustomGunRenderer<MosinNagantItem>
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
if (name.equals("jia") || name.equals("b1") || name.equals("b2")) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7);
boolean flag = name.equals("jia") || name.equals("b1") || name.equals("b2");
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
if (this.renderPerspective == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) {
if (flag) {
bone.setHidden(ClientEventHandler.zoomPos > 0.7);
}
}
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.259025, -0.05, 0.08f, 0, 0, 0, 255, "pu", true);
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.38345, 0.6);
} else if (flag) {
bone.setHidden(false);
}
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.259025, -0.05, 0.08f, 0, 0, 0, 255, "pu", true);
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 2.38345, 0.6);
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -12,6 +12,7 @@ import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.capabilities.Capabilities;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class SentinelItemRenderer extends CustomGunRenderer<SentinelItem> {
@ -35,22 +36,23 @@ public class SentinelItemRenderer extends CustomGunRenderer<SentinelItem> {
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
var cap = itemStack.getCapability(Capabilities.EnergyStorage.ITEM);
var flag = cap != null && cap.getEnergyStored() > 0;
var cap = itemStack.getCapability(Capabilities.EnergyStorage.ITEM);
var flag = cap != null && cap.getEnergyStored() > 0;
if (name.equals("charge_illuminated")) {
bone.setHidden(!flag);
bone.setRotZ((System.currentTimeMillis() % 36000000) / 200f);
}
if (name.equals("charge_illuminated")) {
bone.setHidden(!flag);
bone.setRotZ((System.currentTimeMillis() % 36000000) / 200f);
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.265, -0.05, 0.075f, 255, 0, 0, 255, "apex_3x", false);
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.53125, 0.6);
} else if (name.equals("charge_illuminated")) {
bone.setHidden(true);
}
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.265, -0.05, 0.075f, 255, 0, 0, 255, "apex_3x", false);
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.53125, 0.6);
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, true);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, true);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -14,7 +14,9 @@ import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import software.bernie.geckolib.animatable.GeoItem;
import software.bernie.geckolib.cache.object.GeoBone;
public class SvdItemRenderer extends CustomGunRenderer<SvdItem> {
@ -38,36 +40,41 @@ public class SvdItemRenderer extends CustomGunRenderer<SvdItem> {
var player = mc.player;
if (player == null) return;
ItemStack itemStack = player.getMainHandItem();
if (!(itemStack.getItem() instanceof GunItem)) return;
if (itemStack.getItem() instanceof GunItem && GeoItem.getId(itemStack) == this.getInstanceId(animatable)) {
if (this.renderPerspective == ItemDisplayContext.FIRST_PERSON_RIGHT_HAND) {
if (name.equals("mount")) {
bone.setHidden(GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 0 || GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2);
}
if (name.equals("mount")) {
bone.setHidden(GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 0 || GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2);
if ((GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2 || GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 3)
&& (name.equals("Hidden2") || name.equals("Hidden") || name.equals("gun") || name.equals("bolt") || name.equals("Lefthand") || name.equals("Barrel") || name.equals("bipod") || name.equals("mount")) && ClientEventHandler.zoom && ClientEventHandler.zoomPos > 0.7) {
bone.setHidden(true);
renderingArms = false;
}
}
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
switch (scopeType) {
case 1 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.24, 20, 1, 255, 0, 0, 255, "dot", false);
case 2 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, -0.01, 0.24, 18, 1, 255, 0, 0, 255, "pso_1", true);
case 3 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.2525, -0.1, 0.1f, 255, 0, 0, 255, "sniper", true);
}
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.76479375, 0.35);
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
} else {
ItemModelHelper.hideAllAttachments(bone, name);
if (name.equals("mount")) {
bone.setHidden(true);
}
}
if ((GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 2 || GunData.from(itemStack).attachment.get(AttachmentType.SCOPE) == 3)
&& (name.equals("Hidden2") || name.equals("Hidden") || name.equals("gun") || name.equals("bolt") || name.equals("Lefthand") || name.equals("Barrel") || name.equals("bipod") || name.equals("mount")) && ClientEventHandler.zoom && ClientEventHandler.zoomPos > 0.7) {
bone.setHidden(true);
renderingArms = false;
}
int scopeType = GunData.from(itemStack).attachment.get(AttachmentType.SCOPE);
switch (scopeType) {
case 1 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.24, 20, 1, 255, 0, 0, 255, "dot", false);
case 2 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, -0.01, 0.24, 18, 1, 255, 0, 0, 255, "pso_1", true);
case 3 ->
AnimationHelper.handleZoomCrossHair(currentBuffer, renderType, name, stack, bone, buffer, 0, 0.2525, -0.1, 0.1f, 255, 0, 0, 255, "sniper", true);
}
AnimationHelper.handleShootFlare(name, stack, itemStack, bone, buffer, packedLightIn, 0, 0, 1.76479375, 0.35);
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
if (renderingArms) {
AnimationHelper.renderArms(player, this.transformType, stack, name, bone, this.currentBuffer, type, packedLightIn, false);
AnimationHelper.renderArms(player, this.renderPerspective, stack, name, bone, buffer, type, packedLightIn, false);
}
super.renderRecursively(stack, animatable, bone, type, buffer, bufferIn, isReRender, partialTick, packedLightIn, packedOverlayIn, color);
}

View file

@ -11,9 +11,11 @@ import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import java.util.Set;
@ -40,6 +42,8 @@ public class HuntingRifleItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.hunting_rifle.idle"));
if (GunData.from(stack).reload.empty()) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.hunting_rifle.reload"));

View file

@ -11,9 +11,11 @@ import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import java.util.Set;
@ -36,6 +38,9 @@ public class K98Item extends GunItem {
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k_98.idle"));
var data = GunData.from(stack);
if (data.bolt.actionTimer.get() > 0) {
@ -71,6 +76,9 @@ public class K98Item extends GunItem {
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.k_98.idle"));
var data = GunData.from(stack);
if (player.isSprinting() && player.onGround()

View file

@ -16,10 +16,12 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import net.minecraft.world.level.Level;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import javax.annotation.ParametersAreNonnullByDefault;
@ -42,8 +44,10 @@ public class M98bItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
var data = GunData.from(stack);
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m_98b.idle"));
var data = GunData.from(stack);
if (data.bolt.actionTimer.get() > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m_98b.shift"));
}
@ -64,8 +68,10 @@ public class M98bItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
var data = GunData.from(stack);
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m_98b.idle"));
var data = GunData.from(stack);
if (player.isSprinting() && player.onGround()
&& ClientEventHandler.cantSprint == 0
&& !(data.reload.normal() || GunData.from(stack).reload.empty()) && ClientEventHandler.drawTime < 0.01) {
@ -80,6 +86,9 @@ public class M98bItem extends GunItem {
}
private PlayState editPredicate(AnimationState<M98bItem> event) {
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.m_98b.idle"));
if (ClickHandler.isEditing) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.m_98b.edit"));
}

View file

@ -11,9 +11,11 @@ import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import java.util.Set;
@ -35,6 +37,9 @@ public class MosinNagantItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mosin_nagant.idle"));
var data = GunData.from(stack);
if (data.bolt.actionTimer.get() > 0) {
@ -69,6 +74,9 @@ public class MosinNagantItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.mosin_nagant.idle"));
var data = GunData.from(stack);
if (player.isSprinting() && player.onGround()

View file

@ -17,11 +17,13 @@ import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.neoforged.neoforge.capabilities.Capabilities;
import org.jetbrains.annotations.NotNull;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import java.util.Optional;
@ -62,8 +64,10 @@ public class SentinelItem extends GunItem implements EnergyStorageItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
var data = GunData.from(stack);
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sentinel.idle"));
var data = GunData.from(stack);
if (data.bolt.actionTimer.get() > 0) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.sentinel.shift"));
}
@ -88,8 +92,10 @@ public class SentinelItem extends GunItem implements EnergyStorageItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
var data = GunData.from(stack);
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.sentinel.idle"));
var data = GunData.from(stack);
if (player.isSprinting() && player.onGround()
&& ClientEventHandler.cantSprint == 0
&& !data.reloading()

View file

@ -15,9 +15,11 @@ import net.minecraft.client.player.LocalPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemDisplayContext;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Rarity;
import software.bernie.geckolib.animation.*;
import software.bernie.geckolib.constant.DataTickets;
import software.bernie.geckolib.renderer.GeoItemRenderer;
import java.util.Map;
@ -41,6 +43,8 @@ public class SvdItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.svd.idle"));
if (GunData.from(stack).reload.empty()) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.svd.reload_empty"));
@ -66,6 +70,8 @@ public class SvdItem extends GunItem {
if (player == null) return PlayState.STOP;
ItemStack stack = player.getMainHandItem();
if (!(stack.getItem() instanceof GunItem)) return PlayState.STOP;
if (event.getData(DataTickets.ITEM_RENDER_PERSPECTIVE) != ItemDisplayContext.FIRST_PERSON_RIGHT_HAND)
return event.setAndContinue(RawAnimation.begin().thenLoop("animation.svd.idle"));
if (ClickHandler.isEditing) {
return event.setAndContinue(RawAnimation.begin().thenPlay("animation.svd.edit"));