aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoringlettronald <inglettronald@gmail.com>2023-03-21 01:15:45 -0500
committeringlettronald <inglettronald@gmail.com>2023-03-21 01:15:45 -0500
commite1a4e3db0b3033b4099d77f0bb7d08b60f2c7a73 (patch)
tree6e04ef5c15c4c53f38e44981b1660b9e5e0ab667
parentd78b2e302f3dd94afb34c62e5fa282a0b10e6bbf (diff)
downloadDulkirMod-e1a4e3db0b3033b4099d77f0bb7d08b60f2c7a73.tar.gz
DulkirMod-e1a4e3db0b3033b4099d77f0bb7d08b60f2c7a73.tar.bz2
DulkirMod-e1a4e3db0b3033b4099d77f0bb7d08b60f2c7a73.zip
dragon stuff and some random things i forget
-rw-r--r--src/main/java/dulkirmod/mixins/MixinItem.java19
-rw-r--r--src/main/java/dulkirmod/mixins/MixinItemRenderer.java2
-rw-r--r--src/main/java/dulkirmod/mixins/MixinWorld.java6
-rw-r--r--src/main/kotlin/dulkirmod/DulkirMod.kt9
-rw-r--r--src/main/kotlin/dulkirmod/command/SpawnParticlesCommand.kt14
-rw-r--r--src/main/kotlin/dulkirmod/config/Config.kt24
-rw-r--r--src/main/kotlin/dulkirmod/features/ArachneTimer.kt2
-rw-r--r--src/main/kotlin/dulkirmod/features/DragonTimer.kt136
-rw-r--r--src/main/kotlin/dulkirmod/features/ItemAnimations.kt2
-rw-r--r--src/main/kotlin/dulkirmod/features/KeeperWaypoints.kt18
-rw-r--r--src/main/kotlin/dulkirmod/features/chat/FakeMsg.kt2
-rw-r--r--src/main/kotlin/dulkirmod/utils/ScoreBoardUtils.kt24
-rw-r--r--src/main/kotlin/dulkirmod/utils/WorldRenderUtils.kt60
-rw-r--r--src/main/resources/mixins.dulkirmod.json1
14 files changed, 300 insertions, 19 deletions
diff --git a/src/main/java/dulkirmod/mixins/MixinItem.java b/src/main/java/dulkirmod/mixins/MixinItem.java
new file mode 100644
index 0000000..d3cb421
--- /dev/null
+++ b/src/main/java/dulkirmod/mixins/MixinItem.java
@@ -0,0 +1,19 @@
+package dulkirmod.mixins;
+
+import dulkirmod.DulkirMod;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
+
+@Mixin(value = {Item.class})
+public class MixinItem {
+
+ @Inject(method = "shouldCauseReequipAnimation", at = @At("HEAD"), cancellable = true, remap = false)
+ public void overrideReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged, CallbackInfoReturnable<Boolean> ci) {
+ if (DulkirMod.Companion.getConfig().getCancelReequip())
+ ci.setReturnValue(false);
+ }
+}
diff --git a/src/main/java/dulkirmod/mixins/MixinItemRenderer.java b/src/main/java/dulkirmod/mixins/MixinItemRenderer.java
index a81e67d..3620817 100644
--- a/src/main/java/dulkirmod/mixins/MixinItemRenderer.java
+++ b/src/main/java/dulkirmod/mixins/MixinItemRenderer.java
@@ -12,7 +12,7 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-@Mixin(value = {ItemRenderer.class})
+@Mixin(value = {ItemRenderer.class}, priority = 1010)
public class MixinItemRenderer {
@Shadow @Final private RenderItem itemRenderer;
diff --git a/src/main/java/dulkirmod/mixins/MixinWorld.java b/src/main/java/dulkirmod/mixins/MixinWorld.java
index 1502e38..cdbe9ae 100644
--- a/src/main/java/dulkirmod/mixins/MixinWorld.java
+++ b/src/main/java/dulkirmod/mixins/MixinWorld.java
@@ -1,18 +1,20 @@
package dulkirmod.mixins;
+import dulkirmod.DulkirMod;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import dulkirmod.DulkirMod;
@Mixin(World.class)
public class MixinWorld {
@Inject(method = "spawnParticle(IZDDDDDD[I)V", at = @At("HEAD"), cancellable = true)
- public void onInitGui(int particleID, boolean p_175720_2_, double xCood, double yCoord, double zCoord,
+ public void onInitGui(int particleID, boolean p_175720_2_, double xCoord, double yCoord, double zCoord,
double xOffset, double yOffset, double zOffset, int[] p_175720_15_, CallbackInfo ci) {
+ DulkirMod.Companion.getDragonTimer().handleNewParticle(particleID, xCoord, yCoord, zCoord);
+
if (particleID == 25 && DulkirMod.Companion.getConfig().getHideEnchantRune()) {
ci.cancel();
} else if (particleID == 34 && DulkirMod.Companion.getConfig().getHideHeartParticles()) {
diff --git a/src/main/kotlin/dulkirmod/DulkirMod.kt b/src/main/kotlin/dulkirmod/DulkirMod.kt
index 4c94ae2..33fe338 100644
--- a/src/main/kotlin/dulkirmod/DulkirMod.kt
+++ b/src/main/kotlin/dulkirmod/DulkirMod.kt
@@ -5,10 +5,7 @@ import dulkirmod.config.Config
import dulkirmod.events.ChatEvent
import dulkirmod.features.*
import dulkirmod.features.chat.AbiphoneDND
-import dulkirmod.utils.ContainerNameUtil
-import dulkirmod.utils.TabListUtils
-import dulkirmod.utils.TextUtils
-import dulkirmod.utils.TitleUtils
+import dulkirmod.utils.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@@ -56,6 +53,7 @@ class DulkirMod {
ClientCommandHandler.instance.registerCommand(LeapNameCommand())
ClientCommandHandler.instance.registerCommand(HurtCamCommand())
ClientCommandHandler.instance.registerCommand(FarmingControlSchemeCommand())
+ ClientCommandHandler.instance.registerCommand(SpawnParticlesCommand())
}
@Mod.EventHandler
@@ -76,6 +74,7 @@ class DulkirMod {
mcBus.register(KeeperWaypoints())
mcBus.register(ScalableTooltips)
mcBus.register(GardenVisitorAlert())
+ mcBus.register(DragonTimer())
keyBinds.forEach(ClientRegistry::registerKeyBinding)
}
@@ -104,6 +103,7 @@ class DulkirMod {
// Now I don't have to fetch the entries for multiple things, this just updates and caches
// the data structure on 1s cooldown
TabListUtils.parseTabEntries()
+ ScoreBoardUtils.inM7()
lastLongUpdate = currTime
}
}
@@ -133,6 +133,7 @@ class DulkirMod {
val titleUtils = TitleUtils()
val matchoAlert = MatchoAlert()
val gardenVisitorAlert = GardenVisitorAlert()
+ val DragonTimer = DragonTimer()
var tabEntries: List<String?> = emptyList()
val keyBinds = arrayOf(
diff --git a/src/main/kotlin/dulkirmod/command/SpawnParticlesCommand.kt b/src/main/kotlin/dulkirmod/command/SpawnParticlesCommand.kt
new file mode 100644
index 0000000..88358a6
--- /dev/null
+++ b/src/main/kotlin/dulkirmod/command/SpawnParticlesCommand.kt
@@ -0,0 +1,14 @@
+package dulkirmod.command
+
+import dulkirmod.utils.TextUtils
+import net.minecraft.command.ICommandSender
+
+class SpawnParticlesCommand : ClientCommandBase("sp") {
+ override fun processCommand(sender: ICommandSender?, args: Array<out String>?) {
+ TextUtils.sendMessage("/particle flame 84 18 95 1 1 1 1 100")
+ TextUtils.sendMessage("/particle flame 57 18 125 1 1 1 1 100")
+ TextUtils.sendMessage("/particle flame 26 18 95 1 1 1 1 100")
+ TextUtils.sendMessage("/particle flame 27 18 60 1 1 1 1 100")
+ TextUtils.sendMessage("/particle flame 84 18 56 1 1 1 1 100")
+ }
+} \ No newline at end of file
diff --git a/src/main/kotlin/dulkirmod/config/Config.kt b/src/main/kotlin/dulkirmod/config/Config.kt
index 7f914e1..8fe611d 100644
--- a/src/main/kotlin/dulkirmod/config/Config.kt
+++ b/src/main/kotlin/dulkirmod/config/Config.kt
@@ -125,6 +125,22 @@ object Config : Vigilant(File("./config/dulkirmod/config.toml"), "DulkirMod", so
@Property(
type = PropertyType.SWITCH,
+ name = "M7 Dragon Timer",
+ description = "Helps u arrow stack ig",
+ category = "Dungeons"
+ )
+ var dragonTimer = true
+
+ @Property(
+ type = PropertyType.SWITCH,
+ name = "Better M7 Dragon Killbox",
+ description = "Mostly stolen from odin",
+ category = "Dungeons"
+ )
+ var dragonKillBox = true
+
+ @Property(
+ type = PropertyType.SWITCH,
name = "Hide Extra Nametags",
description = "Prevents some nametags not covered by skytils \"Hide non-starred nametags\" from rendering.",
category = "General"
@@ -570,6 +586,14 @@ object Config : Vigilant(File("./config/dulkirmod/config.toml"), "DulkirMod", so
)
var defaultSens = .7f
+ @Property(
+ type = PropertyType.SWITCH,
+ name = "Turn off re-equip animation",
+ description = "Will stop the spam re-equip when stuff like cultivating is updating",
+ category = "Animations"
+ )
+ var cancelReequip = false
+
fun init() {
initialize()
addDependency("customMessage", "throttleNotifier")
diff --git a/src/main/kotlin/dulkirmod/features/ArachneTimer.kt b/src/main/kotlin/dulkirmod/features/ArachneTimer.kt
index a4cfa1a..5c97c86 100644
--- a/src/main/kotlin/dulkirmod/features/ArachneTimer.kt
+++ b/src/main/kotlin/dulkirmod/features/ArachneTimer.kt
@@ -57,7 +57,7 @@ class ArachneTimer {
(18 - (System.currentTimeMillis() - spawnmillis) / 1000).toInt()
}
if (time < 0) time = 0
- WorldRenderUtils.render(Vec3(-282.5, 50.8, -178.5), "${color}${time}", false)
+ WorldRenderUtils.renderString(Vec3(-282.5, 50.8, -178.5), "${color}${time}", false)
}
}
} \ No newline at end of file
diff --git a/src/main/kotlin/dulkirmod/features/DragonTimer.kt b/src/main/kotlin/dulkirmod/features/DragonTimer.kt
new file mode 100644
index 0000000..459c291
--- /dev/null
+++ b/src/main/kotlin/dulkirmod/features/DragonTimer.kt
@@ -0,0 +1,136 @@
+package dulkirmod.features
+
+import dulkirmod.DulkirMod.Companion.mc
+import dulkirmod.config.Config
+import dulkirmod.utils.ScoreBoardUtils
+import dulkirmod.utils.WorldRenderUtils
+import net.minecraft.util.BlockPos
+import net.minecraft.util.Vec3
+import net.minecraft.world.World
+import net.minecraftforge.client.event.RenderWorldLastEvent
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import java.awt.Color
+import kotlin.math.max
+
+class DragonTimer {
+ data class Dragon (val color: String, val pos: Vec3, var spawnTime: Long)
+
+ companion object {
+ var dragons = arrayOf(
+ Dragon("orange", Vec3(84.0, 18.0, 56.0), 0),
+ Dragon("red", Vec3(27.0, 18.0, 56.0), 0),
+ Dragon("green", Vec3(26.0, 18.0, 95.0), 0),
+ Dragon("purple", Vec3(57.0, 18.0, 125.0), 0),
+ Dragon("blue", Vec3(84.0, 18.0, 95.0), 0)
+ )
+ }
+
+ /**
+ * Called from within the MixinWorld Class
+ */
+ fun handleNewParticle(particleID: Int, xCoord: Double, yCoord: Double, zCoord: Double) {
+ if (particleID != 26) return
+ // if (!TabListUtils.isInDungeons) return
+ if (!Config.dragonTimer) return
+ //TextUtils.info("§6particle id ${particleID} 175 = $p_175720_2_")
+
+ val particleVec = Vec3(xCoord, yCoord, zCoord)
+ for (d in dragons) {
+ if (inRangeOf(d.color, particleVec)) {
+ if (System.currentTimeMillis() - d.spawnTime > 10000) {
+ d.spawnTime = System.currentTimeMillis()
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onRenderWorld(event: RenderWorldLastEvent) {
+ val curTime: Long = System.currentTimeMillis()
+ // for some reason this really doesn't like the syntax for (d in dragons)
+ for (i in 0..4) {
+ // d.spawnTime + 5000 is when dragon actually spawn
+ val d = dragons[i]
+ if (d.spawnTime + 5000 > curTime) {
+ if (isDead(d.color))
+ return
+ val timeUntilSpawn: Float = ((d.spawnTime + 5000 - curTime).toFloat() / 1000f)
+ val color = when {
+ timeUntilSpawn <= 1 -> "§c"
+ timeUntilSpawn <= 3 -> "§e"
+ else -> "§a"
+ }
+ val playerVec = mc.thePlayer.positionVector
+ val scale = max(1f, playerVec.distanceTo(d.pos).toFloat()/5f)
+ WorldRenderUtils.renderString(d.pos, "${color}${String.format("%.2f", timeUntilSpawn)}",
+ false, scale, true)
+ }
+ }
+ }
+
+ /**
+ * true = dead
+ */
+ private fun isDead(color:String): Boolean {
+ val world: World = mc.theWorld
+ val pos = when (color) {
+ "orange" -> BlockPos(90, 21, 56)
+ "red" -> BlockPos(20,22,59)
+ "green" -> BlockPos(22,21,94)
+ "purple" -> BlockPos(56,20,130)
+ "blue" -> BlockPos(89,21,94)
+ else -> BlockPos(0,0,0)
+ }
+ return world.isAirBlock(pos)
+ }
+ private fun inRangeOf(color: String, pos: Vec3): Boolean {
+ when (color) {
+ "orange" -> {
+ return (pos.xCoord.toInt() in 82..88
+ && pos.yCoord.toInt() in 15..22
+ && pos.zCoord.toInt() in 53..59)
+ }
+ "red" -> {
+ return (pos.xCoord.toInt() in 24..30
+ && pos.yCoord.toInt() in 15..22
+ && pos.zCoord.toInt() in 56..62)
+ }
+ "green" -> {
+ return (pos.xCoord.toInt() in 23..29
+ && pos.yCoord.toInt() in 15..22
+ && pos.zCoord.toInt() in 91..97)
+ }
+ "purple" -> {
+ return (pos.xCoord.toInt() in 53..59
+ && pos.yCoord.toInt() in 15..22
+ && pos.zCoord.toInt() in 122..128)
+ }
+ "blue" -> {
+ return (pos.xCoord.toInt() in 82..88
+ && pos.yCoord.toInt() in 15..22
+ && pos.zCoord.toInt() in 91..97)
+ }
+ else -> {
+ return false
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun dragonBoxes(event: RenderWorldLastEvent) {
+ if (!Config.dragonKillBox) return
+ if (!ScoreBoardUtils.isInM7) return
+ if (mc.thePlayer.positionVector.yCoord > 45) return
+ // Blue
+ WorldRenderUtils.drawCustomBox(71.5, 25.0, 16.0, 10.0, 82.5, 25.0, Color(0, 170, 170, 255), 3f, phase = false)
+ // Purple
+ WorldRenderUtils.drawCustomBox(45.5, 23.0, 13.0, 10.0, 113.5, 23.0, Color(170, 0, 170, 255), 3f, phase = false)
+ // Green
+ WorldRenderUtils.drawCustomBox(7.0, 30.0, 8.0, 20.0, 80.0, 30.0, Color(85, 255, 85, 255), 3f, phase = false)
+ // Red
+ WorldRenderUtils.drawCustomBox(14.5, 25.0, 13.0, 15.0, 45.5, 25.0, Color(255, 85, 85, 255), 3f, phase = false)
+ // Orange
+ WorldRenderUtils.drawCustomBox(72.0, 30.0, 8.0, 20.0, 47.0, 30.0, Color(255, 170, 0, 255), 3f, phase = false)
+ }
+}
+
diff --git a/src/main/kotlin/dulkirmod/features/ItemAnimations.kt b/src/main/kotlin/dulkirmod/features/ItemAnimations.kt
index 7e9b85d..8fa55f2 100644
--- a/src/main/kotlin/dulkirmod/features/ItemAnimations.kt
+++ b/src/main/kotlin/dulkirmod/features/ItemAnimations.kt
@@ -19,6 +19,7 @@ import kotlin.math.pow
* @author Aton - THANK YOU
*/
object ItemAnimations {
+
/**
* Directly referenced hook for the itemTransform Inject in the ItemRenderer Mixin.
* Takes care of scaling and positioning the held item.
@@ -111,4 +112,5 @@ object ItemAnimations {
GlStateManager.translate(-newX, -newY, -newZ)
return true
}
+
} \ No newline at end of file
diff --git a/src/main/kotlin/dulkirmod/features/KeeperWaypoints.kt b/src/main/kotlin/dulkirmod/features/KeeperWaypoints.kt
index bb053a3..6e47a59 100644
--- a/src/main/kotlin/dulkirmod/features/KeeperWaypoints.kt
+++ b/src/main/kotlin/dulkirmod/features/KeeperWaypoints.kt
@@ -38,15 +38,15 @@ class KeeperWaypoints {
val scale9 = max(1f, playerVec.distanceTo(vec9).toFloat()/10f)
val color = Utils.getColorString(Config.bestiaryNotifColor)
- WorldRenderUtils.render(vec1, "${color}1", false, scale1, true)
- WorldRenderUtils.render(vec2, "${color}2", false, scale2, true)
- WorldRenderUtils.render(vec3, "${color}3", false, scale3, true)
- WorldRenderUtils.render(vec4, "${color}4", false, scale4, true)
- WorldRenderUtils.render(vec5, "${color}5", false, scale5, true)
- WorldRenderUtils.render(vec6, "${color}6", false, scale6, true)
- WorldRenderUtils.render(vec7, "${color}7", false, scale7, true)
- WorldRenderUtils.render(vec8, "${color}8", false, scale8, true)
- WorldRenderUtils.render(vec9, "${color}9", false, scale9, true)
+ WorldRenderUtils.renderString(vec1, "${color}1", false, scale1, true)
+ WorldRenderUtils.renderString(vec2, "${color}2", false, scale2, true)
+ WorldRenderUtils.renderString(vec3, "${color}3", false, scale3, true)
+ WorldRenderUtils.renderString(vec4, "${color}4", false, scale4, true)
+ WorldRenderUtils.renderString(vec5, "${color}5", false, scale5, true)
+ WorldRenderUtils.renderString(vec6, "${color}6", false, scale6, true)
+ WorldRenderUtils.renderString(vec7, "${color}7", false, scale7, true)
+ WorldRenderUtils.renderString(vec8, "${color}8", false, scale8, true)
+ WorldRenderUtils.renderString(vec9, "${color}9", false, scale9, true)
}
}
diff --git a/src/main/kotlin/dulkirmod/features/chat/FakeMsg.kt b/src/main/kotlin/dulkirmod/features/chat/FakeMsg.kt
index e1b618f..8e4d2dd 100644
--- a/src/main/kotlin/dulkirmod/features/chat/FakeMsg.kt
+++ b/src/main/kotlin/dulkirmod/features/chat/FakeMsg.kt
@@ -4,7 +4,7 @@ import dulkirmod.utils.TextUtils
import net.minecraftforge.client.event.ClientChatReceivedEvent
object FakeMsg {
- private val dulkirRegex = "From \\[MVP(\\+|\\+\\+)] Dulkir: c:".toRegex()
+ private val dulkirRegex = "^From \\[MVP(\\+|\\+\\+)] Dulkir: c:".toRegex()
fun handle(event: ClientChatReceivedEvent, unformatted: String) {
if (dulkirRegex.matches(unformatted)) {
event.isCanceled = true
diff --git a/src/main/kotlin/dulkirmod/utils/ScoreBoardUtils.kt b/src/main/kotlin/dulkirmod/utils/ScoreBoardUtils.kt
index 520c143..4db1046 100644
--- a/src/main/kotlin/dulkirmod/utils/ScoreBoardUtils.kt
+++ b/src/main/kotlin/dulkirmod/utils/ScoreBoardUtils.kt
@@ -5,6 +5,7 @@ import net.minecraft.scoreboard.Score
import net.minecraft.scoreboard.ScorePlayerTeam
object ScoreBoardUtils {
+ var isInM7: Boolean = false;
fun getLines(): MutableList<String> {
val scoreboard = DulkirMod.mc.thePlayer.worldScoreboard
val sidebarObjective = scoreboard.getObjectiveInDisplaySlot(1)
@@ -18,4 +19,27 @@ object ScoreBoardUtils {
}
return lines
}
+
+ fun inM7(): Boolean {
+ if (!Utils.isInSkyblock()) {
+ isInM7 = false
+ return false
+ }
+ val lines = getLines()
+ if (lines.size < 4) {
+ isInM7 = false
+ return false
+ }
+ val line = lines.getOrNull(3)
+ var unformattedText = line?.replace("\\p{So}|\\p{Sk}".toRegex(), "")
+ if (unformattedText != null) {
+ unformattedText = Utils.stripColorCodes(unformattedText)
+ }
+ if (unformattedText == " The Catacombs (M7)") {
+ isInM7 = true
+ return true
+ }
+ isInM7 = false
+ return false
+ }
} \ No newline at end of file
diff --git a/src/main/kotlin/dulkirmod/utils/WorldRenderUtils.kt b/src/main/kotlin/dulkirmod/utils/WorldRenderUtils.kt
index e0febdd..231ab3f 100644
--- a/src/main/kotlin/dulkirmod/utils/WorldRenderUtils.kt
+++ b/src/main/kotlin/dulkirmod/utils/WorldRenderUtils.kt
@@ -5,15 +5,22 @@ import net.minecraft.client.renderer.GlStateManager
import net.minecraft.client.renderer.GlStateManager.disableTexture2D
import net.minecraft.client.renderer.GlStateManager.enableTexture2D
import net.minecraft.client.renderer.Tessellator
+import net.minecraft.client.renderer.WorldRenderer
+import net.minecraft.client.renderer.entity.RenderManager
import net.minecraft.client.renderer.vertex.DefaultVertexFormats
import net.minecraft.util.Vec3
import org.lwjgl.opengl.GL11
+import java.awt.Color
class WorldRenderUtils {
+
companion object {
- fun render(
+ private val tessellator: Tessellator = Tessellator.getInstance()
+ private val worldRenderer: WorldRenderer = tessellator.worldRenderer
+ private val renderManager: RenderManager = mc.renderManager
+ fun renderString(
location: Vec3,
text: String,
depthTest: Boolean = true,
@@ -114,5 +121,56 @@ class WorldRenderUtils {
GL11.glDepthMask(true)
}
}
+
+
+ /**
+ * Courtesy of Odin, I could not be bothered to deal with rendering code.
+ */
+ fun drawCustomBox(x: Double, xWidth: Double, y: Double, yWidth: Double, z: Double, zWidth: Double, color: Color, thickness: Float = 3f, phase: Boolean) {
+ GlStateManager.pushMatrix()
+
+ GlStateManager.color(color.red.toFloat() / 255f, color.green.toFloat() / 255f, color.blue.toFloat() / 255f, 1f)
+ GlStateManager.translate(-renderManager.viewerPosX, -renderManager.viewerPosY, -renderManager.viewerPosZ)
+ GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
+ if (phase) GlStateManager.disableDepth()
+ disableTexture2D()
+ GlStateManager.disableLighting()
+ GlStateManager.enableBlend()
+
+ GL11.glLineWidth(thickness)
+
+ val x1 = x + xWidth
+ val y1 = y + yWidth
+ val z1 = z + zWidth
+
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION)
+ worldRenderer.pos(x1,y1,z1).endVertex()
+ worldRenderer.pos(x1,y1,z).endVertex()
+ worldRenderer.pos(x,y1,z).endVertex()
+ worldRenderer.pos(x,y1,z1).endVertex()
+ worldRenderer.pos(x1,y1,z1).endVertex()
+ worldRenderer.pos(x1,y,z1).endVertex()
+ worldRenderer.pos(x1,y,z).endVertex()
+ worldRenderer.pos(x,y,z).endVertex()
+ worldRenderer.pos(x,y,z1).endVertex()
+ worldRenderer.pos(x,y,z).endVertex()
+ worldRenderer.pos(x,y1,z).endVertex()
+ worldRenderer.pos(x,y,z).endVertex()
+ worldRenderer.pos(x1,y,z).endVertex()
+ worldRenderer.pos(x1,y1,z).endVertex()
+ worldRenderer.pos(x1,y,z).endVertex()
+ worldRenderer.pos(x1,y,z1).endVertex()
+ worldRenderer.pos(x,y,z1).endVertex()
+ worldRenderer.pos(x,y1,z1).endVertex()
+ worldRenderer.pos(x1,y1,z1).endVertex()
+
+ tessellator.draw()
+
+ enableTexture2D()
+ GlStateManager.disableBlend()
+ GlStateManager.enableDepth()
+
+ GlStateManager.popMatrix()
+ }
}
} \ No newline at end of file
diff --git a/src/main/resources/mixins.dulkirmod.json b/src/main/resources/mixins.dulkirmod.json
index c52d178..6fc520a 100644
--- a/src/main/resources/mixins.dulkirmod.json
+++ b/src/main/resources/mixins.dulkirmod.json
@@ -14,6 +14,7 @@
"MixinEntity",
"MixinEntityLivingBase",
"MixinGuiUtils",
+ "MixinItem",
"MixinOldAnimations",
"MixinWorld"
]