From b610b86468d8cb0c0819b0b817810287a1eb278a Mon Sep 17 00:00:00 2001 From: River <34910888+CommandrMoose@users.noreply.github.com> Date: Mon, 8 Apr 2024 20:24:15 +1000 Subject: [PATCH] Control icons, flight XP, updated Tdis doors and landing pad fixes (#218) --- .../door/interior/PoliceBoxDoorModel.java | 81 +++++++-------- .../entity/ControlEntityRenderer.java | 92 +++++++++++++++++- .../screen/upgrades/UpgradesScreen.java | 12 ++- .../common/block/device/LandingPad.java | 14 ++- .../tardis_refined/common/items/KeyItem.java | 13 +++ .../tardis/manager/TardisPilotingManager.java | 20 +++- .../tardis_refined/constants/ModMessages.java | 4 + .../shell/police_box/police_box_interior.png | Bin 2697 -> 3243 bytes .../gui/sprites/control/control_alert.png | Bin 0 -> 1149 bytes .../gui/sprites/control/control_danger.png | Bin 0 -> 1127 bytes .../gui/sprites/control/control_good.png | Bin 0 -> 1147 bytes .../gui/sprites/control/control_slipping.png | Bin 0 -> 1140 bytes .../gui/sprites/control/control_warning.png | Bin 0 -> 1149 bytes .../common/data/LangProviderEnglish.java | 4 + 14 files changed, 192 insertions(+), 48 deletions(-) create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_alert.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_danger.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_good.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_slipping.png create mode 100644 common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_warning.png diff --git a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java index 715fad170..a4c540c33 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java +++ b/common/src/main/java/whocraft/tardis_refined/client/model/blockentity/door/interior/PoliceBoxDoorModel.java @@ -23,44 +23,49 @@ public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); PartDefinition partdefinition = meshdefinition.getRoot(); - PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create().texOffs(19, 41).mirror().addBox(8.5F, -32.0F, 5.5F, 2.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 0).addBox(-8.5F, -32.0F, 6.5F, 17.0F, 32.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(19, 41).addBox(-10.5F, -32.0F, 5.5F, 2.0F, 32.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(0, 34).addBox(-10.5F, -35.25F, 5.5F, 21.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 24.0F, 0.5F)); - - PartDefinition right_door = root.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(50, 51).mirror().addBox(-7.0F, -8.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(28, 41).addBox(-9.0F, -31.25F, -0.775F, 1.0F, 31.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(56, 27).addBox(-9.0F, -0.75F, -1.025F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(50, 51).addBox(-7.0F, -15.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(35, 41).addBox(-7.0F, -23.0F, -2.475F, 6.0F, 7.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(0, 41).addBox(-8.0F, -31.25F, -0.475F, 8.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(56, 0).mirror().addBox(-8.0F, -1.0F, -0.475F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(52, 42).addBox(-7.0F, -30.75F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 33).addBox(-7.0F, -8.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 33).mirror().addBox(-7.0F, -15.5F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(50, 33).mirror().addBox(-7.0F, -23.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(56, 3).addBox(-6.5F, -22.5F, 0.05F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(56, 23).addBox(-6.0F, -28.25F, -0.525F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(8.5F, 0.0F, 6.25F)); - - PartDefinition bone3 = right_door.addOrReplaceChild("bone3", CubeListBuilder.create().texOffs(35, 51).addBox(-3.25F, -6.25F, 18.975F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(56, 19).addBox(-2.25F, -3.75F, 19.05F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-3.75F, -24.5F, -19.0F)); - - PartDefinition left_door = root.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(50, 51).addBox(1.0F, -8.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 51).addBox(1.0F, -15.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 51).addBox(1.0F, -23.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(37, 0).addBox(0.0F, -31.25F, -0.475F, 8.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(56, 0).addBox(0.0F, -1.0F, -0.475F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(56, 11).addBox(1.5F, -22.5F, 0.05F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 33).addBox(1.0F, -23.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 33).addBox(1.0F, -15.5F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) - .texOffs(50, 33).mirror().addBox(1.0F, -8.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(44, 60).addBox(4.0F, -21.0F, -1.475F, 4.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-8.5F, 0.0F, 6.25F)); - - PartDefinition bone2 = left_door.addOrReplaceChild("bone2", CubeListBuilder.create().texOffs(35, 51).mirror().addBox(-2.75F, -6.25F, 18.975F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(56, 19).mirror().addBox(-1.75F, -3.75F, 19.05F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(3.75F, -24.5F, -19.0F)); - - PartDefinition bone5 = left_door.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(52, 42).mirror().addBox(-3.25F, -8.25F, 1.0F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(56, 23).mirror().addBox(-2.25F, -5.75F, 0.975F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(4.25F, -22.5F, -1.5F)); + PartDefinition bone = partdefinition.addOrReplaceChild("bone", CubeListBuilder.create().texOffs(41, 11).addBox(-7.5F, -32.25F, -2.525F, 17.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 35).addBox(-10.5F, -37.25F, -2.775F, 23.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(41, 5).addBox(-8.5F, -36.25F, -3.775F, 19.0F, 4.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(19, 44).addBox(-10.5F, -33.0F, -2.775F, 2.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(41, 0).addBox(-10.5F, 0.0F, -2.775F, 23.0F, 1.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(-8.5F, -33.0F, -0.775F, 19.0F, 33.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(19, 44).mirror().addBox(10.5F, -33.0F, -2.775F, 2.0F, 33.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(30, 44).addBox(9.5F, -33.0F, -2.525F, 1.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(30, 44).mirror().addBox(-8.5F, -33.0F, -2.525F, 1.0F, 33.0F, 2.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-1.0F, 23.0F, 7.775F)); + + PartDefinition right_door = bone.addOrReplaceChild("right_door", CubeListBuilder.create().texOffs(44, 53).mirror().addBox(-7.0F, -8.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(37, 44).addBox(-9.0F, -31.25F, -1.025F, 1.0F, 31.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(53, 62).addBox(-9.0F, -1.0F, -1.025F, 1.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(44, 53).addBox(-7.0F, -15.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(41, 15).addBox(-7.0F, -23.0F, -2.475F, 6.0F, 7.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(0, 44).addBox(-8.0F, -31.25F, -0.475F, 8.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(56, 25).addBox(-8.0F, -1.0F, -0.475F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(53, 34).addBox(-7.0F, -30.75F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(44, 44).addBox(-7.0F, -8.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(44, 44).mirror().addBox(-7.0F, -15.5F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(44, 44).mirror().addBox(-7.0F, -23.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(59, 43).addBox(-6.5F, -22.5F, 0.05F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(56, 28).addBox(-6.0F, -28.25F, -0.525F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(9.5F, 0.0F, -1.5F)); + + PartDefinition bone4 = right_door.addOrReplaceChild("bone4", CubeListBuilder.create().texOffs(41, 25).addBox(-3.25F, -6.25F, 18.975F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(59, 51).addBox(-2.25F, -3.75F, 19.05F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(-3.75F, -24.5F, -19.0F)); + + PartDefinition left_door = bone.addOrReplaceChild("left_door", CubeListBuilder.create().texOffs(44, 53).addBox(1.0F, -8.0F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(44, 53).mirror().addBox(1.0F, -15.5F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(44, 53).mirror().addBox(1.0F, -23.25F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(44, 62).addBox(5.0F, -19.25F, -1.475F, 3.0F, 3.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(0, 44).mirror().addBox(0.0F, -31.25F, -0.475F, 8.0F, 31.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(56, 25).mirror().addBox(0.0F, -1.0F, -0.475F, 8.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(53, 34).mirror().addBox(1.0F, -30.75F, -0.5F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(44, 44).mirror().addBox(1.0F, -8.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(44, 44).addBox(1.0F, -15.5F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(44, 44).addBox(1.0F, -23.0F, 0.025F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(58, 15).addBox(1.5F, -22.5F, 0.05F, 5.0F, 6.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(59, 55).addBox(7.5F, -21.5F, -0.25F, 1.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)) + .texOffs(56, 28).mirror().addBox(2.0F, -28.25F, -0.525F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-7.5F, 0.0F, -1.5F)); + + PartDefinition bone6 = left_door.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(41, 25).mirror().addBox(-2.75F, -6.25F, 18.975F, 6.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(59, 51).mirror().addBox(-1.75F, -3.75F, 19.05F, 4.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(3.75F, -24.5F, -19.0F)); return LayerDefinition.create(meshdefinition, 128, 128); } diff --git a/common/src/main/java/whocraft/tardis_refined/client/renderer/entity/ControlEntityRenderer.java b/common/src/main/java/whocraft/tardis_refined/client/renderer/entity/ControlEntityRenderer.java index 5a81d44bf..3f26d018c 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/renderer/entity/ControlEntityRenderer.java +++ b/common/src/main/java/whocraft/tardis_refined/client/renderer/entity/ControlEntityRenderer.java @@ -1,12 +1,18 @@ package whocraft.tardis_refined.client.renderer.entity; -import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.*; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.NoopRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.FormattedCharSequence; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.level.Level; @@ -15,6 +21,7 @@ import org.joml.Matrix4f; import whocraft.tardis_refined.TRConfig; +import whocraft.tardis_refined.TardisRefined; import whocraft.tardis_refined.client.TRParticles; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.items.GlassesItem; @@ -23,6 +30,12 @@ public class ControlEntityRenderer extends NoopRenderer { + private static ResourceLocation ICON_GOOD = new ResourceLocation(TardisRefined.MODID, "textures/gui/sprites/control/control_good.png"); + private static ResourceLocation ICON_SLIPPING = new ResourceLocation(TardisRefined.MODID, "textures/gui/sprites/control/control_slipping.png"); + private static ResourceLocation ICON_WARNING = new ResourceLocation(TardisRefined.MODID, "textures/gui/sprites/control/control_warning.png"); + private static ResourceLocation ICON_ALERT = new ResourceLocation(TardisRefined.MODID, "textures/gui/sprites/control/control_alert.png"); + private static ResourceLocation ICON_DANGER = new ResourceLocation(TardisRefined.MODID, "textures/gui/sprites/control/control_danger.png"); + public ControlEntityRenderer(EntityRendererProvider.Context context) { super(context); } @@ -55,6 +68,7 @@ public void render(ControlEntity entity, float f, float g, PoseStack poseStack, } } } + } @Override @@ -66,6 +80,7 @@ protected void renderNameTag(ControlEntity entity, Component component, PoseStac boolean isSolid = !entity.isDiscrete(); float boundingBoxHeight = entity.getNameTagOffsetY() - 0.3f; int verticalTextOffset = 10; + poseStack.pushPose(); poseStack.translate(0.0, boundingBoxHeight, 0.0); @@ -83,16 +98,85 @@ protected void renderNameTag(ControlEntity entity, Component component, PoseStac font.drawInBatch8xOutline(sequence, textHorizontalPosition, (float) verticalTextOffset, 16777215, 0, textMatrix, multiBufferSource, packedLightCoords); - // Damage used for the icon later on. Left for Jeryn. - int entityHealth = entity.getControlHealth(); - if (isSolid) { font.drawInBatch8xOutline(sequence, textHorizontalPosition, (float) verticalTextOffset, 16777215, 0, textMatrix, multiBufferSource, packedLightCoords); } + // Damage used for the icon later on. Left for Jeryn. + int entityHealth = entity.getControlHealth(); + + poseStack.translate(0.0, 5, 0.0); + renderControlIcon(entity, component, getIconByState(entityHealth), poseStack, multiBufferSource, packedLightCoords ); + poseStack.popPose(); + + } } + + public ResourceLocation getIconByState(int entityHealth) { + if (entityHealth == 10) { + return ICON_GOOD; + } + + if (entityHealth == 8 || entityHealth == 9) { + return ICON_SLIPPING; + } + + if (entityHealth > 5) { + return ICON_WARNING; + } + + if (entityHealth > 3) { + return ICON_ALERT; + } + + return ICON_DANGER; + + } + + + private void renderControlIcon(ControlEntity entity, Component component, ResourceLocation texture, PoseStack matrixStackIn, MultiBufferSource buffer, int light) { + + float offset = (float) -(Minecraft.getInstance().font.width(component) / 2 + 18); + VertexConsumer builder = buffer.getBuffer(RenderType.text(texture)); + int alpha = 32; + + if (entity.isDiscrete()) { + vertex(builder, matrixStackIn, offset, 16F, 0F, 0F, 1F, alpha, light); + vertex(builder, matrixStackIn, offset + 16F, 16F, 0F, 1F, 1F, alpha, light); + vertex(builder, matrixStackIn, offset + 16F, 0F, 0F, 1F, 0F, alpha, light); + vertex(builder, matrixStackIn, offset, 0F, 0F, 0F, 0F, alpha, light); + } else { + vertex(builder, matrixStackIn, offset, 16F, 0F, 0F, 1F, light); + vertex(builder, matrixStackIn, offset + 16F, 16F, 0F, 1F, 1F, light); + vertex(builder, matrixStackIn, offset + 16F, 0F, 0F, 1F, 0F, light); + vertex(builder, matrixStackIn, offset, 0F, 0F, 0F, 0F, light); + + VertexConsumer builderSeeThrough = buffer.getBuffer(RenderType.textSeeThrough(texture)); + vertex(builderSeeThrough, matrixStackIn, offset, 16F, 0F, 0F, 1F, alpha, light); + vertex(builderSeeThrough, matrixStackIn, offset + 16F, 16F, 0F, 1F, 1F, alpha, light); + vertex(builderSeeThrough, matrixStackIn, offset + 16F, 0F, 0F, 1F, 0F, alpha, light); + vertex(builderSeeThrough, matrixStackIn, offset, 0F, 0F, 0F, 0F, alpha, light); + } + + } + + private static void vertex(VertexConsumer builder, PoseStack matrixStack, float x, float y, float z, float u, float v, int light) { + vertex(builder, matrixStack, x, y, z, u, v, 255, light); + } + + private static void vertex(VertexConsumer builder, PoseStack matrixStack, float x, float y, float z, float u, float v, int alpha, int light) { + PoseStack.Pose entry = matrixStack.last(); + builder.vertex(entry.pose(), x, y, z) + .color(255, 255, 255, alpha) + .uv(u, v) + .overlayCoords(OverlayTexture.NO_OVERLAY) + .uv2(light) + .normal(entry.normal(), 0F, 0F, -1F) + .endVertex(); + } + } diff --git a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java index 43e5d2b85..dd69bb386 100644 --- a/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java +++ b/common/src/main/java/whocraft/tardis_refined/client/screen/upgrades/UpgradesScreen.java @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; -public class UpgradesScreen extends Screen { +public class UpgradesScreen extends Screen { public static final ResourceLocation WINDOW = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/window.png"); public static final ResourceLocation TABS = new ResourceLocation(TardisRefined.MODID, "textures/gui/upgrades/tabs.png"); @@ -137,6 +137,7 @@ public boolean keyPressed(int keyCode, int scanCode, int modifiers) { public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) { int i = (this.width - WINDOW_WIDTH) / 2; int j = (this.height - WINDOW_HEIGHT) / 2; + this.renderTransparentBackground(guiGraphics); this.renderBackground(guiGraphics, mouseX, mouseY, partialTick); this.renderWindow(guiGraphics, i, j); this.renderInside(guiGraphics, mouseX, mouseY, i, j); @@ -149,6 +150,8 @@ public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partia this.selectedTab.fade = Mth.clamp(this.selectedTab.fade + 0.02F, 0, 0.5F); guiGraphics.pose().translate(0, 0, -500); } + + } @Override @@ -196,7 +199,12 @@ public void renderWindow(GuiGraphics guiGraphics, int offsetX, int offsetY) { RenderSystem.disableBlend(); } - guiGraphics.drawString(this.minecraft.font, TITLE.getString() + " - Upgrade Points: " + upgradeHandler.getUpgradePoints(), width / 2 - font.width(TITLE.getString() + " - Upgrade Points: " + upgradeHandler.getUpgradePoints()) / 2, offsetY + 6, ChatFormatting.BLACK.getColor(), false); + if (upgradeHandler.getUpgradePoints() > 0) { + guiGraphics.drawString(this.minecraft.font, "Points: " + upgradeHandler.getUpgradePoints(), width / 2 - font.width("Points: " + upgradeHandler.getUpgradePoints()) / 2, offsetY + WINDOW_HEIGHT - 15, ChatFormatting.BLACK.getColor(), false); + } + + guiGraphics.drawString(this.minecraft.font, "XP: " + upgradeHandler.getUpgradeXP() + " / 100", width / 2 - font.width( "XP: " + upgradeHandler.getUpgradeXP() + " / 100") / 2, offsetY + 6 , ChatFormatting.BLACK.getColor(), false); + // guiGraphics.drawString(this.minecraft.font, "XP: " + upgradeHandler.getUpgradeXP() + "/100 - Upgrade Points: " + upgradeHandler.getUpgradePoints(), width / 2 - font.width("XP: " + upgradeHandler.getUpgradeXP() + "/100 - Upgrade Points: " + upgradeHandler.getUpgradePoints()) / 2, offsetY + 6, ChatFormatting.BLACK.getColor(), false); } private void renderTooltips(GuiGraphics guiGraphics, int mouseX, int mouseY, int offsetX, int offsetY) { diff --git a/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java b/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java index 05b33f459..c5f742ad8 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java +++ b/common/src/main/java/whocraft/tardis_refined/common/block/device/LandingPad.java @@ -2,6 +2,7 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; @@ -28,6 +29,8 @@ import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; import whocraft.tardis_refined.common.util.DimensionUtil; import whocraft.tardis_refined.common.util.Platform; +import whocraft.tardis_refined.common.util.PlayerUtil; +import whocraft.tardis_refined.constants.ModMessages; public class LandingPad extends Block { @@ -81,9 +84,18 @@ public InteractionResult use(BlockState blockState, Level level, BlockPos blockP if (Upgrades.LANDING_PAD.get().isUnlocked(upgradeHandler) && pilotManager.beginFlight(true, null) && !pilotManager.isOnCooldown()) { pilotManager.setTargetLocation(new TardisNavLocation(blockPos.above(), player.getDirection().getOpposite(), serverLevel)); serverLevel.playSound(null, blockPos, SoundEvents.PLAYER_LEVELUP, SoundSource.BLOCKS, 1f, 1f); + PlayerUtil.sendMessage(player, Component.translatable(ModMessages.TARDIS_IS_ON_THE_WAY), true); return super.use(blockState, level, blockPos, player, interactionHand, blockHitResult); } else { - serverLevel.playSound(null, blockPos, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1f, 1f); + + if (Upgrades.LANDING_PAD.get().isUnlocked(upgradeHandler)) { + PlayerUtil.sendMessage(player, Component.translatable(ModMessages.LANDING_PAD_TRANSIENT), true); + serverLevel.playSound(null, blockPos, SoundEvents.NOTE_BLOCK_BIT.value(), SoundSource.BLOCKS, 100, (float) (0.1 + (serverLevel.getRandom().nextFloat() * 0.25))); + } else { + serverLevel.playSound(null, blockPos, SoundEvents.FURNACE_FIRE_CRACKLE, SoundSource.BLOCKS, 1f, 1f); + PlayerUtil.sendMessage(player, Component.translatable(ModMessages.LANDING_PAD_NOT_UNLOCKED), true); + } + return super.use(blockState, level, blockPos, player, interactionHand, blockHitResult); } } diff --git a/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java b/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java index 8f753cae8..28b03d0cc 100644 --- a/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java +++ b/common/src/main/java/whocraft/tardis_refined/common/items/KeyItem.java @@ -23,7 +23,9 @@ import net.minecraft.world.level.Level; import org.jetbrains.annotations.Nullable; import whocraft.tardis_refined.TardisRefined; +import whocraft.tardis_refined.client.TardisClientData; import whocraft.tardis_refined.common.capability.TardisLevelOperator; +import whocraft.tardis_refined.common.dimension.DimensionHandler; import whocraft.tardis_refined.common.entity.ControlEntity; import whocraft.tardis_refined.common.tardis.control.ConsoleControl; import whocraft.tardis_refined.common.tardis.manager.TardisPilotingManager; @@ -167,6 +169,15 @@ public void appendHoverText(ItemStack itemStack, @Nullable Level level, List> keychain = KeyItem.getKeychain(itemStack); if (!keychain.isEmpty()) { + + ResourceKey mainTardisLevel = keychain.get(0); + + if (TardisClientData.getInstance(mainTardisLevel).isFlying()) { + list.add(Component.translatable("* " + ModMessages.TOOLTIP_IN_FLIGHT + " *")); + } + + + list.add(Component.translatable(ModMessages.TOOLTIP_TARDIS_LIST_TITLE)); for (int i = 0; i < keychain.size(); i++) { @@ -174,6 +185,8 @@ public void appendHoverText(ItemStack itemStack, @Nullable Level level, List (20 * 10) && autoLand) { + if (distanceCovered >= flightDistance && autoLand && !this.isLanding()) { this.endFlight(false); } } @@ -455,7 +455,12 @@ public boolean beginFlight(boolean autoLand, Optional TardisNavLocation lastKnownLocation = this.operator.getExteriorManager().getLastKnownLocation(); this.flightDistance = calculateFlightDistance(lastKnownLocation, targetPosition); - this.operator.getFlightDanceManager().startFlightDance(this.currentConsole); + + if (!autoLand) { + this.operator.getFlightDanceManager().startFlightDance(this.currentConsole); + } + + operator.setDoorClosed(true); operator.getLevel().playSound(null, operator.getInternalDoor().getDoorPosition(), SoundRegistry.TARDIS_TAKEOFF.get(), SoundSource.AMBIENT, 10f, 1f); @@ -532,6 +537,15 @@ public boolean endFlight(boolean forceFlightEnd) { level.playSound(null, TardisArchitectureHandler.DESKTOP_CENTER_POS, SoundRegistry.TARDIS_LAND.get(), SoundSource.AMBIENT, 10f, 1f); } + int totalPoints = distanceCovered / 10; + this.operator.getUpgradeHandler().addUpgradeXP(totalPoints); + + var players = level.players(); + for (var player : players) { + PlayerUtil.sendMessage(player, Component.translatable("+" + totalPoints + "XP."), true); + } + + return true; } diff --git a/common/src/main/java/whocraft/tardis_refined/constants/ModMessages.java b/common/src/main/java/whocraft/tardis_refined/constants/ModMessages.java index 067c83e7d..0476ccdf6 100644 --- a/common/src/main/java/whocraft/tardis_refined/constants/ModMessages.java +++ b/common/src/main/java/whocraft/tardis_refined/constants/ModMessages.java @@ -29,6 +29,10 @@ public class ModMessages { public static String CONSOLE_CONFIGURATION_NOT_IN_FLIGHT = message("console_config_not_in_flight"); public static String CONSOLE_NOT_IN_FLIGHT = message("cannot_switch_console_units_whilst_in_flight"); public static String NO_END_DRAGON_PREVENTS = message("no_end_dragon_prevents"); + public static String TARDIS_IS_ON_THE_WAY = message("tardis_on_the_way"); + public static String LANDING_PAD_NOT_UNLOCKED = message("landing_pad_unlocked"); + public static String LANDING_PAD_TRANSIENT = message("landing_pad_transient"); + public static String TOOLTIP_IN_FLIGHT = message("tooltip_in_flight"); public static String TOOLTIP_TARDIS_LIST_TITLE = tooltip("tardis_list"); diff --git a/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/police_box/police_box_interior.png b/common/src/main/resources/assets/tardis_refined/textures/blockentity/shell/police_box/police_box_interior.png index 691fcdb1828a8922b261fb0dd0d942db297c78c1..f1b236140236054c8d33b587b4a58aed5649f112 100644 GIT binary patch literal 3243 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 IGJ5p%A5REnNdN!< literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_good.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_good.png new file mode 100644 index 0000000000000000000000000000000000000000..c7636f63cdf198be488f58babdbc17e0563518c9 GIT binary patch literal 1147 zcmaJ=U1-x#6wcgaTj#{TA-IXxs4!v8Pk+`Ww2roEU8m`4TiKL}rpa{;TXI8^t?f`z zUqtW+Uqo?3@Ig^t({xG+}bMNL*UE|D#TKv7=|D_u*HCB3igqV8M_6ZwxLt!yY5Vy`Y{gjqsyEU~l z8_QkYJ$ND75pFBJ97B(wbRn9*mfh%W!RH?bw;aMtqn%D><|>28^c7b*n?}zbiy)Ri zb!JUVd+$+#s12*x0ee8)$;(KiBn9OlRn!cOCWv5n(U9a}XoDOaQuPq|^}%Bjs7i?J z_lt~ZL}6a-88=~OJeifphhH z3_BjdfS3YNWJ17EtXpOn76dp->Qa0Gzt_ig01xBw(u|k(c-^d*XZ*a+4=RJi9svlN z%0WIY#48@L6(aMtZSXW*C={rImqO+c&2k(^GalOGabtwrD(SXVbnDipd69~Y04>>6 z4O>MzaAc(%8nr_t4toAJnz5*@Ta_onk4G0JgJvnlx!nR#6#oy^v_-UKr{SNV|0!%` zO9rIV&_bi83^9C@xpXC{Anm02ue8sXRCyQI z6t;r&Vof{NVqZWVH-m|*zDek-!yR)XA%wH-nZs`zUC+U?y3}OH_}uEbi$c?e-q|Ik z)6M+%9fxL8uP%MtmSU58FWsBIV!6*Y)O)T>pO3A|-E1itN88Oasq0stovN=Hy4l-$ z?0x;6+kF!|CNIxEd=i_8m)7lieeU9o%!enBR;<6zxL@X&xMGhSQ4S}|6WB>pF literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_slipping.png b/common/src/main/resources/assets/tardis_refined/textures/gui/sprites/control/control_slipping.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd1d2e79a9481a3dabb05acc6ad1cafd17bce4a GIT binary patch literal 1140 zcmaJ=T}TvB6dudM6eY8lO5!%Y7&Jfo=k83q>h8{(OU}Bk3mWt{&RpGLow?J@=#J7u zC=n46)kA;w76uVQ^imp0R1ZQ(KM>SI^bkQ*1ib~J-C0-dq3yz*JLlf-`_8%doO3pv zI#64^vzj1?+GMAY!RvN+R&B)J*}m^>c&V^52V%s`V&fNVR1QVOC_&u2Q1e^bgza7F zu54m%s(r?y_BYi&y3}@%YIr-F`nY&}<|KvBpDs{Kc-dlSQoYNiLG*Sz+uTi~^N>Xl zbx+(`@!(?qJ3(xWs@ZSq}(uv=mbO!GO=t?E_xc>tk3SBXpEJVk<)CY}?=&rcfx*1s{#fA;!aT9K(7Uub09I${N#c$)R+sX+@+YBS1?w zRl`=14qRDj0FBrY5(m9<8_ihL)~(W$;m2bf$zVJ*>)vh^D2o4wYT6pwvNLc!=zj`Z z*)an$8EByqQ-&Dc>ac9XErCtG-6)uEZU4Dk(&>&Aq1=YwDhXs><|^U(Rwvq5YeFd9d(0 z=Op0WE5D!haLoMZ@zrDK3FGZpDeK-=IXbezVVQJ{PHHc zdSZE!d>LMxZ{NQ8%)9%yM~3c%oa@J0c31BCGI?%t>Xvr+RUT}TvB6duXSG<%R9BEzm@hJiaj`_t|WyV~x~u5LK1t}AO#HO}1J$>xWdv7Lk{ z$|57MdI*Z>p@M#hsE3LQspyxYKcgPXXCotmB7F($&bnF;Z5QsnbM8Igch0%zoEh#& zwp5m{EXOdcGSSMV(7xQ6Wed=HJM*;}Z6#)^C4yafx#}|#O8dfm7{jiORQwVaBDuPw zEgc)(T$5V8bi<0p&uwbrOw+g9oulcRXG1i)AEyT65iZYSst`m#GpV+0JgGSHCa1^=ZRVL?HrRh$g5cW zAw29@1U-BQh-wA|3_-g@ilTv^A%uYB_4_D4cPUUDOBS38l1`fcO8aa{ z%2k# isES{HxOirAp=bA=r)AXSfkn>G1xv(|+?B|dy}tp^WpN7t literal 0 HcmV?d00001 diff --git a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java index 150cda0cb..830fce63f 100644 --- a/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java +++ b/forge/src/main/java/whocraft/tardis_refined/common/data/LangProviderEnglish.java @@ -111,6 +111,9 @@ protected void addTranslations() { add(ModMessages.HANDBRAKE_WARNING, "Ship is in flight. Left click the handbrake to engage."); add(ModMessages.CONSOLE_NOT_IN_FLIGHT, "Cannot change consoles whilst in flight."); add(ModMessages.NO_END_DRAGON_PREVENTS, "A dragon prevents you from progressing to The End."); + add(ModMessages.TARDIS_IS_ON_THE_WAY, "TARDIS has been summoned and is on the way."); + add(ModMessages.LANDING_PAD_NOT_UNLOCKED, "Specified TARDIS rejected landing pad signal."); + add(ModMessages.LANDING_PAD_TRANSIENT, "Cannot summon TARDIS at this time."); /*Command*/ add(ModMessages.CMD_DIM_NOT_A_TARDIS, ChatFormatting.RED + "%s is not a TARDIS Dimension!"); @@ -193,6 +196,7 @@ protected void addTranslations() { /*Tool Tips*/ add(ModMessages.TOOLTIP_TARDIS_LIST_TITLE, "Key Set:"); add(ModMessages.CONTROL_DIMENSION_SELECTED, "Selected: %s"); + add(ModMessages.TOOLTIP_IN_FLIGHT, "In flight"); /*Config*/ add(ModMessages.CONFIG_IP_COMPAT, "Immersive Portals Compatibility?");