From ebdcfa85d35fd813c5cfd639a310b85e2d03a79f Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Mon, 15 Apr 2024 17:49:46 +0200 Subject: Add mineshaft exit waypoints (#1098) --- .../options/separatesections/Mining.java | 7 +++ .../miscfeatures/GlaciteMineshaftWaypoints.kt | 61 ++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/GlaciteMineshaftWaypoints.kt diff --git a/src/main/java/io/github/moulberry/notenoughupdates/options/separatesections/Mining.java b/src/main/java/io/github/moulberry/notenoughupdates/options/separatesections/Mining.java index c3d9b88d..2228aa64 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/options/separatesections/Mining.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/options/separatesections/Mining.java @@ -940,4 +940,11 @@ public class Mining { @ConfigEditorBoolean public boolean mithrilSounds = false; + @Expose + @ConfigOption( + name = "Mineshaft Exit Waypoint", + desc = "Show a waypoint towards the exit of a Glacite Mineshaft" + ) + @ConfigEditorBoolean + public boolean mineshaftExitWaypoint = true; } diff --git a/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/GlaciteMineshaftWaypoints.kt b/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/GlaciteMineshaftWaypoints.kt new file mode 100644 index 00000000..d8e39daa --- /dev/null +++ b/src/main/kotlin/io/github/moulberry/notenoughupdates/miscfeatures/GlaciteMineshaftWaypoints.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2024 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see . + */ + +package io.github.moulberry.notenoughupdates.miscfeatures + +import io.github.moulberry.notenoughupdates.NotEnoughUpdates +import io.github.moulberry.notenoughupdates.autosubscribe.NEUAutoSubscribe +import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils +import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.LocationChangeEvent +import net.minecraft.client.Minecraft +import net.minecraft.util.BlockPos +import net.minecraftforge.client.event.RenderWorldLastEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +@NEUAutoSubscribe +class GlaciteMineshaftWaypoints { + + var entrance: BlockPos? = null + fun isEnabled() = NotEnoughUpdates.INSTANCE.config.mining.mineshaftExitWaypoint + + @SubscribeEvent + fun onLocationChange(event: LocationChangeEvent) { + entrance = if (event.newLocation == "mineshaft") { + Minecraft.getMinecraft().thePlayer?.position + } else { + null + } + } + + @SubscribeEvent + fun onRenderLast(event: RenderWorldLastEvent) { + if (!isEnabled()) return + val pos = entrance ?: return + RenderUtils.renderBoundingBox( + pos, + 0x7020CC00, + event.partialTicks, + true + ) + RenderUtils.renderWayPoint( + "§aExit", pos.up(1), + event.partialTicks + ) + } +} -- cgit