From a2ad09ee13cee2ef70268336b9df41368574f45a Mon Sep 17 00:00:00 2001 From: Roman / Nea Date: Thu, 7 Jul 2022 18:07:08 +0200 Subject: Added a calculator (#180) * Added a calculator * Remove stuff * also add t * Update Misc.java * On by default * add x for multiplication, fixed - not working and quick math solver Co-authored-by: nopo --- .../notenoughupdates/miscgui/SignCalculator.java | 107 +++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java new file mode 100644 index 00000000..115458c9 --- /dev/null +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2022 NotEnoughUpdates contributors + * + * This file is part of NotEnoughUpdates. + * + * NotEnoughUpdates is free software: you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation, either + * version 3 of the License, or (at your option) any later version. + * + * NotEnoughUpdates 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with NotEnoughUpdates. If not, see . + */ + +package io.github.moulberry.notenoughupdates.miscgui; + +import io.github.moulberry.notenoughupdates.NotEnoughUpdates; +import io.github.moulberry.notenoughupdates.events.SignSubmitEvent; +import io.github.moulberry.notenoughupdates.mixins.AccessorGuiEditSign; +import io.github.moulberry.notenoughupdates.util.Calculator; +import io.github.moulberry.notenoughupdates.util.Utils; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiEditSign; +import net.minecraft.tileentity.TileEntitySign; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import java.math.BigDecimal; +import java.util.Objects; + +public class SignCalculator { + + String lastSource = null; + BigDecimal lastResult = null; + Calculator.CalculatorException lastException = null; + + private boolean isEnabled() { + return NotEnoughUpdates.INSTANCE.config.misc.calculationMode != 0; + } + + @SubscribeEvent + public void onSignDrawn(GuiScreenEvent.DrawScreenEvent.Post event) { + if (!(event.gui instanceof GuiEditSign)) + return; + if (!isEnabled()) return; + GuiEditSign guiEditSign = (GuiEditSign) event.gui; + TileEntitySign tileSign = ((AccessorGuiEditSign) guiEditSign).getTileSign(); + if (!tileSign.signText[1].getUnformattedText().equals("^^^^^^^^^^^^^^^")) return; + refresh(tileSign.signText[0].getUnformattedText()); + Utils.drawStringCentered( + getRenderedString(), + Minecraft.getMinecraft().fontRendererObj, + guiEditSign.width / 2F, + guiEditSign.height / 4F - 120, + false, + 0x808080FF + ); + } + + @SubscribeEvent + public void onSignSubmitted(SignSubmitEvent event) { + if (!isEnabled()) return; + if (Objects.equals(event.lines[1], "^^^^^^^^^^^^^^^")) { + refresh(event.lines[0]); + if (lastResult != null) { + event.lines[0] = lastResult.toPlainString(); + } + } + } + + public String getRenderedString() { + if (lastResult != null) { + String lr = lastResult.toPlainString(); + if (Minecraft.getMinecraft().fontRendererObj.getStringWidth(lr) > 90) { + return EnumChatFormatting.WHITE + lastSource + " = " + EnumChatFormatting.RED + "Result too long"; + } + return EnumChatFormatting.WHITE + lastSource + " = " + EnumChatFormatting.GREEN + lr; + } else if (lastException != null) { + return EnumChatFormatting.RED + lastException.getMessage(); + } + return EnumChatFormatting.RED + "No calculation has been done."; + } + + private void refresh(String source) { + if (Objects.equals(source, lastSource)) return; + lastSource = source; + int calculationMode = NotEnoughUpdates.INSTANCE.config.misc.calculationMode; + if (source.isEmpty() || calculationMode == 0 || (calculationMode == 1 && !source.startsWith("!"))) { + lastResult = null; + lastException = null; + return; + } + try { + lastResult = Calculator.calculate(calculationMode == 1 ? source.substring(1) : source); + lastException = null; + } catch (Calculator.CalculatorException ex) { + lastException = ex; + lastResult = null; + } + } +} -- cgit From d4b8c67c9a8dec5f4f84f6385052e584d9cdcc01 Mon Sep 17 00:00:00 2001 From: Futuremappermydud <54294576+Futuremappermydud@users.noreply.github.com> Date: Mon, 11 Jul 2022 08:45:05 -0400 Subject: SignCalculator use decimal points in rendered text (#182) * SignCalculator use decimal points in rendered text this was really bugging me * Update /neucalc --- .../io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java index 115458c9..f3d4237d 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java @@ -31,6 +31,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.event.GuiScreenEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import java.text.DecimalFormat; import java.math.BigDecimal; import java.util.Objects; @@ -76,7 +77,8 @@ public class SignCalculator { public String getRenderedString() { if (lastResult != null) { - String lr = lastResult.toPlainString(); + DecimalFormat formatter = new DecimalFormat("#,###.00"); + String lr = formatter.format(lastResult); if (Minecraft.getMinecraft().fontRendererObj.getStringWidth(lr) > 90) { return EnumChatFormatting.WHITE + lastSource + " = " + EnumChatFormatting.RED + "Result too long"; } -- cgit From 6489385cabc021cc36b487151b5d6c85d7617390 Mon Sep 17 00:00:00 2001 From: Roman / Nea Date: Thu, 14 Jul 2022 19:57:37 +0200 Subject: Various fixes regarding finalizing the release ig (#186) * Fix Sign calc not aligning properly with the GuiEditSign * "Fix" official wiki rendering. This one didnt receive extensive testing, but so far it works * Update notification changes * Dont reset the config lol --- .../io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java index f3d4237d..bee0a36f 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java @@ -58,7 +58,7 @@ public class SignCalculator { getRenderedString(), Minecraft.getMinecraft().fontRendererObj, guiEditSign.width / 2F, - guiEditSign.height / 4F - 120, + 58, false, 0x808080FF ); -- cgit From e91d0907148e08352f3679324dc3e6460de1be38 Mon Sep 17 00:00:00 2001 From: NopoTheGamer <40329022+NopoTheGamer@users.noreply.github.com> Date: Sat, 16 Jul 2022 20:57:12 +1000 Subject: fixed magic power (#187) * fixed magic power * I feel like this is an important change * fix location * added support for trade money signs --- .../io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java index bee0a36f..51e1d15a 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java @@ -52,7 +52,7 @@ public class SignCalculator { if (!isEnabled()) return; GuiEditSign guiEditSign = (GuiEditSign) event.gui; TileEntitySign tileSign = ((AccessorGuiEditSign) guiEditSign).getTileSign(); - if (!tileSign.signText[1].getUnformattedText().equals("^^^^^^^^^^^^^^^")) return; + if (!tileSign.signText[1].getUnformattedText().equals("^^^^^^^^^^^^^^^") && !tileSign.signText[1].getUnformattedText().equals("^^^^^^")) return; refresh(tileSign.signText[0].getUnformattedText()); Utils.drawStringCentered( getRenderedString(), @@ -67,7 +67,7 @@ public class SignCalculator { @SubscribeEvent public void onSignSubmitted(SignSubmitEvent event) { if (!isEnabled()) return; - if (Objects.equals(event.lines[1], "^^^^^^^^^^^^^^^")) { + if (Objects.equals(event.lines[1], "^^^^^^^^^^^^^^^") || Objects.equals(event.lines[1], "^^^^^^")) { refresh(event.lines[0]); if (lastResult != null) { event.lines[0] = lastResult.toPlainString(); -- cgit From 100289a077277f8860e19125cede8414757fbb61 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Sun, 7 Aug 2022 21:58:18 +0200 Subject: Calculations (#204) * add support for calculations in neu searchbar * moved calculation in search bar into own class * saving one line out of 3k lines * brackets change everything --- .../notenoughupdates/miscgui/SignCalculator.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java') diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java index 51e1d15a..ac676a98 100644 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java +++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/SignCalculator.java @@ -52,8 +52,14 @@ public class SignCalculator { if (!isEnabled()) return; GuiEditSign guiEditSign = (GuiEditSign) event.gui; TileEntitySign tileSign = ((AccessorGuiEditSign) guiEditSign).getTileSign(); - if (!tileSign.signText[1].getUnformattedText().equals("^^^^^^^^^^^^^^^") && !tileSign.signText[1].getUnformattedText().equals("^^^^^^")) return; - refresh(tileSign.signText[0].getUnformattedText()); + if (!tileSign.signText[1].getUnformattedText().equals("^^^^^^^^^^^^^^^") && + !tileSign.signText[1].getUnformattedText().equals("^^^^^^")) return; + String source = tileSign.signText[0].getUnformattedText(); + refresh(source); + + int calculationMode = NotEnoughUpdates.INSTANCE.config.misc.calculationMode; + if ((calculationMode == 1 && !source.startsWith("!"))) return; + Utils.drawStringCentered( getRenderedString(), Minecraft.getMinecraft().fontRendererObj, @@ -77,12 +83,14 @@ public class SignCalculator { public String getRenderedString() { if (lastResult != null) { - DecimalFormat formatter = new DecimalFormat("#,###.00"); + DecimalFormat formatter = new DecimalFormat("#,##0.##"); String lr = formatter.format(lastResult); if (Minecraft.getMinecraft().fontRendererObj.getStringWidth(lr) > 90) { - return EnumChatFormatting.WHITE + lastSource + " = " + EnumChatFormatting.RED + "Result too long"; + return EnumChatFormatting.WHITE + lastSource + " " + EnumChatFormatting.YELLOW + "= " + EnumChatFormatting.RED + + "Result too long"; } - return EnumChatFormatting.WHITE + lastSource + " = " + EnumChatFormatting.GREEN + lr; + return EnumChatFormatting.WHITE + lastSource + " " + EnumChatFormatting.YELLOW + "= " + EnumChatFormatting.GREEN + + lr; } else if (lastException != null) { return EnumChatFormatting.RED + lastException.getMessage(); } -- cgit