diff --git a/src/main/java/net/mcreator/target/client/ClickHandler.java b/src/main/java/net/mcreator/target/client/ClickHandler.java index a81095137..abbfc0fb6 100644 --- a/src/main/java/net/mcreator/target/client/ClickHandler.java +++ b/src/main/java/net/mcreator/target/client/ClickHandler.java @@ -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); diff --git a/src/main/java/net/mcreator/target/client/renderer/entity/Mk42Renderer.java b/src/main/java/net/mcreator/target/client/renderer/entity/Mk42Renderer.java index cade1bfb9..c2a1fd351 100644 --- a/src/main/java/net/mcreator/target/client/renderer/entity/Mk42Renderer.java +++ b/src/main/java/net/mcreator/target/client/renderer/entity/Mk42Renderer.java @@ -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 { public Mk42Renderer(EntityRendererProvider.Context renderManager) { super(renderManager, new Mk42Model()); - this.shadowRadius = 0f; + this.shadowRadius = 3f; + this.addRenderLayer(new Mk42Layer(this)); + } @Override diff --git a/src/main/java/net/mcreator/target/client/screens/Mk42UIOverlay.java b/src/main/java/net/mcreator/target/client/screens/Mk42UIOverlay.java index fa5bd07ee..83359b4a1 100644 --- a/src/main/java/net/mcreator/target/client/screens/Mk42UIOverlay.java +++ b/src/main/java/net/mcreator/target/client/screens/Mk42UIOverlay.java @@ -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); + } } diff --git a/src/main/java/net/mcreator/target/entity/Mk42Entity.java b/src/main/java/net/mcreator/target/entity/Mk42Entity.java index 2299565d3..bb7b064c2 100644 --- a/src/main/java/net/mcreator/target/entity/Mk42Entity.java +++ b/src/main/java/net/mcreator/target/entity/Mk42Entity.java @@ -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); } } diff --git a/src/main/java/net/mcreator/target/entity/layer/Mk42Layer.java b/src/main/java/net/mcreator/target/entity/layer/Mk42Layer.java new file mode 100644 index 000000000..6ed4b93ce --- /dev/null +++ b/src/main/java/net/mcreator/target/entity/layer/Mk42Layer.java @@ -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 { + private static final ResourceLocation LAYER = new ResourceLocation("target", "textures/entity/sherman_e.png"); + + public Mk42Layer(GeoRenderer 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); + } +} diff --git a/src/main/java/net/mcreator/target/event/ClientEventHandler.java b/src/main/java/net/mcreator/target/event/ClientEventHandler.java index a6708096d..14208fb58 100644 --- a/src/main/java/net/mcreator/target/event/ClientEventHandler.java +++ b/src/main/java/net/mcreator/target/event/ClientEventHandler.java @@ -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); } } diff --git a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java index be6672300..a33e7e50b 100644 --- a/src/main/java/net/mcreator/target/event/PlayerEventHandler.java +++ b/src/main/java/net/mcreator/target/event/PlayerEventHandler.java @@ -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; diff --git a/src/main/resources/assets/target/animations/mk_42.animation.json b/src/main/resources/assets/target/animations/mk_42.animation.json index 6ef93daad..be365faeb 100644 --- a/src/main/resources/assets/target/animations/mk_42.animation.json +++ b/src/main/resources/assets/target/animations/mk_42.animation.json @@ -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" } } } diff --git a/src/main/resources/assets/target/geo/sherman.geo.json b/src/main/resources/assets/target/geo/sherman.geo.json index b81769dcc..a1d9ac306 100644 --- a/src/main/resources/assets/target/geo/sherman.geo.json +++ b/src/main/resources/assets/target/geo/sherman.geo.json @@ -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", diff --git a/src/main/resources/assets/target/textures/entity/sherman_e.png b/src/main/resources/assets/target/textures/entity/sherman_e.png new file mode 100644 index 000000000..92125177d Binary files /dev/null and b/src/main/resources/assets/target/textures/entity/sherman_e.png differ diff --git a/src/main/resources/assets/target/textures/screens/mk_42_rex.png b/src/main/resources/assets/target/textures/screens/mk_42_rex.png index 6e5618331..506e5c45f 100644 Binary files a/src/main/resources/assets/target/textures/screens/mk_42_rex.png and b/src/main/resources/assets/target/textures/screens/mk_42_rex.png differ