diff options
author | Alexey Krainev <xmrvizzy@ya.ru> | 2021-01-04 02:04:35 +0500 |
---|---|---|
committer | Alexey Krainev <xmrvizzy@ya.ru> | 2021-01-04 02:04:35 +0500 |
commit | 83918b58ef710f5e425ff6b5577f43382921300f (patch) | |
tree | dc28677ffd6088c629afd4ca2de6b48b82680817 | |
parent | 86f99ac522624f6e99f45bb252c51cc6935658e0 (diff) | |
download | Skyblocker-83918b58ef710f5e425ff6b5577f43382921300f.tar.gz Skyblocker-83918b58ef710f5e425ff6b5577f43382921300f.tar.bz2 Skyblocker-83918b58ef710f5e425ff6b5577f43382921300f.zip |
v1.0.1
-rw-r--r-- | build.gradle | 3 | ||||
-rw-r--r-- | gradle.properties | 2 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java | 2 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 12 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/ChatHudListenerMixin.java | 48 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/InGameHudMixin.java | 124 | ||||
-rw-r--r-- | src/main/resources/assets/skyblocker/lang/en_us.json | 9 | ||||
-rw-r--r-- | src/main/resources/assets/skyblocker/lang/ru_ru.json | 9 | ||||
-rw-r--r-- | src/main/resources/fabric.mod.json | 4 |
9 files changed, 142 insertions, 71 deletions
diff --git a/build.gradle b/build.gradle index 15c18c00..721bdc7f 100644 --- a/build.gradle +++ b/build.gradle @@ -22,9 +22,6 @@ dependencies { // Fabric API modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" - // StopModReposts - include "org.stopmodreposts:Splash-Screen-Mod-Fabric:1.0.1" - // Cloth API include "me.shedaniel.cloth:config-2:4.8.3" modApi("me.shedaniel.cloth:config-2:4.8.3") { diff --git a/gradle.properties b/gradle.properties index fa78f16d..1643f0ee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,6 +7,6 @@ loader_version=0.10.8 fabric_api_version=0.28.3+1.16 # Mod Properties -mod_version = 1.0.0 +mod_version = 1.0.1 maven_group = me.xmrvizzy archives_base_name = skyblocker diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java index 65d207c1..8fb35a60 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java @@ -1,7 +1,7 @@ package me.xmrvizzy.skyblocker; -import net.fabricmc.api.ClientModInitializer; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import net.fabricmc.api.ClientModInitializer; public class SkyblockerMod implements ClientModInitializer { public static final String NAMESPACE = "skyblocker"; diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index cc3131b2..d38d04a6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -17,6 +17,10 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.TransitiveObject public Bars bars = new Bars(); + @ConfigEntry.Category("dungeons") + @ConfigEntry.Gui.TransitiveObject + public Dungeons dungeons = new Dungeons(); + @ConfigEntry.Category("messages") @ConfigEntry.Gui.TransitiveObject public Messages messages = new Messages(); @@ -36,11 +40,17 @@ public class SkyblockerConfig implements ConfigData { public int manaColor = 0x55ffff; } + public static class Dungeons { + public boolean enableMap = false; + public boolean solveThreeWeirdos = false; + } + public static class Messages { public boolean hideAbility = false; public boolean hideHeal = false; public boolean hideAOTE = false; - public boolean hideMidasStaff = false; + public boolean hideImplosion = false; + public boolean hideMoltenWave = false; } public static void init() { 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 diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index cbd23bb1..ec67ccf3 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -2,7 +2,7 @@ "text.autoconfig.skyblocker.title": "Skyblocker Settings", "text.autoconfig.skyblocker.category.general": "General", - "text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API Key", + "text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API Key (WIP)", "text.autoconfig.skyblocker.category.bars": "Bars", "text.autoconfig.skyblocker.option.bars.enableBars": "Enable Health & Mana Bars", @@ -11,9 +11,14 @@ "text.autoconfig.skyblocker.option.bars.healthColor": "Health Color", "text.autoconfig.skyblocker.option.bars.manaColor": "Mana Color", + "text.autoconfig.skyblocker.category.dungeons": "Dungeons", + "text.autoconfig.skyblocker.option.dungeons.enableMap": "Enable Map", + "text.autoconfig.skyblocker.option.dungeons.solveThreeWeirdos": "Solve Three Weirdos Puzzle", + "text.autoconfig.skyblocker.category.messages": "Messages", "text.autoconfig.skyblocker.option.messages.hideAbility": "Hide Ability Cooldown", "text.autoconfig.skyblocker.option.messages.hideHeal": "Hide Heal Messages", "text.autoconfig.skyblocker.option.messages.hideAOTE": "Hide AOTE Messages", - "text.autoconfig.skyblocker.option.messages.hideMidasStaff": "Hide Midas Staff Messages" + "text.autoconfig.skyblocker.option.messages.hideImplosion": "Hide Implosion Message", + "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Hide Molten Wave Message" }
\ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/lang/ru_ru.json b/src/main/resources/assets/skyblocker/lang/ru_ru.json index efb6b5d8..7e82bf50 100644 --- a/src/main/resources/assets/skyblocker/lang/ru_ru.json +++ b/src/main/resources/assets/skyblocker/lang/ru_ru.json @@ -2,7 +2,7 @@ "text.autoconfig.skyblocker.title": "Настройки Skyblocker", "text.autoconfig.skyblocker.category.general": "Основные", - "text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API-ключ", + "text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API-ключ (В РАЗРАБОТКЕ)", "text.autoconfig.skyblocker.category.bars": "Бары", "text.autoconfig.skyblocker.option.bars.enableBars": "Включить бары здоровья и маны", @@ -11,9 +11,14 @@ "text.autoconfig.skyblocker.option.bars.healthColor": "Цвет здоровья", "text.autoconfig.skyblocker.option.bars.manaColor": "Цвет маны", + "text.autoconfig.skyblocker.category.dungeons": "Подземелья", + "text.autoconfig.skyblocker.option.dungeons.enableMap": "Включить карту", + "text.autoconfig.skyblocker.option.dungeons.solveThreeWeirdos": "Решить загадку \"Три чудака\"", + "text.autoconfig.skyblocker.category.messages": "Сообщения", "text.autoconfig.skyblocker.option.messages.hideAbility": "Скрыть откат способностей", "text.autoconfig.skyblocker.option.messages.hideHeal": "Скрыть сообщения об исцелении", "text.autoconfig.skyblocker.option.messages.hideAOTE": "Скрыть сообщения от \"AOTE\"", - "text.autoconfig.skyblocker.option.messages.hideMidasStaff": "Скрыть сообщения от \"Midas Staff\"" + "text.autoconfig.skyblocker.option.messages.hideImplosion": "Скрыть сообщение \"Implosion\"", + "text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Скрыть сообщение \"Molten Wave\"" }
\ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8f178ef9..53050b9e 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,8 +27,6 @@ "fabric": "*" }, "custom": { - "modmenu:clientsideOnly": true, - "stopmodreposts:showToast": true, - "stopmodreposts:showButton": true + "modmenu:clientsideOnly": true } } |