优化渲染相关代码
This commit is contained in:
parent
e436675cea
commit
2cea1f38b5
3 changed files with 50 additions and 33 deletions
|
@ -5,6 +5,7 @@ import net.mcreator.superbwarfare.event.ClientEventHandler;
|
||||||
import net.mcreator.superbwarfare.init.ModTags;
|
import net.mcreator.superbwarfare.init.ModTags;
|
||||||
import net.mcreator.superbwarfare.item.gun.rifle.AK12Item;
|
import net.mcreator.superbwarfare.item.gun.rifle.AK12Item;
|
||||||
import net.mcreator.superbwarfare.tools.AnimUtils;
|
import net.mcreator.superbwarfare.tools.AnimUtils;
|
||||||
|
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.util.Mth;
|
import net.minecraft.util.Mth;
|
||||||
|
@ -18,24 +19,24 @@ public class AK12ItemModel extends GeoModel<AK12Item> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getAnimationResource(AK12Item animatable) {
|
public ResourceLocation getAnimationResource(AK12Item animatable) {
|
||||||
return new ResourceLocation(ModUtils.MODID, "animations/ak12.animation.json");
|
return ModUtils.loc("animations/ak12.animation.json");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getModelResource(AK12Item animatable) {
|
public ResourceLocation getModelResource(AK12Item animatable) {
|
||||||
return new ResourceLocation(ModUtils.MODID, "geo/ak12.geo.json");
|
return ModUtils.loc("geo/ak12.geo.json");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResourceLocation getTextureResource(AK12Item animatable) {
|
public ResourceLocation getTextureResource(AK12Item animatable) {
|
||||||
return new ResourceLocation(ModUtils.MODID, "textures/item/ak12.png");
|
return ModUtils.loc("textures/item/ak12.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setCustomAnimations(AK12Item animatable, long instanceId, AnimationState animationState) {
|
public void setCustomAnimations(AK12Item animatable, long instanceId, AnimationState animationState) {
|
||||||
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
CoreGeoBone gun = getAnimationProcessor().getBone("bone");
|
||||||
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
CoreGeoBone shen = getAnimationProcessor().getBone("shen");
|
||||||
CoreGeoBone Scope1 = getAnimationProcessor().getBone("Scope1");
|
CoreGeoBone scope1 = getAnimationProcessor().getBone("Scope1");
|
||||||
CoreGeoBone shuan = getAnimationProcessor().getBone("shuan");
|
CoreGeoBone shuan = getAnimationProcessor().getBone("shuan");
|
||||||
|
|
||||||
Player player = Minecraft.getInstance().player;
|
Player player = Minecraft.getInstance().player;
|
||||||
|
@ -60,30 +61,25 @@ public class AK12ItemModel extends GeoModel<AK12Item> {
|
||||||
double fp = ClientEventHandler.firePos;
|
double fp = ClientEventHandler.firePos;
|
||||||
double fr = ClientEventHandler.fireRot;
|
double fr = ClientEventHandler.fireRot;
|
||||||
|
|
||||||
int type = stack.getOrCreateTag().getInt("scope_type");
|
int type = GunsTool.getAttachmentType(stack, GunsTool.AttachmentType.SCOPE);
|
||||||
|
|
||||||
float posY = 0;
|
float posY = switch (type) {
|
||||||
float scaleZ = 0;
|
case 0, 2, 3 -> 0.781f;
|
||||||
|
case 1 -> 0.351f;
|
||||||
|
default -> 0f;
|
||||||
|
};
|
||||||
|
float scaleZ = switch (type) {
|
||||||
|
case 0, 2, 3 -> 0.55f;
|
||||||
|
case 1 -> 0.4f;
|
||||||
|
default -> 0f;
|
||||||
|
};
|
||||||
|
|
||||||
gun.setPosX(1.97f * (float) zp);
|
gun.setPosX(1.97f * (float) zp);
|
||||||
if (type == 0) {
|
|
||||||
posY = 0.781f;
|
|
||||||
scaleZ = 0.55f;
|
|
||||||
} else if (type == 1) {
|
|
||||||
posY = 0.351f;
|
|
||||||
scaleZ = 0.4f;
|
|
||||||
} else if (type == 2) {
|
|
||||||
posY = 0.781f;
|
|
||||||
scaleZ = 0.55f;
|
|
||||||
} else if (type == 3) {
|
|
||||||
posY = 0.781f;
|
|
||||||
scaleZ = 0.55f;
|
|
||||||
}
|
|
||||||
|
|
||||||
gun.setPosY(posY * (float) zp - (float) (0.2f * zpz));
|
gun.setPosY(posY * (float) zp - (float) (0.2f * zpz));
|
||||||
gun.setPosZ(2.8f * (float) zp + (float) (0.5f * zpz));
|
gun.setPosZ(2.8f * (float) zp + (float) (0.5f * zpz));
|
||||||
gun.setScaleZ(1f - (scaleZ * (float) zp));
|
gun.setScaleZ(1f - (scaleZ * (float) zp));
|
||||||
Scope1.setScaleZ(1f - (0.4f * (float) zp));
|
scope1.setScaleZ(1f - (0.4f * (float) zp));
|
||||||
|
|
||||||
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.8));
|
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.8));
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import net.mcreator.superbwarfare.client.layer.AK12Layer;
|
||||||
import net.mcreator.superbwarfare.client.model.item.AK12ItemModel;
|
import net.mcreator.superbwarfare.client.model.item.AK12ItemModel;
|
||||||
import net.mcreator.superbwarfare.item.gun.rifle.AK12Item;
|
import net.mcreator.superbwarfare.item.gun.rifle.AK12Item;
|
||||||
import net.mcreator.superbwarfare.tools.AnimUtils;
|
import net.mcreator.superbwarfare.tools.AnimUtils;
|
||||||
|
import net.mcreator.superbwarfare.tools.GunsTool;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.model.PlayerModel;
|
import net.minecraft.client.model.PlayerModel;
|
||||||
import net.minecraft.client.player.AbstractClientPlayer;
|
import net.minecraft.client.player.AbstractClientPlayer;
|
||||||
|
@ -79,22 +80,21 @@ public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
||||||
bone.setHidden(this.hiddenBones.contains(name));
|
bone.setHidden(this.hiddenBones.contains(name));
|
||||||
}
|
}
|
||||||
|
|
||||||
Player player_ = Minecraft.getInstance().player;
|
Player player = mc.player;
|
||||||
if (player_ != null) {
|
if (player != null) {
|
||||||
ItemStack itemStack = player_.getMainHandItem();
|
ItemStack itemStack = player.getMainHandItem();
|
||||||
|
|
||||||
if (name.equals("holo")) {
|
if (name.equals("holo")) {
|
||||||
|
|
||||||
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|
bone.setHidden(itemStack.getOrCreateTag().getBoolean("HoloHidden")
|
||||||
|| GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
|
|| GLFW.glfwGetMouseButton(Minecraft.getInstance().getWindow().getWindow(), GLFW.GLFW_MOUSE_BUTTON_RIGHT) != GLFW.GLFW_PRESS
|
||||||
|| itemStack.getOrCreateTag().getInt("scope_type") != 1);
|
|| GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.SCOPE) != 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name.equals("flare")) {
|
if (name.equals("flare")) {
|
||||||
if (itemStack.getOrCreateTag().getInt("barrel_type") == 1) {
|
if (GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 1) {
|
||||||
bone.setPosZ(2.25f);
|
bone.setPosZ(2.25f);
|
||||||
}
|
}
|
||||||
if (itemStack.getOrCreateTag().getDouble("flash_time") == 0 || itemStack.getOrCreateTag().getInt("barrel_type") == 2) {
|
if (itemStack.getOrCreateTag().getDouble("flash_time") == 0 || GunsTool.getAttachmentType(itemStack, GunsTool.AttachmentType.BARREL) == 2) {
|
||||||
bone.setHidden(true);
|
bone.setHidden(true);
|
||||||
} else {
|
} else {
|
||||||
bone.setHidden(false);
|
bone.setHidden(false);
|
||||||
|
@ -107,15 +107,14 @@ public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
||||||
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
ItemModelHelper.handleGunAttachments(bone, itemStack, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (this.transformType.firstPerson() && renderingArms) {
|
if (this.transformType.firstPerson() && renderingArms) {
|
||||||
AbstractClientPlayer player = mc.player;
|
AbstractClientPlayer localPlayer = mc.player;
|
||||||
|
|
||||||
if (player == null) {
|
if (localPlayer == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(player);
|
PlayerRenderer playerRenderer = (PlayerRenderer) mc.getEntityRenderDispatcher().getRenderer(localPlayer);
|
||||||
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
|
PlayerModel<AbstractClientPlayer> model = playerRenderer.getModel();
|
||||||
stack.pushPose();
|
stack.pushPose();
|
||||||
RenderUtils.translateMatrixToBone(stack, bone);
|
RenderUtils.translateMatrixToBone(stack, bone);
|
||||||
|
@ -123,7 +122,7 @@ public class AK12ItemRenderer extends GeoItemRenderer<AK12Item> {
|
||||||
RenderUtils.rotateMatrixAroundBone(stack, bone);
|
RenderUtils.rotateMatrixAroundBone(stack, bone);
|
||||||
RenderUtils.scaleMatrixForBone(stack, bone);
|
RenderUtils.scaleMatrixForBone(stack, bone);
|
||||||
RenderUtils.translateAwayFromPivotPoint(stack, bone);
|
RenderUtils.translateAwayFromPivotPoint(stack, bone);
|
||||||
ResourceLocation loc = player.getSkinTextureLocation();
|
ResourceLocation loc = localPlayer.getSkinTextureLocation();
|
||||||
VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc));
|
VertexConsumer armBuilder = this.currentBuffer.getBuffer(RenderType.entitySolid(loc));
|
||||||
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
VertexConsumer sleeveBuilder = this.currentBuffer.getBuffer(RenderType.entityTranslucent(loc));
|
||||||
if (name.equals("Lefthand")) {
|
if (name.equals("Lefthand")) {
|
||||||
|
|
|
@ -122,4 +122,26 @@ public class GunsTool {
|
||||||
tag.putBoolean("is_empty_reloading", false);
|
tag.putBoolean("is_empty_reloading", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getAttachmentType(ItemStack stack, AttachmentType type) {
|
||||||
|
CompoundTag tag = stack.getOrCreateTag().getCompound("Attachments");
|
||||||
|
return tag.getInt(type.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum AttachmentType {
|
||||||
|
SCOPE("Scope"),
|
||||||
|
MAGAZINE("Magazine"),
|
||||||
|
BARREL("Barrel"),
|
||||||
|
STOCK("Stock");
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
AttachmentType(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue