添加了炮口火焰

This commit is contained in:
Atsuihsio 2024-07-18 04:40:49 +08:00
parent 0e3fd66ce7
commit 3e7b6123ce
11 changed files with 205 additions and 59 deletions

View file

@ -8,7 +8,6 @@ import net.mcreator.target.entity.MortarEntity;
import net.mcreator.target.init.TargetModKeyMappings;
import net.mcreator.target.init.TargetModMobEffects;
import net.mcreator.target.init.TargetModTags;
import net.mcreator.target.item.common.ammo.CannonShellItem;
import net.mcreator.target.network.TargetModVariables;
import net.mcreator.target.network.message.*;
import net.mcreator.target.tools.TraceTool;
@ -75,9 +74,7 @@ public class ClickHandler {
if (player.getVehicle() != null && player.getVehicle() instanceof Mk42Entity) {
event.setCanceled(true);
TargetMod.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
if (player.getMainHandItem().getItem() instanceof CannonShellItem) {
return;
}
return;
}
if (player.getMainHandItem().is(TargetModTags.Items.GUN)) {
event.setCanceled(true);

View file

@ -3,7 +3,7 @@ package net.mcreator.target.client.renderer.entity;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.target.entity.Mk42Entity;
import net.mcreator.target.entity.MortarEntity;
import net.mcreator.target.entity.layer.Mk42Layer;
import net.mcreator.target.entity.model.Mk42Model;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
@ -15,7 +15,9 @@ import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class Mk42Renderer extends GeoEntityRenderer<Mk42Entity> {
public Mk42Renderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new Mk42Model());
this.shadowRadius = 0f;
this.shadowRadius = 3f;
this.addRenderLayer(new Mk42Layer(this));
}
@Override

View file

@ -2,7 +2,11 @@ package net.mcreator.target.client.screens;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.mcreator.target.tools.RenderTool;
import net.mcreator.target.entity.Mk42Entity;
import net.mcreator.target.init.TargetModItems;
import net.mcreator.target.item.gun.GunItem;
import net.mcreator.target.network.TargetModVariables;
import net.minecraft.client.CameraType;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.resources.ResourceLocation;
@ -13,11 +17,8 @@ import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(value = Dist.CLIENT)
@Mod.EventBusSubscriber({Dist.CLIENT})
public class Mk42UIOverlay {
public static final int TEXTURE_WIDTH = 1626;
public static final int TEXTURE_HEIGHT = 586;
@SubscribeEvent(priority = EventPriority.NORMAL)
public static void eventHandler(RenderGuiEvent.Pre event) {
int w = event.getWindow().getGuiScaledWidth();
@ -29,13 +30,9 @@ public class Mk42UIOverlay {
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);
RenderTool.preciseBlit(event.getGuiGraphics(),
new ResourceLocation("target:textures/screens/mk_42_rex.png"),
(float) w / 2 - (float) TEXTURE_WIDTH / 10f, (float) h / 2 - (float) TEXTURE_HEIGHT / 10f,
0, 0, TEXTURE_WIDTH / 5f, TEXTURE_HEIGHT / 5f, TEXTURE_WIDTH / 5f, TEXTURE_HEIGHT / 5f);
// if (shouldRenderCrossHair(player)) {
//
// }
if (shouldRenderCrossHair(player)) {
event.getGuiGraphics().blit(new ResourceLocation("target:textures/screens/mk_42_rex.png"), w / 2 + -407, h / 2 + -146, 0, 0, 813, 293, 813, 293);
}
RenderSystem.depthMask(true);
RenderSystem.defaultBlendFunc();
RenderSystem.enableDepthTest();
@ -43,11 +40,11 @@ public class Mk42UIOverlay {
RenderSystem.setShaderColor(1, 1, 1, 1);
}
// private static boolean shouldRenderCrossHair(Player player) {
// if (player == null) return false;
// return !player.isSpectator()
// && player.getMainHandItem().getItem() == TargetModItems.M_79.get()
// && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON
// && !player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> c.zooming).orElse(false);
// }
private static boolean shouldRenderCrossHair(Player player) {
if (player == null) return false;
return !player.isSpectator()
&& !(player.getMainHandItem().getItem() instanceof GunItem)
&& Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON
&& (player.getVehicle() != null && player.getVehicle() instanceof Mk42Entity);
}
}

View file

@ -235,7 +235,7 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity {
if (this.getPersistentData().getInt("fire_cooldown") > 28) {
gunner.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.recoilHorizon = 2 * Math.random() - 1;
capability.cannonFiring = 1;
// capability.cannonFiring = 1;
capability.cannonRecoil = 10;
capability.syncPlayerVariables(gunner);
});
@ -273,7 +273,7 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity {
}
if (stack.is(TargetModItems.AP_5_INCHES.get())) {
hitDamage = 150;
hitDamage = 450;
explosionRadius = 3;
explosionDamage = 250;
fireProbability = 0;
@ -309,11 +309,50 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity {
this.getZ() + 5 * this.getLookAngle().z,
200, 5, 0.02, 5, 0.005);
double x = this.getX() + 9 * this.getLookAngle().x;
double y = this.getEyeY() + 9 * this.getLookAngle().y;
double z = this.getZ() + 9 * this.getLookAngle().z;
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE, x, y, z, 10, 0.4, 0.4, 0.4, 0.0075);
server.sendParticles(ParticleTypes.CLOUD, x, y, z, 10, 0.4, 0.4, 0.4, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 9 * this.getLookAngle().x,
this.getEyeY() + 9 * this.getLookAngle().y,
this.getZ() + 9 * this.getLookAngle().z,
70, 0.3, 0.3, 0.3, 0.01);
this.getX() + 9.5 * this.getLookAngle().x,
this.getEyeY() + 9.5 * this.getLookAngle().y,
this.getZ() + 9.5 * this.getLookAngle().z,
5, 0.15, 0.15, 0.15, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 10 * this.getLookAngle().x,
this.getEyeY() + 10 * this.getLookAngle().y,
this.getZ() + 10 * this.getLookAngle().z,
4, 0.15, 0.15, 0.15, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 11.5 * this.getLookAngle().x,
this.getEyeY() + 11.5 * this.getLookAngle().y,
this.getZ() + 11.5 * this.getLookAngle().z,
3, 0.15, 0.15, 0.15, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 12 * this.getLookAngle().x,
this.getEyeY() + 12 * this.getLookAngle().y,
this.getZ() + 12 * this.getLookAngle().z,
2, 0.15, 0.15, 0.15, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 12.5 * this.getLookAngle().x,
this.getEyeY() + 12.5 * this.getLookAngle().y,
this.getZ() + 12.5 * this.getLookAngle().z,
2, 0.15, 0.15, 0.15, 0.0075);
server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 13 * this.getLookAngle().x,
this.getEyeY() + 13 * this.getLookAngle().y,
this.getZ() + 13 * this.getLookAngle().z,
1, 0.15, 0.15, 0.15, 0.0075);
}
}

View file

@ -0,0 +1,29 @@
package net.mcreator.target.entity.layer;
import software.bernie.geckolib.renderer.layer.GeoRenderLayer;
import software.bernie.geckolib.renderer.GeoRenderer;
import software.bernie.geckolib.cache.object.BakedGeoModel;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.MultiBufferSource;
import net.mcreator.target.entity.Mk42Entity;
import com.mojang.blaze3d.vertex.VertexConsumer;
import com.mojang.blaze3d.vertex.PoseStack;
public class Mk42Layer extends GeoRenderLayer<Mk42Entity> {
private static final ResourceLocation LAYER = new ResourceLocation("target", "textures/entity/sherman_e.png");
public Mk42Layer(GeoRenderer<Mk42Entity> entityRenderer) {
super(entityRenderer);
}
@Override
public void render(PoseStack poseStack, Mk42Entity 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

@ -83,7 +83,7 @@ public class ClientEventHandler {
if (entity.getVehicle() != null && entity.getVehicle() instanceof Mk42Entity) {
var capability = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null);
if (capability.orElse(new TargetModVariables.PlayerVariables()).cannonFiring > 0) {
if (capability.orElse(new TargetModVariables.PlayerVariables()).cannonRecoil > 7) {
data.putDouble("cannon_fire_shake_time", 0.001);
}
@ -466,7 +466,7 @@ public class ClientEventHandler {
return;
}
if (mc.player.getMainHandItem().is(TargetModTags.Items.GUN)) {
if (mc.player.getMainHandItem().is(TargetModTags.Items.GUN) || (mc.player.getVehicle() != null && mc.player.getVehicle() instanceof Mk42Entity)) {
event.setCanceled(true);
}
}

View file

@ -75,12 +75,12 @@ public class PlayerEventHandler {
}
handleDistantRange(player);
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring > 0) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.cannonFiring = (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring - 0.5;
capability.syncPlayerVariables(player);
});
}
// if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring > 0) {
// player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
// capability.cannonFiring = (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring - 0.5;
// capability.syncPlayerVariables(player);
// });
// }
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonRecoil > 0) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.cannonRecoil = (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonRecoil - 1;

View file

@ -2,39 +2,58 @@
"format_version": "1.8.0",
"animations": {
"animation.mk42.idle": {
"loop": true
},
"animation.mk42.fire": {
"loop": "hold_on_last_frame",
"animation_length": 0.5,
"loop": true,
"bones": {
"paoguan": {
"position": {
"0.0": {
"vector": [0, 0, 11],
"easing": "easeInElastic"
},
"0.4917": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
}
"flare": {
"scale": {
"vector": [0, 0, 0]
}
}
}
},
"animation.mk42.fire2": {
"animation.mk42.fire": {
"loop": "hold_on_last_frame",
"animation_length": 0.5,
"animation_length": 1,
"bones": {
"paoguan": {
"position": {
"0.0": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
},
"0.05": {
"vector": [0, 0, 11],
"easing": "easeInElastic"
},
"0.4917": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
},
"0.6667": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
}
}
},
"flare": {
"scale": {
"0.0": {
"vector": [1, 1, 1],
"easing": "easeOutQuad"
},
"0.0083": {
"vector": [110, 110, 110]
},
"0.025": {
"vector": [110, 110, 110]
},
"0.05": {
"vector": [1, 1, 1],
"easing": "easeOutQuad"
},
"0.6667": {
"vector": [1, 1, 1],
"easing": "easeOutQuad"
}
}
}

View file

@ -6,9 +6,9 @@
"identifier": "geometry.unknown",
"texture_width": 256,
"texture_height": 256,
"visible_bounds_width": 14,
"visible_bounds_height": 5.5,
"visible_bounds_offset": [0, 2.25, 0]
"visible_bounds_width": 300,
"visible_bounds_height": 299,
"visible_bounds_offset": [0, 2.5, 0]
},
"bones": [
{
@ -26,6 +26,69 @@
"pivot": [0, 34.56, -1.8],
"rotation": [90, 0, 0]
},
{
"name": "flare",
"parent": "paoguan",
"pivot": [0, 150, -1.74844],
"cubes": [
{
"origin": [-0.675, 149.325, -1.74844],
"size": [1.35, 1.35, 0],
"pivot": [0, 150, -1.74844],
"rotation": [-90, 0, 0],
"uv": {
"north": {"uv": [256, 0], "uv_size": [-64, 64]},
"east": {"uv": [192, 0], "uv_size": [64, 64]},
"south": {"uv": [192, 0], "uv_size": [64, 64]},
"west": {"uv": [192, 0], "uv_size": [64, 64]},
"up": {"uv": [256, 64], "uv_size": [-64, -64]},
"down": {"uv": [256, 64], "uv_size": [-64, -64]}
}
},
{
"origin": [-5.875, 149.625, -1.74844],
"size": [6.4, 1.35, 0],
"pivot": [0, 150.3, -1.74844],
"rotation": [-60, 0, 90],
"uv": {
"north": {"uv": [256, 0], "uv_size": [-51.5, 64]},
"east": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"south": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"west": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"up": {"uv": [256, 64], "uv_size": [-51.5, -64]},
"down": {"uv": [256, 64], "uv_size": [-51.5, -64]}
}
},
{
"origin": [-5.875, 149.625, -1.74844],
"size": [6.4, 1.35, 0],
"pivot": [0, 150.3, -1.74844],
"rotation": [-121, 0, 90],
"uv": {
"north": {"uv": [256, 0], "uv_size": [-51.5, 64]},
"east": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"south": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"west": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"up": {"uv": [256, 64], "uv_size": [-51.5, -64]},
"down": {"uv": [256, 64], "uv_size": [-51.5, -64]}
}
},
{
"origin": [-5.875, 149.625, -1.74844],
"size": [6.4, 1.35, 0],
"pivot": [0, 150.3, -1.74844],
"rotation": [179, 0, 90],
"uv": {
"north": {"uv": [256, 0], "uv_size": [-51.5, 64]},
"east": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"south": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"west": {"uv": [204.5, 0], "uv_size": [51.5, 64]},
"up": {"uv": [256, 64], "uv_size": [-51.5, -64]},
"down": {"uv": [256, 64], "uv_size": [-51.5, -64]}
}
}
]
},
{
"name": "neibi",
"parent": "paoguan",

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 62 KiB