aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorDJtheRedstoner <52044242+DJtheRedstoner@users.noreply.github.com>2021-10-23 12:24:24 -0400
committerGitHub <noreply@github.com>2021-10-23 12:24:24 -0400
commit344eb03d32817ffa158bcbd88e932f05bb77c261 (patch)
treefbad3e417e19bcf5cfeb20d36e79aeb9fea849e1 /src/main
parent35f238d91b5f0bc3f16b0a30266dfe8054cd9203 (diff)
downloadSkytilsMod-344eb03d32817ffa158bcbd88e932f05bb77c261.tar.gz
SkytilsMod-344eb03d32817ffa158bcbd88e932f05bb77c261.tar.bz2
SkytilsMod-344eb03d32817ffa158bcbd88e932f05bb77c261.zip
improvements to rarity outline (#91)
- fix rendering in neu storage - use a mutex to prevent recursion - disable enchantment glint while rendering
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/skytils/skytilsmod/mixins/transformers/neu/MixinStorageOverlay.java52
-rw-r--r--src/main/java/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderItem.java7
-rw-r--r--src/main/kotlin/skytils/skytilsmod/mixins/hooks/renderer/RenderItemHook.kt4
-rw-r--r--src/main/kotlin/skytils/skytilsmod/utils/ItemUtil.kt8
-rw-r--r--src/main/kotlin/skytils/skytilsmod/utils/RenderUtil.kt30
-rw-r--r--src/main/resources/mixins.skytils.json1
6 files changed, 81 insertions, 21 deletions
diff --git a/src/main/java/skytils/skytilsmod/mixins/transformers/neu/MixinStorageOverlay.java b/src/main/java/skytils/skytilsmod/mixins/transformers/neu/MixinStorageOverlay.java
new file mode 100644
index 00000000..35835951
--- /dev/null
+++ b/src/main/java/skytils/skytilsmod/mixins/transformers/neu/MixinStorageOverlay.java
@@ -0,0 +1,52 @@
+/*
+ * Skytils - Hypixel Skyblock Quality of Life Mod
+ * Copyright (C) 2021 Skytils
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published
+ * by the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package skytils.skytilsmod.mixins.transformers.neu;
+
+import net.minecraft.client.shader.Framebuffer;
+import org.objectweb.asm.Opcodes;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Pseudo;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Pseudo
+@Mixin(targets = "io.github.moulberry.notenoughupdates.miscgui.StorageOverlay")
+public class MixinStorageOverlay {
+
+ @Shadow(remap = false)
+ private Framebuffer framebuffer;
+
+ @SuppressWarnings({"UnresolvedMixinReference", "UnqualifiedMemberReference"})
+ @Inject(
+ method = "render",
+ at = @At(
+ value = "FIELD",
+ target = "Lio/github/moulberry/notenoughupdates/miscgui/StorageOverlay;framebuffer",
+ shift = At.Shift.AFTER,
+ opcode = Opcodes.PUTFIELD
+ ),
+ remap = false
+ )
+ public void onSetFramebuffer(CallbackInfo ci) {
+ framebuffer.enableStencil();
+ }
+
+}
diff --git a/src/main/java/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderItem.java b/src/main/java/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderItem.java
index 2d20cf72..d1eca0ba 100644
--- a/src/main/java/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderItem.java
+++ b/src/main/java/skytils/skytilsmod/mixins/transformers/renderer/MixinRenderItem.java
@@ -50,4 +50,11 @@ public abstract class MixinRenderItem {
RenderItemHookKt.modifyGlintRendering(stack, model, ci);
}
+ @Inject(method = "renderEffect", at = @At("HEAD"), cancellable = true)
+ public void onRenderEffect(CallbackInfo ci) {
+ if (RenderItemHookKt.getSkipGlint()) {
+ ci.cancel();
+ }
+ }
+
}
diff --git a/src/main/kotlin/skytils/skytilsmod/mixins/hooks/renderer/RenderItemHook.kt b/src/main/kotlin/skytils/skytilsmod/mixins/hooks/renderer/RenderItemHook.kt
index 4b267b21..8181e421 100644
--- a/src/main/kotlin/skytils/skytilsmod/mixins/hooks/renderer/RenderItemHook.kt
+++ b/src/main/kotlin/skytils/skytilsmod/mixins/hooks/renderer/RenderItemHook.kt
@@ -40,12 +40,12 @@ import skytils.skytilsmod.utils.Utils
val RES_ITEM_GLINT = ResourceLocation("textures/misc/enchanted_item_glint.png")
+var skipGlint = false
+
fun renderRarity(stack: ItemStack, x: Int, y: Int, ci: CallbackInfo) {
if (Utils.inSkyblock && Skytils.config.showItemRarity) {
if (mc.currentScreen != null) {
if (isStorageMenuActive || isTradeWindowActive || isCustomAHActive) {
- // TODO Fix items not rendering in neu storage overlay
- if (stack.hasTagCompound() && stack.tagCompound.getBoolean("ignoreForRarity")) return
renderRarity(stack, x, y)
}
}
diff --git a/src/main/kotlin/skytils/skytilsmod/utils/ItemUtil.kt b/src/main/kotlin/skytils/skytilsmod/utils/ItemUtil.kt
index 3943aa6e..98fa4935 100644
--- a/src/main/kotlin/skytils/skytilsmod/utils/ItemUtil.kt
+++ b/src/main/kotlin/skytils/skytilsmod/utils/ItemUtil.kt
@@ -215,12 +215,4 @@ object ItemUtil {
return nbt.getCompoundTag("SkullOwner").getCompoundTag("Properties")
.getTagList("textures", Constants.NBT.TAG_COMPOUND).getCompoundTagAt(0).getString("Value")
}
-
- fun removeEnchants(item: ItemStack): ItemStack {
- val nbt = item.tagCompound ?: return item
- if (!nbt.hasKey("ench", 9)) return item
- nbt.removeTag("ench")
- item.tagCompound = nbt
- return item
- }
} \ No newline at end of file
diff --git a/src/main/kotlin/skytils/skytilsmod/utils/RenderUtil.kt b/src/main/kotlin/skytils/skytilsmod/utils/RenderUtil.kt
index 56443eaa..b17cc9a1 100644
--- a/src/main/kotlin/skytils/skytilsmod/utils/RenderUtil.kt
+++ b/src/main/kotlin/skytils/skytilsmod/utils/RenderUtil.kt
@@ -32,8 +32,10 @@ import net.minecraft.util.*
import org.lwjgl.opengl.GL11
import skytils.skytilsmod.Skytils
import skytils.skytilsmod.Skytils.Companion.mc
+import skytils.skytilsmod.mixins.hooks.renderer.skipGlint
import skytils.skytilsmod.mixins.transformers.accessors.AccessorMinecraft
import java.awt.Color
+import java.util.concurrent.locks.ReentrantLock
import kotlin.math.cos
import kotlin.math.roundToInt
import kotlin.math.sin
@@ -46,6 +48,7 @@ object RenderUtil {
private val RARITY4 = ResourceLocation("skytils", "gui/rarity4.png")
private val CUSTOMRARITY = ResourceLocation("skytils", "gui/customrarity.png")
private val beaconBeam = ResourceLocation("textures/entity/beacon_beam.png")
+ private val mutex = ReentrantLock()
/**
* Taken from NotEnoughUpdates under Creative Commons Attribution-NonCommercial 3.0
@@ -475,7 +478,11 @@ object RenderUtil {
if (!Skytils.config.showPetRarity && ItemUtil.isPet(itemStack)) {
return
} else {
- renderRarity(xPos, yPos, itemStack)
+ if (!mutex.isLocked) {
+ mutex.lock()
+ renderRarity(xPos, yPos, itemStack)
+ mutex.unlock()
+ }
}
}
}
@@ -560,24 +567,25 @@ object RenderUtil {
val scale: Double = 1.2
GlStateManager.translate(
- xPos.toFloat() - scale * scale,
- yPos.toFloat() - scale * scale,
+ xPos.toDouble(),
+ yPos.toDouble(),
0.0
)
+
+ GlStateManager.pushMatrix()
+ GlStateManager.translate(8.0, 8.0, 0.0)
GlStateManager.scale(scale, scale, 0.0)
- renderItem(ItemUtil.removeEnchants(itemStack.copy().also { it.tagCompound.setBoolean("ignoreForRarity", true) }), 0, 0)
+ GlStateManager.translate(-8.0, -8.0, 0.0)
+ skipGlint = true
+ renderItem(itemStack, 0, 0)
+ skipGlint = false
+ GlStateManager.popMatrix()
- GlStateManager.scale(1 / scale, 1 / scale, 0.0)
- GL11.glColorMask(true, true, true, false)
+ GL11.glColorMask(true, true, true, true)
GL11.glStencilMask(0x00) // Writing = OFF
GL11.glStencilFunc(GL11.GL_NOTEQUAL, 0, 0xFF) // Anything that wasn't defined above will not be rendered.
//Anything rendered here will be cut if goes beyond frame defined before.
- GlStateManager.translate(
- scale - 1,
- scale - 1,
- 0.0
- )
Gui.drawRect(
1, 1, 17, 17,
Color(
diff --git a/src/main/resources/mixins.skytils.json b/src/main/resources/mixins.skytils.json
index 8684fa3c..df3dd1b2 100644
--- a/src/main/resources/mixins.skytils.json
+++ b/src/main/resources/mixins.skytils.json
@@ -40,6 +40,7 @@
"network.MixinNetworkManager",
"neu.MixinGuiProfileViewer",
"neu.MixinStorageManager",
+ "neu.MixinStorageOverlay",
"neu.MixinTradeWindow",
"patcher.MixinFontRendererHook",
"renderer.MixinBlockRendererDispatcher",