将标枪导弹的模型UI替换为GUI

This commit is contained in:
Atsuihsio 2024-09-01 23:31:11 +08:00
parent 2c0f6a6fd9
commit a439b98c7c
12 changed files with 70 additions and 214 deletions

View file

@ -1,27 +0,0 @@
package net.mcreator.superbwarfare.client.layer;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.item.gun.JavelinItem;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.resources.ResourceLocation;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
public class JavelinLayer extends GeoRenderLayer<JavelinItem> {
private static final ResourceLocation LAYER = new ResourceLocation(ModUtils.MODID, "textures/item/javelin_e.png");
public JavelinLayer(GeoRenderer<JavelinItem> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, JavelinItem animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) {
RenderType glowRenderType = RenderType.eyes(LAYER);
getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1);
}
}

View file

@ -34,12 +34,6 @@ public class JavelinItemModel extends GeoModel<JavelinItem> {
CoreGeoBone gun = getAnimationProcessor().getBone("bone"); CoreGeoBone gun = getAnimationProcessor().getBone("bone");
CoreGeoBone shen = getAnimationProcessor().getBone("shen"); CoreGeoBone shen = getAnimationProcessor().getBone("shen");
CoreGeoBone javelin = getAnimationProcessor().getBone("javelin"); CoreGeoBone javelin = getAnimationProcessor().getBone("javelin");
CoreGeoBone screen = getAnimationProcessor().getBone("screen");
CoreGeoBone seek = getAnimationProcessor().getBone("seek");
CoreGeoBone top = getAnimationProcessor().getBone("top");
CoreGeoBone dir = getAnimationProcessor().getBone("dir");
CoreGeoBone missile_green = getAnimationProcessor().getBone("missile_green");
CoreGeoBone missile_red = getAnimationProcessor().getBone("missile_red");
Player player = Minecraft.getInstance().player; Player player = Minecraft.getInstance().player;
if (player == null) return; if (player == null) return;
@ -49,11 +43,7 @@ public class JavelinItemModel extends GeoModel<JavelinItem> {
double p = player.getPersistentData().getDouble("zoom_pos"); double p = player.getPersistentData().getDouble("zoom_pos");
double zp = player.getPersistentData().getDouble("zoom_pos_z"); double zp = player.getPersistentData().getDouble("zoom_pos_z");
top.setHidden(!stack.getOrCreateTag().getBoolean("TopMode"));
dir.setHidden(stack.getOrCreateTag().getBoolean("TopMode"));
missile_green.setHidden(!(stack.getOrCreateTag().getInt("ammo") > 0));
missile_red.setHidden(stack.getOrCreateTag().getInt("ammo") > 0);
seek.setHidden(!(stack.getOrCreateTag().getInt("SeekTime") > 1 && stack.getOrCreateTag().getInt("SeekTime") < 20 ));
gun.setPosX(1.62f * (float) p); gun.setPosX(1.62f * (float) p);
gun.setPosY(6.3f * (float) p - (float) (0.2f * zp)); gun.setPosY(6.3f * (float) p - (float) (0.2f * zp));
@ -62,9 +52,7 @@ public class JavelinItemModel extends GeoModel<JavelinItem> {
gun.setRotZ(-4.75f * Mth.DEG_TO_RAD * (float) p + (float) (0.02f * zp)); gun.setRotZ(-4.75f * Mth.DEG_TO_RAD * (float) p + (float) (0.02f * zp));
javelin.setHidden(gun.getPosX() > 1.55); javelin.setHidden(gun.getPosX() > 1.55);
screen.setHidden(gun.getPosX() <= 1.55); stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.55));
stack.getOrCreateTag().putBoolean("HoloHidden", !(gun.getPosX() > 1.4));
double fp = player.getPersistentData().getDouble("fire_pos"); double fp = player.getPersistentData().getDouble("fire_pos");
double fr = player.getPersistentData().getDouble("fire_rot"); double fr = player.getPersistentData().getDouble("fire_rot");

View file

@ -1,6 +1,5 @@
package net.mcreator.superbwarfare.client.renderer.item; package net.mcreator.superbwarfare.client.renderer.item;
import net.mcreator.superbwarfare.client.layer.JavelinLayer;
import net.mcreator.superbwarfare.client.model.item.JavelinItemModel; import net.mcreator.superbwarfare.client.model.item.JavelinItemModel;
import net.mcreator.superbwarfare.item.gun.JavelinItem; import net.mcreator.superbwarfare.item.gun.JavelinItem;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
@ -11,7 +10,6 @@ import software.bernie.geckolib.renderer.GeoItemRenderer;
public class JavelinItemRenderer extends GeoItemRenderer<JavelinItem> { public class JavelinItemRenderer extends GeoItemRenderer<JavelinItem> {
public JavelinItemRenderer() { public JavelinItemRenderer() {
super(new JavelinItemModel()); super(new JavelinItemModel());
this.addRenderLayer(new JavelinLayer(this));
} }
@Override @Override

View file

@ -0,0 +1,68 @@
package net.mcreator.superbwarfare.client.screens;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.superbwarfare.ModUtils;
import net.mcreator.superbwarfare.init.ModItems;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.Mth;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.event.RenderGuiEvent;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(value = Dist.CLIENT)
public class JavelinHudOverlay {
public static final int TEXTURE_WIDTH = 771;
public static final int TEXTURE_HEIGHT = 1006;
public static final int HUD_WIDTH = 1720;
public static final int HUD_HEIGHT = 720;
@SubscribeEvent(priority = EventPriority.LOWEST)
public static void eventHandler(RenderGuiEvent.Pre event) {
int w = event.getWindow().getGuiScaledWidth();
int h = event.getWindow().getGuiScaledHeight();
Player player = Minecraft.getInstance().player;
if (player != null) {
ItemStack stack = player.getMainHandItem();
if ((stack.getItem() == ModItems.JAVELIN.get() && !stack.getOrCreateTag().getBoolean("HoloHidden"))) {
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.enableBlend();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
RenderSystem.setShaderColor(1, 1, 1, 1);
float f = (float)Math.min(w, h);
float f1 = Math.min((float)w / f, (float)h / f) * 1.35f;
int i = Mth.floor(f * f1);
int j = Mth.floor(f * f1);
int k = (w - i) / 2;
int l = (h - j) / 2;
int i1 = k + i;
int j1 = l + j;
event.getGuiGraphics().blit(new ResourceLocation(ModUtils.MODID, "textures/screens/javelin/javelin_hud.png"), k, l, -90, 0.0F, 0.0F, i, j, i, j);
event.getGuiGraphics().blit(new ResourceLocation(ModUtils.MODID, stack.getOrCreateTag().getBoolean("TopMode") ? "textures/screens/javelin/top.png" : "textures/screens/javelin/dir.png"), k, l, -90, 0.0F, 0.0F, i, j, i, j);
event.getGuiGraphics().blit(new ResourceLocation(ModUtils.MODID, stack.getOrCreateTag().getInt("ammo") > 0 ? "textures/screens/javelin/missile_green.png" : "textures/screens/javelin/missile_red.png"), k, l, -90, 0.0F, 0.0F, i, j, i, j);
if (stack.getOrCreateTag().getInt("SeekTime") > 1 && stack.getOrCreateTag().getInt("SeekTime") < 20) {
event.getGuiGraphics().blit(new ResourceLocation(ModUtils.MODID, "textures/screens/javelin/seek.png"), k, l, -90, 0.0F, 0.0F, i, j, i, j);
}
event.getGuiGraphics().fill(RenderType.guiOverlay(), 0, l, k, j1, -90, -16777216);
event.getGuiGraphics().fill(RenderType.guiOverlay(), i1, l, w, j1, -90, -16777216);
RenderSystem.depthMask(true);
RenderSystem.defaultBlendFunc();
RenderSystem.enableDepthTest();
RenderSystem.disableBlend();
RenderSystem.setShaderColor(1, 1, 1, 1);
}
}
}
}

View file

@ -44,177 +44,6 @@
"parent": "0", "parent": "0",
"pivot": [0, 0, 0] "pivot": [0, 0, 0]
}, },
{
"name": "screen",
"parent": "roll",
"pivot": [0.26172, 0.5, -66],
"cubes": [
{
"origin": [-6.58203, 1, -64.99609],
"size": [17.7, 13, 0],
"uv": {
"south": {"uv": [9.40381, 82.52881], "uv_size": [62.125, 45.375]}
}
},
{
"origin": [-31.73828, 11.5, -65],
"size": [68, 20, 0],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [-31.73828, -16.5, -65],
"size": [68, 20, 0],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [-31.73828, 3.5, -65],
"size": [28, 8, 0],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [8.26172, 3.5, -65],
"size": [28, 8, 0],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [6.3214, 6.97919, -65],
"size": [0.24922, 0.5, 0],
"pivot": [2.26193, 11.41327, -65],
"rotation": [0, 0, -45],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [6.3214, 15.34736, -65],
"size": [0.24922, 0.5, 0],
"pivot": [2.26193, 11.41327, -65],
"rotation": [0, 0, -135],
"uv": {
"south": {"uv": [0, 84], "uv_size": [2, 2]}
}
},
{
"origin": [6.3214, -0.85361, -65],
"size": [0.24922, 0.5, 0],
"pivot": [2.26193, 3.58048, -65],
"rotation": [0, 0, 135],
"uv": {
"south": {"uv": [0, 86], "uv_size": [2, -2]}
}
},
{
"origin": [6.3214, 7.51456, -65],
"size": [0.24922, 0.5, 0],
"pivot": [2.26193, 3.58048, -65],
"rotation": [0, 0, 45],
"uv": {
"south": {"uv": [0, 86], "uv_size": [2, -2]}
}
}
]
},
{
"name": "seek",
"parent": "screen",
"pivot": [-2.50703, 12.83359, -64.99609],
"cubes": [
{
"origin": [-3.83203, 11.50859, -64.99609],
"size": [2.65, 2.65, 0],
"uv": {
"south": {"uv": [83.90381, 89.15381], "uv_size": [9.4, 9.4]}
}
}
]
},
{
"name": "top",
"parent": "screen",
"pivot": [-5.31875, 10.71953, -64.99609],
"cubes": [
{
"origin": [-6.64375, 9.39453, -64.99609],
"size": [2.65, 2.65, 0],
"uv": {
"south": {"uv": [74.27881, 89.27881], "uv_size": [9.4, 9.4]}
}
}
]
},
{
"name": "dir",
"parent": "screen",
"pivot": [-5.28359, 7.53203, -64.99609],
"cubes": [
{
"origin": [-6.60859, 6.20703, -64.99609],
"size": [2.65, 2.65, 0],
"uv": {
"south": {"uv": [74.02881, 100.40381], "uv_size": [9.4, 9.4]}
}
}
]
},
{
"name": "missile_green",
"parent": "screen",
"pivot": [0.63047, 2.19297, -64.99609],
"cubes": [
{
"origin": [-0.69453, 0.86797, -64.99609],
"size": [2.65, 2.65, 0],
"uv": {
"south": {"uv": [84.15381, 100.52881], "uv_size": [9.4, 9.4]}
}
}
]
},
{
"name": "missile_red",
"parent": "screen",
"pivot": [-2.56875, 2.2125, -64.99609],
"cubes": [
{
"origin": [-3.89375, 0.8875, -64.99609],
"size": [2.65, 2.65, 0],
"uv": {
"south": {"uv": [74.74512, 111.48096], "uv_size": [9.4, 9.4]}
}
}
]
},
{
"name": "bone20",
"parent": "screen",
"pivot": [2.26172, 7.5, -65],
"cubes": [
{
"origin": [2.24672, 1.5, -65],
"size": [0.03, 12, 0],
"pivot": [2.26172, 7.5, -65],
"rotation": [0, 0, 90],
"uv": {
"south": {"uv": [2.5, 84], "uv_size": [1, 1]}
}
},
{
"origin": [2.24672, 3.5, -65],
"size": [0.03, 8, 0],
"uv": {
"south": {"uv": [2.5, 84], "uv_size": [1, 1]}
}
}
]
},
{ {
"name": "javelin", "name": "javelin",
"parent": "roll", "parent": "roll",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB