添加了炮口火焰

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.TargetModKeyMappings;
import net.mcreator.target.init.TargetModMobEffects; import net.mcreator.target.init.TargetModMobEffects;
import net.mcreator.target.init.TargetModTags; 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.TargetModVariables;
import net.mcreator.target.network.message.*; import net.mcreator.target.network.message.*;
import net.mcreator.target.tools.TraceTool; import net.mcreator.target.tools.TraceTool;
@ -75,9 +74,7 @@ public class ClickHandler {
if (player.getVehicle() != null && player.getVehicle() instanceof Mk42Entity) { if (player.getVehicle() != null && player.getVehicle() instanceof Mk42Entity) {
event.setCanceled(true); event.setCanceled(true);
TargetMod.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0)); TargetMod.PACKET_HANDLER.sendToServer(new VehicleFireMessage(0));
if (player.getMainHandItem().getItem() instanceof CannonShellItem) { return;
return;
}
} }
if (player.getMainHandItem().is(TargetModTags.Items.GUN)) { if (player.getMainHandItem().is(TargetModTags.Items.GUN)) {
event.setCanceled(true); 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.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import net.mcreator.target.entity.Mk42Entity; 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.mcreator.target.entity.model.Mk42Model;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.RenderType;
@ -15,7 +15,9 @@ import software.bernie.geckolib.renderer.GeoEntityRenderer;
public class Mk42Renderer extends GeoEntityRenderer<Mk42Entity> { public class Mk42Renderer extends GeoEntityRenderer<Mk42Entity> {
public Mk42Renderer(EntityRendererProvider.Context renderManager) { public Mk42Renderer(EntityRendererProvider.Context renderManager) {
super(renderManager, new Mk42Model()); super(renderManager, new Mk42Model());
this.shadowRadius = 0f; this.shadowRadius = 3f;
this.addRenderLayer(new Mk42Layer(this));
} }
@Override @Override

View file

@ -2,7 +2,11 @@ package net.mcreator.target.client.screens;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem; 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.Minecraft;
import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@ -13,11 +17,8 @@ import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@Mod.EventBusSubscriber(value = Dist.CLIENT) @Mod.EventBusSubscriber({Dist.CLIENT})
public class Mk42UIOverlay { public class Mk42UIOverlay {
public static final int TEXTURE_WIDTH = 1626;
public static final int TEXTURE_HEIGHT = 586;
@SubscribeEvent(priority = EventPriority.NORMAL) @SubscribeEvent(priority = EventPriority.NORMAL)
public static void eventHandler(RenderGuiEvent.Pre event) { public static void eventHandler(RenderGuiEvent.Pre event) {
int w = event.getWindow().getGuiScaledWidth(); int w = event.getWindow().getGuiScaledWidth();
@ -29,13 +30,9 @@ public class Mk42UIOverlay {
RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO); RenderSystem.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
RenderSystem.setShaderColor(1, 1, 1, 1); RenderSystem.setShaderColor(1, 1, 1, 1);
RenderTool.preciseBlit(event.getGuiGraphics(), if (shouldRenderCrossHair(player)) {
new ResourceLocation("target:textures/screens/mk_42_rex.png"), event.getGuiGraphics().blit(new ResourceLocation("target:textures/screens/mk_42_rex.png"), w / 2 + -407, h / 2 + -146, 0, 0, 813, 293, 813, 293);
(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)) {
//
// }
RenderSystem.depthMask(true); RenderSystem.depthMask(true);
RenderSystem.defaultBlendFunc(); RenderSystem.defaultBlendFunc();
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
@ -43,11 +40,11 @@ public class Mk42UIOverlay {
RenderSystem.setShaderColor(1, 1, 1, 1); RenderSystem.setShaderColor(1, 1, 1, 1);
} }
// private static boolean shouldRenderCrossHair(Player player) { private static boolean shouldRenderCrossHair(Player player) {
// if (player == null) return false; if (player == null) return false;
// return !player.isSpectator() return !player.isSpectator()
// && player.getMainHandItem().getItem() == TargetModItems.M_79.get() && !(player.getMainHandItem().getItem() instanceof GunItem)
// && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON
// && !player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).map(c -> c.zooming).orElse(false); && (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) { if (this.getPersistentData().getInt("fire_cooldown") > 28) {
gunner.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { gunner.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.recoilHorizon = 2 * Math.random() - 1; capability.recoilHorizon = 2 * Math.random() - 1;
capability.cannonFiring = 1; // capability.cannonFiring = 1;
capability.cannonRecoil = 10; capability.cannonRecoil = 10;
capability.syncPlayerVariables(gunner); capability.syncPlayerVariables(gunner);
}); });
@ -273,7 +273,7 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity {
} }
if (stack.is(TargetModItems.AP_5_INCHES.get())) { if (stack.is(TargetModItems.AP_5_INCHES.get())) {
hitDamage = 150; hitDamage = 450;
explosionRadius = 3; explosionRadius = 3;
explosionDamage = 250; explosionDamage = 250;
fireProbability = 0; fireProbability = 0;
@ -309,11 +309,50 @@ public class Mk42Entity extends PathfinderMob implements GeoEntity {
this.getZ() + 5 * this.getLookAngle().z, this.getZ() + 5 * this.getLookAngle().z,
200, 5, 0.02, 5, 0.005); 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, server.sendParticles(ParticleTypes.CAMPFIRE_COSY_SMOKE,
this.getX() + 9 * this.getLookAngle().x, this.getX() + 9.5 * this.getLookAngle().x,
this.getEyeY() + 9 * this.getLookAngle().y, this.getEyeY() + 9.5 * this.getLookAngle().y,
this.getZ() + 9 * this.getLookAngle().z, this.getZ() + 9.5 * this.getLookAngle().z,
70, 0.3, 0.3, 0.3, 0.01); 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) { if (entity.getVehicle() != null && entity.getVehicle() instanceof Mk42Entity) {
var capability = entity.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null); 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); data.putDouble("cannon_fire_shake_time", 0.001);
} }
@ -466,7 +466,7 @@ public class ClientEventHandler {
return; 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); event.setCanceled(true);
} }
} }

View file

@ -75,12 +75,12 @@ public class PlayerEventHandler {
} }
handleDistantRange(player); handleDistantRange(player);
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring > 0) { // if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring > 0) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { // 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.cannonFiring = (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonFiring - 0.5;
capability.syncPlayerVariables(player); // capability.syncPlayerVariables(player);
}); // });
} // }
if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonRecoil > 0) { if ((player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonRecoil > 0) {
player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> { player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).ifPresent(capability -> {
capability.cannonRecoil = (player.getCapability(TargetModVariables.PLAYER_VARIABLES_CAPABILITY, null).orElse(new TargetModVariables.PlayerVariables())).cannonRecoil - 1; 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", "format_version": "1.8.0",
"animations": { "animations": {
"animation.mk42.idle": { "animation.mk42.idle": {
"loop": true "loop": true,
},
"animation.mk42.fire": {
"loop": "hold_on_last_frame",
"animation_length": 0.5,
"bones": { "bones": {
"paoguan": { "flare": {
"position": { "scale": {
"0.0": { "vector": [0, 0, 0]
"vector": [0, 0, 11],
"easing": "easeInElastic"
},
"0.4917": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
}
} }
} }
} }
}, },
"animation.mk42.fire2": { "animation.mk42.fire": {
"loop": "hold_on_last_frame", "loop": "hold_on_last_frame",
"animation_length": 0.5, "animation_length": 1,
"bones": { "bones": {
"paoguan": { "paoguan": {
"position": { "position": {
"0.0": { "0.0": {
"vector": [0, 0, 0],
"easing": "easeInQuad"
},
"0.05": {
"vector": [0, 0, 11], "vector": [0, 0, 11],
"easing": "easeInElastic" "easing": "easeInElastic"
}, },
"0.4917": { "0.4917": {
"vector": [0, 0, 0], "vector": [0, 0, 0],
"easing": "easeInQuad" "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", "identifier": "geometry.unknown",
"texture_width": 256, "texture_width": 256,
"texture_height": 256, "texture_height": 256,
"visible_bounds_width": 14, "visible_bounds_width": 300,
"visible_bounds_height": 5.5, "visible_bounds_height": 299,
"visible_bounds_offset": [0, 2.25, 0] "visible_bounds_offset": [0, 2.5, 0]
}, },
"bones": [ "bones": [
{ {
@ -26,6 +26,69 @@
"pivot": [0, 34.56, -1.8], "pivot": [0, 34.56, -1.8],
"rotation": [90, 0, 0] "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", "name": "neibi",
"parent": "paoguan", "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