aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/mixin
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java48
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java124
2 files changed, 114 insertions, 58 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
index f6975243..4851325a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java
@@ -1,39 +1,61 @@
package me.xmrvizzy.skyblocker.mixin;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.hud.ChatHudListener;
import net.minecraft.network.MessageType;
import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
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.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import java.util.UUID;
@Mixin(ChatHudListener.class)
public class ChatHudListenerMixin {
+ private static String[] threeWeirdos = {
+ "The reward is not in my chest!",
+ "At least one of them is lying, and the reward is not in",
+ "My chest doesn't have the reward. We are all telling the truth.",
+ "My chest has the reward and I'm telling the truth!",
+ "The reward isn't in any of our chests.",
+ "Both of them are telling the truth. Also,"
+ };
+
+ @ModifyVariable(method = "onChatMessage(Lnet/minecraft/network/MessageType;Lnet/minecraft/text/Text;Ljava/util/UUID;)V", at = @At("HEAD"), ordinal = 0)
+ public Text modifyMessage(Text message) {
+ String msg = message.getString();
+
+ if (SkyblockerConfig.get().dungeons.solveThreeWeirdos && msg.contains("[NPC]")) {
+ for (String s : threeWeirdos) {
+ if (msg.contains(s)) {
+ return Text.of(msg.replaceFirst("§c", "§a"));
+ }
+ }
+ }
+
+ return message;
+ }
+
@Inject(method = "onChatMessage", at = @At("HEAD"), cancellable = true)
- public void onChatMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) {
- // Ability Cooldown
- if (SkyblockerConfig.get().messages.hideAbility && message.getString().contains("This ability is currently on cooldown for ") || message.getString().contains("No more charges, next one in ")) {
+ public void onMessage(MessageType messageType, Text message, UUID senderUuid, CallbackInfo ci) {
+ if (SkyblockerConfig.get().messages.hideAbility && message.getString().contains("This ability is currently on cooldown for ") || message.getString().contains("No more charges, next one in "))
ci.cancel();
- }
- // Heal Message
- if (SkyblockerConfig.get().messages.hideHeal && message.getString().contains("You healed ") && message.getString().contains(" health!") || message.getString().contains(" healed you for ")) {
+ if (SkyblockerConfig.get().messages.hideHeal && message.getString().contains("You healed ") && message.getString().contains(" health!") || message.getString().contains(" healed you for "))
ci.cancel();
- }
- // AOTE
- if (SkyblockerConfig.get().messages.hideAOTE && message.getString().contains("There are blocks in the way!")) {
+ if (SkyblockerConfig.get().messages.hideAOTE && message.getString().contains("There are blocks in the way!"))
ci.cancel();
- }
- // Midas Staff
- if (SkyblockerConfig.get().messages.hideMidasStaff && message.getString().contains("Your Molten Wave hit ")) {
+ if (SkyblockerConfig.get().messages.hideImplosion && message.getString().contains("Your Implosion hit "))
+ ci.cancel();
+
+ if (SkyblockerConfig.get().messages.hideMoltenWave && message.getString().contains("Your Molten Wave hit "))
ci.cancel();
- }
}
} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
index faa80e2b..65acd522 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java
@@ -1,13 +1,22 @@
package me.xmrvizzy.skyblocker.mixin;
import com.mojang.blaze3d.systems.RenderSystem;
+import me.xmrvizzy.skyblocker.SkyblockerMod;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawableHelper;
+import net.minecraft.client.gui.MapRenderer;
import net.minecraft.client.gui.hud.InGameHud;
+import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.util.math.MatrixStack;
+import net.minecraft.item.FilledMapItem;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.map.MapState;
+import net.minecraft.nbt.CompoundTag;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import org.spongepowered.asm.mixin.Final;
@@ -17,9 +26,6 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
-import me.xmrvizzy.skyblocker.SkyblockerMod;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-import me.xmrvizzy.skyblocker.utils.Utils;
import java.awt.*;
@@ -76,41 +82,15 @@ public abstract class InGameHudMixin extends DrawableHelper {
@Inject(method = "renderStatusBars", at = @At("HEAD"), cancellable = true)
private void renderStatusBars(MatrixStack matrices, CallbackInfo ci) {
- if (Utils.isSkyblock() && SkyblockerConfig.get().bars.enableBars) {
- ci.cancel();
-
- this.client.getTextureManager().bindTexture(ICONS);
- this.client.getProfiler().push("skyblockBars");
- {
- int left = this.scaledWidth / 2 - 91;
- int hpWidth = getWidth(hpCurrent, hpMax);
- int manaWidth = getWidth(manaCurrent, manaMax);
-
- if (hpColor.equals("§6") && SkyblockerConfig.get().bars.enableAbsorption) {
- renderBar(matrices, left, hpWidth, SkyblockerConfig.get().bars.absorbedHealthColor);
- } else {
- renderBar(matrices, left, hpWidth, SkyblockerConfig.get().bars.healthColor);
- }
- renderBar(matrices, left + 71 + 40, manaWidth, SkyblockerConfig.get().bars.manaColor);
+ if (Utils.isSkyblock()) {
+ if (SkyblockerConfig.get().dungeons.enableMap) {
+ renderDungeonMap(matrices);
}
- this.client.getProfiler().pop();
-
- this.client.getProfiler().push("skyblockTexts");
- {
- int left = this.scaledWidth / 2 - 90;
- String hpText = hpCurrent + "/" + hpMax;
- String manaText = manaCurrent + "/" + manaMax;
- int hpOffset = (71 - this.getFontRenderer().getWidth(hpText)) / 2;
- int manaOffset = (71 - this.getFontRenderer().getWidth(manaText)) / 2;
-
- if (hpColor.equals("§6") && SkyblockerConfig.get().bars.enableAbsorption) {
- renderText(matrices, hpText, left + hpOffset, SkyblockerConfig.get().bars.absorbedHealthColor);
- } else {
- renderText(matrices, hpText, left + hpOffset, SkyblockerConfig.get().bars.healthColor);
- }
- renderText(matrices, manaText, left + 71 + 40 + manaOffset, SkyblockerConfig.get().bars.manaColor);
+
+ if (SkyblockerConfig.get().bars.enableBars) {
+ ci.cancel();
+ renderBars(matrices);
}
- this.client.getProfiler().pop();
this.client.getTextureManager().bindTexture(DrawableHelper.GUI_ICONS_TEXTURE);
}
@@ -123,18 +103,59 @@ public abstract class InGameHudMixin extends DrawableHelper {
}
}
- private int getWidth(int current, int max) {
- int width = 0;
- if (current != 0) {
- if (current > max) {
- width = 71;
+
+ private void renderDungeonMap(MatrixStack matrices) {
+ ItemStack item = this.client.player.inventory.main.get(8);
+ CompoundTag tag = item.getTag();
+
+ if (tag != null && tag.contains("map")) {
+ VertexConsumerProvider.Immediate vertices = this.client.getBufferBuilders().getEffectVertexConsumers();
+ MapRenderer map = this.client.gameRenderer.getMapRenderer();
+ MapState state = FilledMapItem.getMapState(item, this.client.world);
+
+ if (state == null) return;
+ matrices.push();
+ matrices.translate(2, 2, 0);
+ matrices.scale(1, 1, 0);
+ map.draw(matrices, vertices, state, false, 15728880);
+ vertices.draw();
+ matrices.pop();
+ }
+ }
+
+ private void renderBars(MatrixStack matrices) {
+ this.client.getTextureManager().bindTexture(ICONS);
+ this.client.getProfiler().push("skyblockBars");
+ {
+ int left = this.scaledWidth / 2 - 91;
+ int hpWidth = getWidth(hpCurrent, hpMax);
+ int manaWidth = getWidth(manaCurrent, manaMax);
+
+ if (hpColor.equals("§6") && SkyblockerConfig.get().bars.enableAbsorption) {
+ renderBar(matrices, left, hpWidth, SkyblockerConfig.get().bars.absorbedHealthColor);
} else {
- width = current * 71 / max;
+ renderBar(matrices, left, hpWidth, SkyblockerConfig.get().bars.healthColor);
}
- } else {
- width = 0;
+ renderBar(matrices, left + 71 + 40, manaWidth, SkyblockerConfig.get().bars.manaColor);
}
- return width;
+ this.client.getProfiler().pop();
+
+ this.client.getProfiler().push("skyblockTexts");
+ {
+ int left = this.scaledWidth / 2 - 90;
+ String hpText = hpCurrent + "/" + hpMax;
+ String manaText = manaCurrent + "/" + manaMax;
+ int hpOffset = (71 - this.getFontRenderer().getWidth(hpText)) / 2;
+ int manaOffset = (71 - this.getFontRenderer().getWidth(manaText)) / 2;
+
+ if (hpColor.equals("§6") && SkyblockerConfig.get().bars.enableAbsorption) {
+ renderText(matrices, hpText, left + hpOffset, SkyblockerConfig.get().bars.absorbedHealthColor);
+ } else {
+ renderText(matrices, hpText, left + hpOffset, SkyblockerConfig.get().bars.healthColor);
+ }
+ renderText(matrices, manaText, left + 71 + 40 + manaOffset, SkyblockerConfig.get().bars.manaColor);
+ }
+ this.client.getProfiler().pop();
}
private void renderBar(MatrixStack matrices, int left, int filled, int color) {
@@ -163,4 +184,17 @@ public abstract class InGameHudMixin extends DrawableHelper {
this.getFontRenderer().draw(matrices, str, (float) left, (float) top, color);
}
+ private int getWidth(int current, int max) {
+ int width = 0;
+ if (current != 0) {
+ if (current > max) {
+ width = 71;
+ } else {
+ width = current * 71 / max;
+ }
+ } else {
+ width = 0;
+ }
+ return width;
+ }
} \ No newline at end of file