From e670718beb6463097ede5661dae59c0f9e4726e0 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Thu, 9 Dec 2021 19:51:35 +0100 Subject: support 1.18.x minecraft version and update to 1.4.2 [skip ci] --- .../xmrvizzy/skyblocker/utils/RenderUtilsLiving.java | 6 +++--- .../java/me/xmrvizzy/skyblocker/utils/Vertexer.java | 20 ++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java index f6fb1bc1..962421b7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/RenderUtilsLiving.java @@ -67,17 +67,17 @@ public class RenderUtilsLiving { if (fill) { int opacity = (int) (MinecraftClient.getInstance().options.getTextBackgroundOpacity(0.25F) * 255.0F) << 24; - mc.textRenderer.draw(text, -halfWidth, 0f, 553648127, false, matrices.peek().getModel(), immediate, true, opacity, 0xf000f0); + mc.textRenderer.draw(text, -halfWidth, 0f, 553648127, false, matrices.peek().getPositionMatrix(), immediate, true, opacity, 0xf000f0); immediate.draw(); } else { matrices.push(); matrices.translate(1, 1, 0); - mc.textRenderer.draw(text.copy(), -halfWidth, 0f, 0x202020, false, matrices.peek().getModel(), immediate, true, 0, 0xf000f0); + mc.textRenderer.draw(text.copy(), -halfWidth, 0f, 0x202020, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0); immediate.draw(); matrices.pop(); } - mc.textRenderer.draw(text, -halfWidth, 0f, -1, false, matrices.peek().getModel(), immediate, true, 0, 0xf000f0); + mc.textRenderer.draw(text, -halfWidth, 0f, -1, false, matrices.peek().getPositionMatrix(), immediate, true, 0, 0xf000f0); immediate.draw(); RenderSystem.disableBlend(); diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java index f9ac629e..12f4b0fd 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Vertexer.java @@ -57,17 +57,17 @@ public class Vertexer { int[] color = quadColor.getAllColors(); if (cullMode != CULL_FRONT) { - vertexConsumer.vertex(matrices.peek().getModel(), x1, y1, z1).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x2, y2, z2).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x3, y3, z3).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x4, y4, z4).color(color[12], color[13], color[14], color[15]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[0], color[1], color[2], color[3]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[4], color[5], color[6], color[7]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[8], color[9], color[10], color[11]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[12], color[13], color[14], color[15]).next(); } if (cullMode != CULL_BACK) { - vertexConsumer.vertex(matrices.peek().getModel(), x4, y4, z4).color(color[0], color[1], color[2], color[3]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x3, y3, z3).color(color[4], color[5], color[6], color[7]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x2, y2, z2).color(color[8], color[9], color[10], color[11]).next(); - vertexConsumer.vertex(matrices.peek().getModel(), x1, y1, z1).color(color[12], color[13], color[14], color[15]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x4, y4, z4).color(color[0], color[1], color[2], color[3]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x3, y3, z3).color(color[4], color[5], color[6], color[7]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x2, y2, z2).color(color[8], color[9], color[10], color[11]).next(); + vertexConsumer.vertex(matrices.peek().getPositionMatrix(), x1, y1, z1).color(color[12], color[13], color[14], color[15]).next(); } } @@ -132,8 +132,8 @@ public class Vertexer { } public static void vertexLine(MatrixStack matrices, VertexConsumer vertexConsumer, float x1, float y1, float z1, float x2, float y2, float z2, LineColor lineColor) { - Matrix4f model = matrices.peek().getModel(); - Matrix3f normal = matrices.peek().getNormal(); + Matrix4f model = matrices.peek().getPositionMatrix(); + Matrix3f normal = matrices.peek().getNormalMatrix(); Vec3f normalVec = getNormal(normal, x1, y1, z1, x2, y2, z2); -- cgit From b0e79e9d3e1fa4146c6bb87a2717fa2dda8e3d02 Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Sun, 12 Dec 2021 21:48:45 +0100 Subject: Merge pull request #28 --- .../xmrvizzy/skyblocker/chat/filters/AdFilter.java | 38 +++++++--------------- .../xmrvizzy/skyblocker/chat/ChatListenerTest.java | 27 ++++++++------- .../skyblocker/chat/filters/AbilityFilterTest.java | 6 ++-- .../skyblocker/chat/filters/AdFilterTest.java | 23 ++++++++----- .../skyblocker/chat/filters/AoteFilterTest.java | 4 +-- .../skyblocker/chat/filters/ChatFilterTest.java | 26 +++++++++++++++ .../skyblocker/chat/filters/HealFilterTest.java | 6 ++-- .../chat/filters/ImplosionFilterTest.java | 6 ++-- 8 files changed, 76 insertions(+), 60 deletions(-) create mode 100644 src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java index 16cb5fc3..cf13e26e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java +++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/AdFilter.java @@ -1,15 +1,17 @@ package me.xmrvizzy.skyblocker.chat.filters; -import me.xmrvizzy.skyblocker.chat.ChatListener; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import java.util.regex.Pattern; public class AdFilter extends ChatFilter { - private static final String regex; - + private static final Pattern[] AD_FILTERS = new Pattern[]{ + Pattern.compile("^(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|$)", Pattern.CASE_INSENSITIVE), + Pattern.compile("(.)\\1{7,}"), + Pattern.compile("\\W(?:on|in|check|at) my (?:ah|bin)(?:\\W|$)", Pattern.CASE_INSENSITIVE), + }; public AdFilter() { - super(regex); + super("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: (.*)$"); } @Override @@ -17,27 +19,11 @@ public class AdFilter extends ChatFilter { return SkyblockerConfig.get().messages.hideAds; } - static { - StringBuilder sb = new StringBuilder("^§[67ab](?:\\[(?:MVP|VIP)(?:§[0-9a-f]\\+{1,2}§[6ab])?] )?([a-zA-Z0-9_]{2,16})§[7f]: "); - String[] inexact = new String[] { - "(?:on|in|check|at) my ah", - "(?>(.)\\2{7,})", - }; - String[] exact = new String[]{ - "(?:i(?:m|'m| am)? |(?:is )?any(?: ?one|1) )?(?:buy|sell|lowball|trade?)(?:ing)?(?:\\W|).*", - }; - sb.append("(?i:.*(?:"); - sb.append(inexact[0]); - for(int i = 1; i < inexact.length; i++) { - sb.append("|"); - sb.append(inexact[i]); - } - sb.append(").*"); - for (String s : exact) { - sb.append("|"); - sb.append(s); - } - sb.append(")$"); - regex = sb.toString(); + @Override + public boolean onMessage(String[] groups) { + for(Pattern adFilter : AD_FILTERS) + if(adFilter.matcher(groups[2]).find()) + return true; + return false; } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java index 78574c74..803f72d8 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/ChatListenerTest.java @@ -1,35 +1,34 @@ package me.xmrvizzy.skyblocker.chat; import java.util.regex.Matcher; -import java.util.regex.Pattern; import static org.junit.jupiter.api.Assertions.*; public abstract class ChatListenerTest { - private final Pattern pattern; + protected final T listener; - public ChatListenerTest(T chatListener) { - pattern = chatListener.getPattern(); + public ChatListenerTest(T listener) { + this.listener = listener; } - protected void assertMatches(String text) { - assertTrue(pattern.matcher(text).matches()); + protected boolean captures(String text) { + return listener.getPattern().matcher(text).matches(); } - - protected void assertNotMatches(String text) { - assertFalse(pattern.matcher(text).matches()); - } - protected String[] getGroups(String text) { - Matcher matcher = pattern.matcher(text); + Matcher matcher = listener.getPattern().matcher(text); assertTrue(matcher.matches()); String[] groups = new String[matcher.groupCount() + 1]; for (int i = 0; i < groups.length; i++) groups[i] = matcher.group(i); return groups; } - + protected void assertCaptures(String text) { + assertTrue(captures(text)); + } + protected void assertNotCaptures(String text) { + assertTrue(captures(text)); + } protected void assertGroup(String text, int group, String expect) { - assertEquals(getGroups(text)[group], expect); + assertEquals(expect, getGroups(text)[group]); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java index b8a5f9da..ec2db07b 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AbilityFilterTest.java @@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; -class AbilityFilterTest extends ChatListenerTest { +class AbilityFilterTest extends ChatFilterTest { public AbilityFilterTest() { super(new AbilityFilter()); } @Test void charges() { - assertMatches("No more charges, next one in 13.2s!"); + assertFilters("No more charges, next one in 13.2s!"); } @Test void cooldown() { - assertMatches("This ability is on cooldown for 42s."); + assertFilters("This ability is on cooldown for 42s."); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java index 54e1643d..639042fe 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AdFilterTest.java @@ -3,48 +3,53 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; -class AdFilterTest extends ChatListenerTest { +class AdFilterTest extends ChatFilterTest { public AdFilterTest() { super(new AdFilter()); } @Test void noRank() { - assertMatches("§7Advertiser§7: buy"); + assertCaptures("§7Advertiser§7: advertisement"); } @Test void vip() { - assertMatches("§a[VIP] Advertiser§f: buy"); + assertCaptures("§a[VIP] Advertiser§f: advertisement"); } @Test void mvp() { - assertMatches("§b[MVP§c+§b] Advertiser§f: buy"); + assertCaptures("§b[MVP§c+§b] Advertiser§f: advertisement"); } @Test void plusPlus() { - assertMatches("§6[MVP§c++§6] Advertiser§f: buy"); + assertCaptures("§6[MVP§c++§6] Advertiser§f: advertisement"); + } + + @Test + void capturesMessage() { + assertGroup("§b[MVP§c+§b] b2dderr§f: buying prismapump", 2, "buying prismapump"); } @Test void simpleAd() { - assertMatches("§b[MVP§c+§b] b2dderr§f: buying prismapump"); + assertFilters("§b[MVP§c+§b] b2dderr§f: buying prismapump"); } @Test void uppercaseAd() { - assertMatches("§a[VIP] Tecnoisnoob§f: SELLING REJUVENATE 5 Book on ah!"); + assertFilters("§a[VIP] Tecnoisnoob§f: SELLING REJUVENATE 5 Book on ah!"); } @Test void characterSpam() { - assertMatches("§a[VIP] Benyyy_§f: Hey, Visit my Island, i spent lots of time to build it! I also made donate room! <<<<<<<<<<<<<<<<<<<"); + assertFilters("§a[VIP] Benyyy_§f: Hey, Visit my Island, i spent lots of time to build it! I also made donate room! <<<<<<<<<<<<<<<<<<<"); } @Test void notAd() { - assertNotMatches("§a[VIP] NotMatching§f: This message shouldn't match!"); + assertNotFilters("§a[VIP] NotMatching§f: This message shouldn't match!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java index 52ab5fe9..2aa14e1c 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/AoteFilterTest.java @@ -3,13 +3,13 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; -class AoteFilterTest extends ChatListenerTest { +class AoteFilterTest extends ChatFilterTest { public AoteFilterTest() { super(new AoteFilter()); } @Test void testRegex() { - assertMatches("There are blocks in the way!"); + assertFilters("There are blocks in the way!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java new file mode 100644 index 00000000..ff3399a7 --- /dev/null +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ChatFilterTest.java @@ -0,0 +1,26 @@ +package me.xmrvizzy.skyblocker.chat.filters; + +import me.xmrvizzy.skyblocker.chat.ChatListener; +import me.xmrvizzy.skyblocker.chat.ChatListenerTest; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; + +public class ChatFilterTest extends ChatListenerTest { + public ChatFilterTest(T listener) { + super(listener); + } + + protected boolean filters(String text) { + if(!captures(text)) + return false; + String[] groups = getGroups(text); + return listener.onMessage(groups); + } + protected void assertFilters(String text) { + assertTrue(filters(text)); + } + protected void assertNotFilters(String text) { + assertFalse(filters(text)); + } +} diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java index 49ceadb3..f7b4d59b 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/HealFilterTest.java @@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; -class HealFilterTest extends ChatListenerTest { +class HealFilterTest extends ChatFilterTest { public HealFilterTest() { super(new HealFilter()); } @Test void healSelf() { - assertMatches("You healed yourself for 18.3 health!"); + assertFilters("You healed yourself for 18.3 health!"); } @Test void healedYou() { - assertMatches("H3aler_ healed you for 56 health!"); + assertFilters("H3aler_ healed you for 56 health!"); } } \ No newline at end of file diff --git a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java index 8ee58564..a6526925 100644 --- a/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java +++ b/src/test/java/me/xmrvizzy/skyblocker/chat/filters/ImplosionFilterTest.java @@ -3,18 +3,18 @@ package me.xmrvizzy.skyblocker.chat.filters; import me.xmrvizzy.skyblocker.chat.ChatListenerTest; import org.junit.jupiter.api.Test; -class ImplosionFilterTest extends ChatListenerTest { +class ImplosionFilterTest extends ChatFilterTest { public ImplosionFilterTest() { super(new ImplosionFilter()); } @Test void oneEnemy() { - assertMatches("Your Implosion hit 1 enemy for 636,116.8 damage."); + assertFilters("Your Implosion hit 1 enemy for 636,116.8 damage."); } @Test void multipleEnemies() { - assertMatches("Your Implosion hit 7 enemies for 4,452,817.4 damage."); + assertFilters("Your Implosion hit 7 enemies for 4,452,817.4 damage."); } } \ No newline at end of file -- cgit From 4ceec17c35386dfd2c4178120c13da7b1c4eb88f Mon Sep 17 00:00:00 2001 From: LifeIsAParadox Date: Sat, 18 Dec 2021 23:33:03 +0100 Subject: Merge pull request #29 --- .../skyblocker/skyblock/FancyStatusBars.java | 152 +++++++++++---------- .../assets/skyblocker/textures/gui/bars.png | Bin 6756 -> 8158 bytes 2 files changed, 79 insertions(+), 73 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index 852a16df..84eebed3 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -15,39 +15,47 @@ import java.util.regex.Pattern; public class FancyStatusBars extends DrawableHelper { private static final MinecraftClient client = MinecraftClient.getInstance(); - private static final Identifier BARS = new Identifier(SkyblockerMod.NAMESPACE,"textures/gui/bars.png"); + private static final Identifier BARS = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/bars.png"); private static final Pattern ACTION_BAR_STATUS = Pattern.compile("^§[6c]([0-9]+)/([0-9]+)❤(?:\\+§c[0-9]+\\S)? {3,}(?:§a([0-9]+)§a❈ Defense|(\\S+(?: \\S+)*)) {3,}(?:§b([0-9]+)/([0-9]+)✎ (?:Mana|§3([0-9]+)ʬ)?|(\\S+(?: \\S+)*))(.*)$"); - private final Resource health; - private final Resource mana; - private int defense; - - public FancyStatusBars() { - health = new Resource(100, 100); - mana = new Resource(100, 100); - defense = 0; - } + + private final Resource[] resources = new Resource[]{ + // Health + new Resource(16733525), + // Mana + new Resource(5636095), + // Defense + new Resource(12106180), + // Experience + new Resource(8453920), + }; public boolean update(String actionBar) { - if(!SkyblockerConfig.get().general.bars.enableBars) + if (!SkyblockerConfig.get().general.bars.enableBars) return false; Matcher matcher = ACTION_BAR_STATUS.matcher(actionBar); - if(!matcher.matches()) + if (!matcher.matches()) return false; - health.set(matcher.group(1), matcher.group(2)); - if(matcher.group(3) != null) - defense = Integer.parseInt(matcher.group(3)); - if(matcher.group(5) != null) { - mana.set(matcher.group(5), matcher.group(6)); - if(matcher.group(7) != null) - mana.add(Integer.parseInt(matcher.group(7))); + + resources[0].setMax(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2))); + if (matcher.group(3) != null) { + int def = Integer.parseInt(matcher.group(3)); + resources[2].setFillLevel(def, (double) def / ((double) def + 100D)); } + if (matcher.group(5) != null) { + int m = Integer.parseInt(matcher.group(5)); + if (matcher.group(7) != null) + m += Integer.parseInt(matcher.group(7)); + resources[1].setMax(m, Integer.parseInt(matcher.group(6))); + } + assert client.player != null; + resources[3].setFillLevel(client.player.experienceLevel, client.player.experienceProgress); StringBuilder sb = new StringBuilder(); appendIfNotNull(sb, matcher.group(4)); appendIfNotNull(sb, matcher.group(8)); appendIfNotNull(sb, matcher.group(9)); - if(!sb.isEmpty()) { + if (!sb.isEmpty()) { assert client.player != null; client.player.sendMessage(Text.of(sb.toString()), true); } @@ -56,52 +64,34 @@ public class FancyStatusBars extends DrawableHelper { } private void appendIfNotNull(StringBuilder sb, String str) { - if(str == null) + if (str == null) return; - if(!sb.isEmpty()) + if (!sb.isEmpty()) sb.append(" "); sb.append(str); } + private static final int BAR_SPACING = 46; + public boolean render(MatrixStack matrices, int scaledWidth, int scaledHeight) { - if(!SkyblockerConfig.get().general.bars.enableBars) + if (!SkyblockerConfig.get().general.bars.enableBars) return false; int left = scaledWidth / 2 - 91; int top = scaledHeight - 35; - - int hpFillWidth = (int) (health.getFillLevel() * 33.0F); - int hpOverflowWidth = (int) (health.getOverflow() * 33.0F); - int manaFillWidth = (int) (mana.getFillLevel() * 33.0F); - assert client.player != null; - int xp = (int) (client.player.experienceProgress * 33.0F); - int defenseFill = (int) (defense / (defense + 100.0) * 33.0); - - // Icons -// this.client.getTextureManager().bindTexture(BARS); RenderSystem.setShaderTexture(0, BARS); - this.drawTexture(matrices, left, top, 0, 0, 9, 9); - this.drawTexture(matrices, left + 47, top, 9, 0, 7, 9); - this.drawTexture(matrices, left + 92, top, 16, 0, 9, 9); - this.drawTexture(matrices, left + 139, top, 25, 0, 9, 9); - - // Empty Bars - this.drawTexture(matrices, left + 10, top + 1, 0, 9, 33, 7); - this.drawTexture(matrices, left + 55, top + 1, 0, 9, 33, 7); - this.drawTexture(matrices, left + 102, top + 1, 0, 9, 33, 7); - this.drawTexture(matrices, left + 149, top + 1, 0, 9, 33, 7); - - // Progress Bars - this.drawTexture(matrices, left + 10, top + 1, 0, 16, hpFillWidth, 7); - this.drawTexture(matrices, left + 10, top + 1, 0, 44, hpOverflowWidth, 7); - this.drawTexture(matrices, left + 55, top + 1, 0, 23, manaFillWidth, 7); - this.drawTexture(matrices, left + 102, top + 1, 0, 30, defenseFill, 7); - this.drawTexture(matrices, left + 149, top + 1, 0, 37, xp, 7); - - // Progress Texts - renderText(matrices, health.getValue(), left + 11, top, 16733525); - renderText(matrices, mana.getValue(), left + 56, top, 5636095); - renderText(matrices, defense, left + 103, top, 12106180); - renderText(matrices, client.player.experienceLevel, left + 150, top, 8453920); + for (int i = 0; i < 4; i++) { + this.drawTexture(matrices, left + i * BAR_SPACING, top, 0, 9 * i, 43, 9); + int fillCount = resources[i].getFillCount(); + for (int j = 0; j < fillCount; j++) { + this.drawTexture(matrices, left + 11 + i * BAR_SPACING, top, 43 + 31 * j, 9 * i, Resource.INNER_WIDTH, 9); + } + int fillLevel = resources[i].getFillLevel(); + if (0 < fillLevel) + this.drawTexture(matrices, left + 11 + i * BAR_SPACING, top, 43 + 31 * fillCount, 9 * i, fillLevel, 9); + } + for (int i = 0; i < 4; i++) { + renderText(matrices, resources[i].getValue(), left + 11 + i * BAR_SPACING, top, resources[i].getTextColor()); + } return true; } @@ -111,35 +101,51 @@ public class FancyStatusBars extends DrawableHelper { int x = left + (33 - textRenderer.getWidth(text)) / 2; int y = top - 3; - textRenderer.draw(matrices, text, (float) (x + 1), (float) y, 0); - textRenderer.draw(matrices, text, (float) (x - 1), (float) y, 0); - textRenderer.draw(matrices, text, (float) x, (float) (y + 1), 0); - textRenderer.draw(matrices, text, (float) x, (float) (y - 1), 0); + // for i in [-1, 1] + for (int i = -1; i < 2; i += 2) { + textRenderer.draw(matrices, text, (float) (x + i), (float) y, 0); + textRenderer.draw(matrices, text, (float) x, (float) (y + i), 0); + } + textRenderer.draw(matrices, text, (float) x, (float) y, color); } private static class Resource { + static final int INNER_WIDTH = 31; private int value; - private int max; - public Resource(int value, int max) { - this.value = value; - this.max = max; + private int fillLevel; + private final int textColor; + + public Resource(int textColor) { + this.value = 0; + this.fillLevel = INNER_WIDTH; + this.textColor = textColor; } - public void set(String value, String max) { - this.value = Integer.parseInt(value); - this.max = Integer.parseInt(max); + + public void setMax(int value, int max) { + this.value = value; + this.fillLevel = value * INNER_WIDTH / max; } - public void add(int value) { - this.value += value; + + public void setFillLevel(int value, double fillLevel) { + this.value = value; + this.fillLevel = (int) (INNER_WIDTH * fillLevel); } + public int getValue() { return value; } - public double getFillLevel() { - return Math.min(((double)value)/((double)max), 1); + + public int getFillCount() { + return fillLevel / INNER_WIDTH; + } + + public int getFillLevel() { + return fillLevel % INNER_WIDTH; } - public double getOverflow() { - return Math.max(((double)value)/((double)max) - 1, 0); + + public int getTextColor() { + return textColor; } } } \ No newline at end of file diff --git a/src/main/resources/assets/skyblocker/textures/gui/bars.png b/src/main/resources/assets/skyblocker/textures/gui/bars.png index d3fc95b1..8b5ca33d 100644 Binary files a/src/main/resources/assets/skyblocker/textures/gui/bars.png and b/src/main/resources/assets/skyblocker/textures/gui/bars.png differ -- cgit From 7e30f50d4aae4c48434bde3e852ffd1c95c6efae Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Sat, 22 Jan 2022 15:45:45 -0500 Subject: Added Wiki Lookup Added a keybind which, when pressed will open up the wiki page of the player's held item. --- .../xmrvizzy/skyblocker/SkyblockerInitializer.java | 2 + .../skyblocker/skyblock/item/WikiLookup.java | 70 ++++++++++++++++++++++ .../resources/assets/skyblocker/lang/en_us.json | 1 + 3 files changed, 73 insertions(+) create mode 100644 src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java index b3a50697..93eac100 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java +++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerInitializer.java @@ -3,6 +3,7 @@ package me.xmrvizzy.skyblocker; import me.xmrvizzy.skyblocker.config.SkyblockerConfig; import me.xmrvizzy.skyblocker.skyblock.HotbarSlotLock; import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip; +import me.xmrvizzy.skyblocker.skyblock.item.WikiLookup; import net.fabricmc.api.ClientModInitializer; public class SkyblockerInitializer implements ClientModInitializer { @@ -11,5 +12,6 @@ public class SkyblockerInitializer implements ClientModInitializer { HotbarSlotLock.init(); SkyblockerConfig.init(); PriceInfoTooltip.init(); + WikiLookup.init(); } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java new file mode 100644 index 00000000..ea2faeb4 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -0,0 +1,70 @@ +package me.xmrvizzy.skyblocker.skyblock.item; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.option.KeyBinding; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NbtCompound; +import net.minecraft.util.Util; +import org.lwjgl.glfw.GLFW; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLConnection; + +public class WikiLookup { + public static KeyBinding wikiLookup; + static MinecraftClient client = MinecraftClient.getInstance(); + static String id; + public static Gson gson = new Gson(); + + public static void init(){ + wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( + "key.wikiLookup", + GLFW.GLFW_KEY_Y, + "key.categories.skyblocker" + )); + ClientTickEvents.END_CLIENT_TICK.register(client -> { + while (wikiLookup.wasPressed()) { + id = getSkyblockId(); + + try { + //Setting up a connection with the repo + String urlString = "https://raw.githubusercontent.com/NotEnoughUpdates/NotEnoughUpdates-REPO/master/items/" + id + ".json"; + URL url = new URL(urlString); + URLConnection request = url.openConnection(); + request.connect(); + + //yoinking the wiki link + JsonElement root = JsonParser.parseReader(new InputStreamReader((InputStream) request.getContent())); + JsonObject rootobj = root.getAsJsonObject(); + String wikiLink = rootobj.get("info").getAsString(); + Util.getOperatingSystem().open(wikiLink); + } catch (IOException e) { + e.printStackTrace(); + } + + } + }); + } + + public static String getSkyblockId() { + + //Grabbing the skyblock NBT data + ItemStack mainHandStack = client.player.getMainHandStack(); + NbtCompound nbt = mainHandStack.getSubNbt("ExtraAttributes"); + if (nbt != null) { + id = nbt.getString("id"); + } + + return id; + } + +} diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index a1f0198e..680787e8 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -1,6 +1,7 @@ { "key.categories.skyblocker": "Skyblocker", "key.hotbarSlotLock": "Slot Lock (Hotbar)", + "key.wikiLookup": "Wiki Lookup", "text.autoconfig.skyblocker.title": "Skyblocker Settings", -- cgit From bdac02bc0af4e89d0cfa9360994cbabc823f92d4 Mon Sep 17 00:00:00 2001 From: TacoMonkey <75862693+TacoMonkey11@users.noreply.github.com> Date: Sat, 22 Jan 2022 18:31:53 -0500 Subject: Squashed a bug and changed default hey to something less stupid --- .../java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/main/java/me/xmrvizzy') diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java index ea2faeb4..30da694e 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/WikiLookup.java @@ -10,6 +10,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.option.KeyBinding; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; +import net.minecraft.text.Text; import net.minecraft.util.Util; import org.lwjgl.glfw.GLFW; @@ -28,7 +29,7 @@ public class WikiLookup { public static void init(){ wikiLookup = KeyBindingHelper.registerKeyBinding(new KeyBinding( "key.wikiLookup", - GLFW.GLFW_KEY_Y, + GLFW.GLFW_KEY_F4, "key.categories.skyblocker" )); ClientTickEvents.END_CLIENT_TICK.register(client -> { @@ -47,8 +48,9 @@ public class WikiLookup { JsonObject rootobj = root.getAsJsonObject(); String wikiLink = rootobj.get("info").getAsString(); Util.getOperatingSystem().open(wikiLink); - } catch (IOException e) { + } catch (IOException | NullPointerException e) { e.printStackTrace(); + client.player.sendMessage(Text.of("Can't locate a wiki article for this item..."), false); } } @@ -58,8 +60,8 @@ public class WikiLookup { public static String getSkyblockId() { //Grabbing the skyblock NBT data - ItemStack mainHandStack = client.player.getMainHandStack(); - NbtCompound nbt = mainHandStack.getSubNbt("ExtraAttributes"); + ItemStack mainStack = client.player.getMainHandStack(); + NbtCompound nbt = mainStack.getSubNbt("ExtraAttributes"); if (nbt != null) { id = nbt.getString("id"); } -- cgit