diff --git a/src/main/java/com/atsuishio/superbwarfare/client/overlay/LandArmorHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/overlay/LandArmorHudOverlay.java index b03593acf..5bdc69eb7 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/overlay/LandArmorHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/overlay/LandArmorHudOverlay.java @@ -6,6 +6,7 @@ import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; import net.minecraft.client.CameraType; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; @@ -65,11 +66,19 @@ public class LandArmorHudOverlay { int addW = (w / h) * 48; int addH = (w / h) * 27; preciseBlit(guiGraphics, FRAME, (float) -addW / 2, (float) -addH / 2, 10, 0, 0.0F, w + addW, h + addH, w + addW, h + addH); - preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/heli_base.png"), k, l, 0, 0.0F, i, j, i, j); - preciseBlit(guiGraphics, ModUtils.loc("textures/screens/compass.png"), (float) w / 2 - 128, (float) 6, 128 + ((float) 64 / 45 * player.getYRot()), 0, 256, 16, 512, 16); - preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/speed_frame.png"), (float) w / 2 - 144, (float) h / 2 - 6, 0, 0, 50, 18, 50, 18); - guiGraphics.drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(lav150.getDeltaMovement().length() * 72) + "KM/H"), - w / 2 - 140, h / 2, 0x66FF00, false); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/land/lav_cross.png"), k, l, 0, 0.0F, i, j, i, j); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/compass.png"), (float) w / 2 - 128, (float) 10, 128 + ((float) 64 / 45 * player.getYRot()), 0, 256, 16, 512, 16); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/helicopter/roll_ind.png"), w / 2 - 8, 30, 0, 0.0F, 16, 16, 16, 16); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/land/line.png"), w / 2 - 64, h - 56, 0, 0.0F, 128, 1, 128, 1); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/land/line.png"), w / 2 + 112, h - 71, 0, 0.0F, 1, 16, 1, 16); + + poseStack.pushPose(); + poseStack.rotateAround(Axis.ZP.rotationDegrees(Mth.lerp(event.getPartialTick(), lav150.turretYRotO, lav150.getTurretYRot())),w / 2 + 112, h - 56, 0); + preciseBlit(guiGraphics, ModUtils.loc("textures/screens/land/body.png"), w / 2 + 96, h - 72, 0, 0.0F, 32, 32, 32, 32); + poseStack.popPose(); + + guiGraphics.drawString(Minecraft.getInstance().font, Component.literal(new DecimalFormat("##").format(lav150.getDeltaMovement().length() * 72) + " KM/H"), + w / 2 + 160, h / 2 - 48, 0x66FF00, false); if (lav150.getEnergy() < 0.02 * lav150.getMaxEnergy()) { guiGraphics.drawString(Minecraft.getInstance().font, Component.literal("NO POWER!"), w / 2 - 144, h / 2 + 14, -65536, false); diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SmallCannonShellEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SmallCannonShellEntity.java index 80180b649..a515d81bb 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SmallCannonShellEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/projectile/SmallCannonShellEntity.java @@ -90,7 +90,7 @@ public class SmallCannonShellEntity extends ThrowableItemProjectile implements G entity.invulnerableTime = 0; } - if (this.tickCount > 1) { + if (this.tickCount > 0) { if (this.level() instanceof ServerLevel) { causeExplode(result); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java index f1de7bc85..4328050a5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/Lav150Entity.java @@ -375,12 +375,12 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC float diffY; float diffX; - diffY = Mth.wrapDegrees(gunAngle - getTurretYRot() + 0.1f); + diffY = Mth.wrapDegrees(gunAngle - getTurretYRot() + 0.05f); diffX = Mth.wrapDegrees(driver.getXRot() - this.getTurretXRot()); - this.setTurretXRot(Mth.clamp(this.getTurretXRot() + Mth.clamp(0.5f * diffX, -2, 2), -25, 10)); - this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.5f * diffY, -8, 8)); + this.setTurretXRot(Mth.clamp(this.getTurretXRot() + Mth.clamp(0.95f * diffX, -5, 5), -32.5f, 15)); + this.setTurretYRot(this.getTurretYRot() + Mth.clamp(0.95f * diffY, -20, 20)); } public float getTurretYRot() { @@ -490,7 +490,7 @@ public class Lav150Entity extends ContainerMobileEntity implements GeoEntity, IC protected void clampRotation(Entity entity) { float f = Mth.wrapDegrees(entity.getXRot()); - float f1 = Mth.clamp(f, -25.0F, 10F); + float f1 = Mth.clamp(f, -32.5F, 15F); entity.xRotO += f1 - f; entity.setXRot(entity.getXRot() + f1 - f); } diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 8cba30dd7..e2b48277c 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -749,7 +749,7 @@ public class ClientEventHandler { Minecraft.getInstance().gameRenderer.shutdownEffect(); } } - + if (level != null && stack.is(ModTags.Items.GUN)) { handleWeaponSway(living); handleWeaponMove(living); @@ -1347,6 +1347,10 @@ public class ClientEventHandler { event.setCanceled(true); } + if (player.getVehicle() instanceof Lav150Entity) { + event.setCanceled(true); + } + if (player.getVehicle() instanceof SpeedboatEntity && zoom) { event.setCanceled(true); } diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java index 893c71835..e3c42e3be 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java @@ -62,6 +62,14 @@ public abstract class CameraMixin { return; } + if ((player.getVehicle() instanceof Lav150Entity lav150 && lav150.getFirstPassenger() == player) && Minecraft.getInstance().options.getCameraType() == CameraType.FIRST_PERSON) { + setRotation(-Mth.lerp(partialTicks, lav150.turretYRotO - lav150.yRotO, lav150.getTurretYRot() - lav150.getYRot()), Mth.lerp(partialTicks, lav150.turretXRotO - lav150.xRotO, lav150.getTurretXRot() - lav150.getXRot())); + setPosition(Mth.lerp(partialTicks, player.xo, player.getX()), Mth.lerp(partialTicks, player.yo + player.getEyeHeight(), player.getEyeY()), Mth.lerp(partialTicks, player.zo, player.getZ())); + info.cancel(); + + return; + } + if (stack.is(ModItems.MONITOR.get()) && stack.getOrCreateTag().getBoolean("Using") && stack.getOrCreateTag().getBoolean("Linked")) { DroneEntity drone = EntityFindUtil.findDrone(player.level(), stack.getOrCreateTag().getString("LinkedDrone")); if (drone != null) { diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java index 12aa60775..97c3685b2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/MouseHandlerMixin.java @@ -57,9 +57,9 @@ public class MouseHandlerMixin { if (player.getVehicle() instanceof Lav150Entity) { if (ClientEventHandler.zoom) { - return 0.22; + return 0.23; } else { - return 0.31; + return 0.28; } } diff --git a/src/main/resources/assets/superbwarfare/textures/screens/land/body.png b/src/main/resources/assets/superbwarfare/textures/screens/land/body.png new file mode 100644 index 000000000..137e01fba Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/land/body.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/screens/land/lav_cross.png b/src/main/resources/assets/superbwarfare/textures/screens/land/lav_cross.png new file mode 100644 index 000000000..983a1b082 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/land/lav_cross.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/screens/land/line.png b/src/main/resources/assets/superbwarfare/textures/screens/land/line.png new file mode 100644 index 000000000..7e7569202 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/screens/land/line.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/screens/land/tv_frame.png b/src/main/resources/assets/superbwarfare/textures/screens/land/tv_frame.png index dd2187447..d54966bef 100644 Binary files a/src/main/resources/assets/superbwarfare/textures/screens/land/tv_frame.png and b/src/main/resources/assets/superbwarfare/textures/screens/land/tv_frame.png differ