From dc757d8fa16ebadd5ea7a7cd32ce84d51d966119 Mon Sep 17 00:00:00 2001 From: Zacharias Date: Tue, 11 Jul 2023 15:17:48 +0200 Subject: [PATCH] Added ability to change width and height for the visual image Change indentation to 2 spaces instead of 4 Added ImageHandler.java for basic Image related things Added 2 new speedometer images for scaling purposes Updated to version 3 Gave gradle more ram Added the new translatable texts to en_us.json --- .../java/me/zacharias/speedometer/Config.java | 394 ++++----- .../zacharias/speedometer/ImageHandler.java | 14 + .../me/zacharias/speedometer/MeterImages.java | 60 ++ .../me/zacharias/speedometer/SpeedTypes.java | 50 +- .../me/zacharias/speedometer/Speedometer.java | 757 +++++++++--------- .../assets/speedometer/lang/en_us.json | 6 + .../assets/speedometer/meter/meter-115.png | Bin 0 -> 2496 bytes .../meter/{meter.png => meter-19.png} | Bin .../assets/speedometer/meter/meter-67.png | Bin 0 -> 1225 bytes .../zacharias/speedometer/fabric/Config.java | 17 +- .../speedometer/fabric/SpeedometerFabric.java | 8 +- .../speedometer/forge/SpeedometerForge.java | 10 +- gradle.properties | 4 +- 13 files changed, 719 insertions(+), 601 deletions(-) create mode 100644 common/src/main/java/me/zacharias/speedometer/ImageHandler.java create mode 100644 common/src/main/java/me/zacharias/speedometer/MeterImages.java create mode 100644 common/src/main/resources/assets/speedometer/meter/meter-115.png rename common/src/main/resources/assets/speedometer/meter/{meter.png => meter-19.png} (100%) create mode 100644 common/src/main/resources/assets/speedometer/meter/meter-67.png diff --git a/common/src/main/java/me/zacharias/speedometer/Config.java b/common/src/main/java/me/zacharias/speedometer/Config.java index 07583a6..a86e687 100644 --- a/common/src/main/java/me/zacharias/speedometer/Config.java +++ b/common/src/main/java/me/zacharias/speedometer/Config.java @@ -10,227 +10,243 @@ import me.shedaniel.math.Color; import static me.zacharias.speedometer.Speedometer.MOD_ID; public class Config { - private static JSONObject Config; - public static final int configVersion = 2; + private static JSONObject Config; + public static final float configVersion = 2.1f; - public static void initialize(){ - if(Config != null) throw new RuntimeException("Already Initialized"); - File config = new File(Platform.getConfigFolder().toString()+"/"+MOD_ID+"/config.json"); - if(!config.exists()){ - try { - config.getParentFile().mkdir(); - config.createNewFile(); - } catch (IOException e) { - throw new RuntimeException(e); + public static void initialize(){ + if(Config != null) throw new RuntimeException("Already Initialized"); + File config = new File(Platform.getConfigFolder().toString()+"/"+MOD_ID+"/config.json"); + if(!config.exists()){ + try { + config.getParentFile().mkdir(); + config.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } + Config = new JSONObject(); + + defualt(); + }else { + try { + BufferedReader in = new BufferedReader(new FileReader(config)); + String tmp; + StringBuilder builder = new StringBuilder(); + while((tmp = in.readLine()) != null){ + builder.append(tmp); + } + Config = new JSONObject(builder.toString()); + if(Config.has("version")){ + if(Config.getFloat("version")!=configVersion){ + if(Config.getFloat("version") > configVersion){ + defualt(); + + save(); + }else if(Config.getFloat("version") < configVersion){ + Config = new JSONObject(); + + defualt(); + save(); } - Config = new JSONObject(); - - defualt(); - }else { - try { - BufferedReader in = new BufferedReader(new FileReader(config)); - String tmp; - StringBuilder builder = new StringBuilder(); - while((tmp = in.readLine()) != null){ - builder.append(tmp); - } - Config = new JSONObject(builder.toString()); - if(Config.has("version")){ - if(Config.getInt("version")!=configVersion){ - if(Config.getInt("version") > configVersion){ - defualt(); - - save(); - }else if(Config.getInt("version") < configVersion){ - Config = new JSONObject(); - - defualt(); - save(); - } - } - }else{ - Config = new JSONObject(); - defualt(); - save(); - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - } - - private static void defualt() { - if(!Config.has("speed")) { - Config.put("speed", SpeedTypes.BlockPS); - } - if(!Config.has("useKnot")) { - Config.put("useKnot", false); - } - if(!Config.has("color")) { - Config.put("color", new JSONObject() - .put("r", 16) - .put("g", 146) - .put("b", 158) - ); - } - if(!Config.has("visualSpeedometer")) { - Config.put("visualSpeedometer", false); - } - if(!Config.has("xPositionVisual")) { - Config.put("xPositionVisual", "W-23"); - } - if(!Config.has("yPositionVisual")) { - Config.put("yPositionVisual", "H-23"); - } - if(!Config.has("xPositionText")) { - Config.put("xPositionText", "W-70"); - } - if(!Config.has("yPositionText")) { - Config.put("yPositionText", "H-15"); - } - - if(!Config.has("debug")) { - Config.put("debug", false); - } - - if(!Config.has("version")) { - Config.put("version", configVersion); - } - } - - public static void save(){ - File config = new File(Platform.getConfigFolder().toString()+"/"+MOD_ID+"/config.json"); - if(!config.exists()){ - try { - config.getParentFile().mkdir(); - config.createNewFile(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - try { - BufferedWriter out = new BufferedWriter(new FileWriter(config)); - out.write(Config.toString(4)); - out.flush(); - out.close(); - }catch (Exception e){ - throw new RuntimeException(e); - } - } - - public static SpeedTypes getSpeedType(){ - if(Config.has("speed")){ - return Config.getEnum(SpeedTypes.class, "speed"); + } }else{ - return SpeedTypes.BlockPS; + Config = new JSONObject(); + defualt(); + save(); } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + + private static void defualt() { + if(!Config.has("speed")) { + Config.put("speed", SpeedTypes.BlockPS); + } + if(!Config.has("useKnot")) { + Config.put("useKnot", false); + } + if(!Config.has("color")) { + Config.put("color", new JSONObject() + .put("r", 16) + .put("g", 146) + .put("b", 158) + ); + } + if(!Config.has("visualSpeedometer")) { + Config.put("visualSpeedometer", false); + } + if(!Config.has("xPositionVisual")) { + Config.put("xPositionVisual", "W-3"); + } + if(!Config.has("yPositionVisual")) { + Config.put("yPositionVisual", "H-3"); + } + if(!Config.has("xPositionText")) { + Config.put("xPositionText", "W-70"); + } + if(!Config.has("yPositionText")) { + Config.put("yPositionText", "H-15"); } - public static boolean getUseKnot() { - if(Config.has("useKnot")){ - return Config.getBoolean("useKnot"); - }else{ - return false; - } + if(!Config.has("debug")) { + Config.put("debug", false); } - public static Color getColor(){ - if(Config.has("color")){ - JSONObject color = Config.getJSONObject("color"); - return Color.ofRGB( - color.getInt("r"), - color.getInt("g"), - color.getInt("b") - ); - }else{ - return Color.ofRGB(16, 146, 158); - } + if(!Config.has("imagSize")) { + Config.put("imageSize", 19); } - public static boolean isDebug() { - if(Config.has("debug")){ - return Config.getBoolean("debug"); - }else{ - return false; - } + if(!Config.has("version")) { + Config.put("version", configVersion); } + } - public static boolean getVisualSpeedometer(){ - if(Config.has("visualSpeedometer")){ - return Config.getBoolean("visualSpeedometer"); - }else { - return false; - } + public static void save(){ + File config = new File(Platform.getConfigFolder().toString()+"/"+MOD_ID+"/config.json"); + if(!config.exists()){ + try { + config.getParentFile().mkdir(); + config.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } } + try { + BufferedWriter out = new BufferedWriter(new FileWriter(config)); + out.write(Config.toString(4)); + out.flush(); + out.close(); + }catch (Exception e){ + throw new RuntimeException(e); + } + } - public static String getXPositionVisual(){ - if(Config.has("xPositionVisual")) { - return Config.getString("xPositionVisual"); - }else{ - return "W-23"; - } + public static SpeedTypes getSpeedType(){ + if(Config.has("speed")){ + return Config.getEnum(SpeedTypes.class, "speed"); + }else{ + return SpeedTypes.BlockPS; } + } - public static String getYPositionVisual() { - if (Config.has("yPositionVisual")) { - return Config.getString("yPositionVisual"); - } else { - return "H-23"; - } - } - public static String getXPositionText(){ - if(Config.has("xPositionText")) { - return Config.getString("xPositionText"); - }else{ - return "W-70"; - } + public static boolean getUseKnot() { + if(Config.has("useKnot")){ + return Config.getBoolean("useKnot"); + }else{ + return false; } + } - public static String getYPositionText(){ - if(Config.has("yPositionText")) { - return Config.getString("yPositionText"); - }else{ - return "H-15"; - } + public static Color getColor(){ + if(Config.has("color")){ + JSONObject color = Config.getJSONObject("color"); + return Color.ofRGB( + color.getInt("r"), + color.getInt("g"), + color.getInt("b") + ); + }else{ + return Color.ofRGB(16, 146, 158); } + } - public static void setColor(Color color){ - Config.put("color", new JSONObject() - .put("r", color.getRed()) - .put("g", color.getGreen()) - .put("b", color.getBlue()) - ); + public static boolean isDebug() { + if(Config.has("debug")){ + return Config.getBoolean("debug"); + }else{ + return false; } + } - public static void setUseKnot(boolean useKnot){ - Config.put("useKnot", useKnot); + public static boolean getVisualSpeedometer(){ + if(Config.has("visualSpeedometer")){ + return Config.getBoolean("visualSpeedometer"); + }else { + return false; } + } - public static void setSpeedType(SpeedTypes speedType) { - Config.put("speed", speedType); + public static String getXPositionVisual(){ + if(Config.has("xPositionVisual")) { + return Config.getString("xPositionVisual"); + }else{ + return "W-23"; } + } - public static void setVisualSpeedometer(boolean visualSpeedometer){ - Config.put("visualSpeedometer", visualSpeedometer); + public static String getYPositionVisual() { + if (Config.has("yPositionVisual")) { + return Config.getString("yPositionVisual"); + } else { + return "H-23"; } + } + public static String getXPositionText(){ + if(Config.has("xPositionText")) { + return Config.getString("xPositionText"); + }else{ + return "W-70"; + } + } - public static void setXPositionVisual(String xPositionVisual){ - Config.put("xPositionVisual", xPositionVisual); + public static String getYPositionText(){ + if(Config.has("yPositionText")) { + return Config.getString("yPositionText"); + }else{ + return "H-15"; } + } - public static void setYPositionVisual(String yPositionVisual){ - Config.put("yPositionVisual", yPositionVisual); + public static int getImageSize(){ + if(Config.has("imageSize")){ + return Config.getInt("imageSize"); + }else { + return 19; } + } - public static void setXPositionText(String xPositionText){ - Config.put("xPositionText", xPositionText); - } + public static void setColor(Color color){ + Config.put("color", new JSONObject() + .put("r", color.getRed()) + .put("g", color.getGreen()) + .put("b", color.getBlue()) + ); + } - public static void setYPositionText(String yPositionText){ - Config.put("yPositionText", yPositionText); - } + public static void setUseKnot(boolean useKnot){ + Config.put("useKnot", useKnot); + } - public static void setDebug(boolean debug){ - Config.put("debug", debug); - } + public static void setSpeedType(SpeedTypes speedType) { + Config.put("speed", speedType); + } + + public static void setVisualSpeedometer(boolean visualSpeedometer){ + Config.put("visualSpeedometer", visualSpeedometer); + } + + public static void setXPositionVisual(String xPositionVisual){ + Config.put("xPositionVisual", xPositionVisual); + } + + public static void setYPositionVisual(String yPositionVisual){ + Config.put("yPositionVisual", yPositionVisual); + } + + public static void setXPositionText(String xPositionText){ + Config.put("xPositionText", xPositionText); + } + + public static void setYPositionText(String yPositionText){ + Config.put("yPositionText", yPositionText); + } + + public static void setDebug(boolean debug){ + Config.put("debug", debug); + } + + public static void setImageSize(int imageSize){ + Config.put("imageSize", imageSize); + } } diff --git a/common/src/main/java/me/zacharias/speedometer/ImageHandler.java b/common/src/main/java/me/zacharias/speedometer/ImageHandler.java new file mode 100644 index 0000000..55e731c --- /dev/null +++ b/common/src/main/java/me/zacharias/speedometer/ImageHandler.java @@ -0,0 +1,14 @@ +package me.zacharias.speedometer; + +import java.awt.*; +import java.awt.image.BufferedImage; + +public class ImageHandler { + public static BufferedImage scale(BufferedImage img, int width, int height) { + Image img1 = img.getScaledInstance(width,height, Image.SCALE_DEFAULT); + BufferedImage out = new BufferedImage(width, height,BufferedImage.TYPE_INT_ARGB); + Graphics2D g2d = out.createGraphics(); + g2d.drawImage(img1,0,0,null); + return out; + } +} \ No newline at end of file diff --git a/common/src/main/java/me/zacharias/speedometer/MeterImages.java b/common/src/main/java/me/zacharias/speedometer/MeterImages.java new file mode 100644 index 0000000..a035002 --- /dev/null +++ b/common/src/main/java/me/zacharias/speedometer/MeterImages.java @@ -0,0 +1,60 @@ +package me.zacharias.speedometer; + +import net.minecraft.network.chat.Component; + +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.util.Objects; + +public enum MeterImages { + LARGE(Component.translatable("speedometer.meter.large"), () -> { + try { + return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-115.png"))); + } catch (Exception e) { + return null; + } + }, 115), + SMALL(Component.translatable("speedometer.meter.small"), () -> { + try { + return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-19.png"))); + } catch (Exception e) { + return null; + } + }, 19), + MEDIUM(Component.translatable("speedometer.meter.small"), () -> { + try { + return ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-67.png"))); + } catch (Exception e) { + return null; + } + }, 67) + + ; + + private final Component name; + private final BufferedImage image; + private final int size; + + MeterImages(Component name, Loader icon, int size) { + this.name = name; + this.image = icon.load(); + this.size = size; + } + + public BufferedImage getImage() { + return image; + } + + public int getSize() { + return size; + } + + public Component getName() { + return name; + } + + private interface Loader{ + BufferedImage load(); + } +} diff --git a/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java b/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java index a3dd55d..0cf412b 100644 --- a/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java +++ b/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java @@ -3,33 +3,33 @@ package me.zacharias.speedometer; import net.minecraft.network.chat.Component; public enum SpeedTypes { - MPH(20), - KMPH(200), - MPS(10), - BlockPS(10), - KNOT(20); + MPH(20), + KMPH(200), + MPS(10), + BlockPS(10), + KNOT(20); - private final int maxVisual; + private final int maxVisual; - SpeedTypes(int maxVisual){ - this.maxVisual = maxVisual; + SpeedTypes(int maxVisual){ + this.maxVisual = maxVisual; + } + + public static Component getName(Enum anEnum) { + if(anEnum instanceof SpeedTypes speedType) { + return Component.translatable("speedometer.speed." + switch (speedType) { + case MPH -> "mph"; + case MPS -> "mps"; + case KMPH -> "kmph"; + case BlockPS -> "bps"; + case KNOT -> "knot"; + }); + }else { + return Component.translatable("speedometer.speed.error"); } + } - public static Component getName(Enum anEnum) { - if(anEnum instanceof SpeedTypes speedType) { - return Component.translatable("speedometer.speed." + switch (speedType) { - case MPH -> "mph"; - case MPS -> "mps"; - case KMPH -> "kmph"; - case BlockPS -> "bps"; - case KNOT -> "knot"; - }); - }else { - return Component.translatable("speedometer.speed.error"); - } - } - - public int gatMaxVisual() { - return maxVisual; - } + public int gatMaxVisual() { + return maxVisual; + } } \ No newline at end of file diff --git a/common/src/main/java/me/zacharias/speedometer/Speedometer.java b/common/src/main/java/me/zacharias/speedometer/Speedometer.java index 29d367b..173687c 100644 --- a/common/src/main/java/me/zacharias/speedometer/Speedometer.java +++ b/common/src/main/java/me/zacharias/speedometer/Speedometer.java @@ -35,435 +35,458 @@ import java.util.*; public class Speedometer { - public static final String MOD_ID = "speedometer"; - public static final Logger LOGGER = LogManager.getLogger(MOD_ID); + public static final String MOD_ID = "speedometer"; + public static final Logger LOGGER = LogManager.getLogger(MOD_ID); - public static final KeyMapping CONFIG_KEY = new KeyMapping( - "speedometer.key.configKey", - InputConstants.Type.KEYSYM, - InputConstants.KEY_O, - "speedometer.key.category" - ); - public static final KeyMapping DEBUG_KEY = new KeyMapping( - "speedometer.key.debugKey", - InputConstants.Type.KEYSYM, - InputConstants.KEY_F6, - "speedometer.key.category" - ); + public static final KeyMapping CONFIG_KEY = new KeyMapping( + "speedometer.key.configKey", + InputConstants.Type.KEYSYM, + InputConstants.KEY_O, + "speedometer.key.category" + ); + public static final KeyMapping DEBUG_KEY = new KeyMapping( + "speedometer.key.debugKey", + InputConstants.Type.KEYSYM, + InputConstants.KEY_F6, + "speedometer.key.category" + ); - private static final ArrayList speeds = new ArrayList<>(); - private static boolean speedometerVisualDisplayFailed = false; - public static BufferedImage img = null; + private static final ArrayList speeds = new ArrayList<>(); + private static boolean speedometerVisualDisplayFailed = false; + public static BufferedImage img = null; - public static void init() { - LOGGER.info("Loading speedometer by Allen"); + public static void init() { + LOGGER.info("Loading speedometer by Allen"); - if(Platform.getEnvironment() != Env.CLIENT) return; + if(Platform.getEnvironment() != Env.CLIENT) return; - KeyMappingRegistry.register(CONFIG_KEY); - ClientTickEvent.CLIENT_POST.register(minecraft -> { - if(CONFIG_KEY.consumeClick()){ - Minecraft.getInstance().setScreen(getConfig(Minecraft.getInstance().screen).build()); - } - }); + KeyMappingRegistry.register(CONFIG_KEY); + ClientTickEvent.CLIENT_POST.register(minecraft -> { + if(CONFIG_KEY.consumeClick()){ + Minecraft.getInstance().setScreen(getConfig(Minecraft.getInstance().screen).build()); + } + }); - KeyMappingRegistry.register(DEBUG_KEY); - ClientTickEvent.CLIENT_POST.register(minecraft -> { - if(DEBUG_KEY.consumeClick()){ - Config.setDebug(!Config.isDebug()); - } - }); + KeyMappingRegistry.register(DEBUG_KEY); + ClientTickEvent.CLIENT_POST.register(minecraft -> { + if(DEBUG_KEY.consumeClick()){ + Config.setDebug(!Config.isDebug()); + } + }); - Config.initialize(); - Config.save(); + Config.initialize(); + Config.save(); - ClientGuiEvent.RENDER_HUD.register(Speedometer::render); + ClientGuiEvent.RENDER_HUD.register(Speedometer::render); - try { - img = ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter.png"))); - }catch (NullPointerException | IOException e){ - LOGGER.warn("Can't load speedometer icon. speedometer visual display is disabled"); - speedometerVisualDisplayFailed = true; - } + try { + img = ImageIO.read(Objects.requireNonNull(Speedometer.class.getResourceAsStream("/assets/speedometer/meter/meter-19.png"))); + }catch (NullPointerException | IOException e){ + LOGGER.warn("Can't load speedometer icon. speedometer visual display is disabled"); + speedometerVisualDisplayFailed = true; + } - LOGGER.info("Finished loading speedometer"); - } + if(img == null){ + speedometerVisualDisplayFailed = true; + } - private static void render(GuiGraphics graphics, float tick) { - if(Minecraft.getInstance().player == null) return; - Entity entity = Minecraft.getInstance().player.getRootVehicle(); + LOGGER.info("Finished loading speedometer"); + } - Vec3 vec = entity.getDeltaMovement(); + private static void render(GuiGraphics graphics, float tick) { + if(Minecraft.getInstance().player == null) return; + Entity entity = Minecraft.getInstance().player.getRootVehicle(); - double yOffset = 0.0784000015258789D; - double xOffset = 0D; - double zOffset = 0D; - double vOffset = 0D; + Vec3 vec = entity.getDeltaMovement(); - if (entity instanceof Player e) { - if (!e.onGround() && e.isCreative()) { - yOffset = 0; - } else if (e.isInWater()) { - yOffset = 0; - } - } else if (entity instanceof Boat || entity instanceof Minecart || entity instanceof Pig) { - yOffset = 0; - } + double yOffset = 0.0784000015258789D; + double xOffset = 0D; + double zOffset = 0D; + double vOffset = 0D; - double speed = (Math.sqrt(Math.pow(vec.x + xOffset, 2) + Math.pow(vec.y + yOffset, 2) + Math.pow(vec.z + zOffset, 2)) * 20)+vOffset; - double lSpeed = speed; + if (entity instanceof Player e) { + if (!e.onGround() && e.isCreative()) { + yOffset = 0; + } else if (e.isInWater()) { + yOffset = 0; + } + } else if (entity instanceof Boat || entity instanceof Minecart || entity instanceof Pig) { + yOffset = 0; + } - if (speeds.size() >= 30) { - speeds.remove(0); - } - speeds.add(speed); - speed = 0; - for (Double aDouble : speeds) { - speed += aDouble; - } - speed = speed / speeds.size(); + double speed = (Math.sqrt(Math.pow(vec.x + xOffset, 2) + Math.pow(vec.y + yOffset, 2) + Math.pow(vec.z + zOffset, 2)) * 20)+vOffset; + double lSpeed = speed; - double speedTypeSpeed = 0D; + if (speeds.size() >= 30) { + speeds.remove(0); + } + speeds.add(speed); + speed = 0; + for (Double aDouble : speeds) { + speed += aDouble; + } + speed = speed / speeds.size(); - SpeedTypes speedType = Config.getSpeedType(); - if (speedType == SpeedTypes.KNOT || (entity instanceof Boat && Config.getUseKnot())) { - speedTypeSpeed = speed * 1.94384449; - }else if (speedType == SpeedTypes.KMPH) { - speedTypeSpeed = speed * 3.6; - } else if (speedType == SpeedTypes.MPH) { - speedTypeSpeed = speed * 2.23693629; - }else { - speedTypeSpeed = speed; - } + double speedTypeSpeed = 0D; - String format = String.format("%.2f", speedTypeSpeed); + SpeedTypes speedType = Config.getSpeedType(); + if (speedType == SpeedTypes.KNOT || (entity instanceof Boat && Config.getUseKnot())) { + speedTypeSpeed = speed * 1.94384449; + }else if (speedType == SpeedTypes.KMPH) { + speedTypeSpeed = speed * 3.6; + } else if (speedType == SpeedTypes.MPH) { + speedTypeSpeed = speed * 2.23693629; + }else { + speedTypeSpeed = speed; + } - //double v = (Math.pow(1.0233435, speedTypeSpeed)-1)/100; - double v = switch (speedType){ - case KMPH -> Math.pow(speedTypeSpeed,0.87)-1; - case BlockPS, MPS -> Math.pow(speedTypeSpeed,1.25); - case MPH -> speedTypeSpeed; - case KNOT -> Math.pow(speedTypeSpeed,1.05); - }/100; - double i = (v *(316-45))+45; + String format = String.format("%.2f", speedTypeSpeed); - if(Config.getVisualSpeedometer() && !speedometerVisualDisplayFailed){ + //double v = (Math.pow(1.0233435, speedTypeSpeed)-1)/100; + double v = switch (speedType){ + case KMPH -> Math.pow(speedTypeSpeed,0.87)-1; + case BlockPS, MPS -> Math.pow(speedTypeSpeed,1.25); + case MPH -> speedTypeSpeed; + case KNOT -> Math.pow(speedTypeSpeed,1.05); + }/100; + double i = (v *(316-45))+45; - //double v = speedTypeSpeed / speedType.gatMaxVisual(); + if(Config.getVisualSpeedometer() && !speedometerVisualDisplayFailed){ - int x3 = (int) Math.round(7*Math.cos(Math.toRadians(i+90)))+(img.getWidth()/2); - int y3 = (int) Math.round(7*Math.sin(Math.toRadians(i+90)))+(img.getWidth()/2); + //double v = speedTypeSpeed / speedType.gatMaxVisual(); - BufferedImage img = new BufferedImage(Speedometer.img.getWidth(), Speedometer.img.getHeight(), Speedometer.img.getType()); - Graphics2D g2d = img.createGraphics(); - for(int x1 = 0; x1 < img.getWidth(); x1++) { - for (int y1 = 0; y1 < img.getHeight(); y1++) { - g2d.setColor(new Color(Speedometer.img.getRGB(x1,y1))); - g2d.fillRect(x1,y1,1,1); - } - } + MeterImages meterImage = null; + int minDiff = 10000; - g2d.setColor(new Color(138, 0, 0)); + for(MeterImages meterImage1 : MeterImages.values()){ + int diff = Math.abs(meterImage1.getSize()-Config.getImageSize()); + if(minDiff > diff && meterImage1.getImage() != null){ + minDiff = diff; + meterImage = meterImage1; + } + } - g2d.drawLine(x3,y3,img.getWidth()/2,img.getHeight()/2); + img = meterImage.getImage(); - int xPos = getPos(graphics, Config.getXPositionVisual(), 0, false, img.getWidth()); - int yPos = getPos(graphics, Config.getYPositionVisual(), 1, true, img.getHeight()); + int radius = Config.getImageSize()/2-4; - for(int x1 = 0; x1 < img.getWidth(); x1++){ - for(int y1 = 0; y1 < img.getHeight(); y1++){ - int x2 = x1 + xPos; - int y2 = y1 + yPos; + int x3 = (int) Math.round(radius*Math.cos(Math.toRadians(i+90)))+(Config.getImageSize()/2); + int y3 = (int) Math.round(radius*Math.sin(Math.toRadians(i+90)))+(Config.getImageSize()/2); - int rgb = img.getRGB(x1, y1); + BufferedImage img = ImageHandler.scale(Speedometer.img, Config.getImageSize(), Config.getImageSize()); + Graphics2D g2d = img.createGraphics(); - if(new Color(rgb).equals(Color.black)) continue; + g2d.setColor(new Color(138, 0, 0)); - graphics.fill(x2, y2, x2+1, y2+1, rgb); - } - } + g2d.setStroke(new BasicStroke(2)); - if(i >= 360+45){ - String string = "x" + (int)Math.floor(i/(365+45)); - graphics.drawString( - Minecraft.getInstance().font, - string, - xPos-Minecraft.getInstance().font.width(string), - yPos+6, - new Color(138, 0, 0).getRGB() - ); - } + g2d.drawLine(x3,y3,img.getWidth()/2,img.getHeight()/2); - }else { - // i -> x - // j -> y - // k -> color RGB int - String speedString = format + " " + SpeedTypes.getName(speedType).getString(); - graphics.drawString( - Minecraft.getInstance().font, - speedString, - getPos(graphics, Config.getXPositionText(), 0, false, Minecraft.getInstance().font.width(speedString)), - getPos(graphics, Config.getYPositionText(), 1, true, Minecraft.getInstance().font.lineHeight), - Config.getColor().getColor() - ); - } + int xPos = getPos(graphics, Config.getXPositionVisual(), 0, false, img.getWidth()); + int yPos = getPos(graphics, Config.getYPositionVisual(), 1, true, img.getHeight()); - if(Config.isDebug()){ - String debugData = "Velocity raw:" + "\n" + - " X: " + vec.x + "\n" + - " Y: " + vec.y + "\n" + - " Z: " + vec.z + "\n" + - "Offsets:" + "\n" + - " X: " + xOffset + "\n" + - " Y: " + yOffset + "\n" + - " Z: " + zOffset + "\n" + - " Total: " + vOffset + "\n" + - "Velocity modified:" + "\n" + - " X: " + (vec.x + xOffset) + "\n" + - " Y: " + (vec.y + yOffset) + "\n" + - " Z: " + (vec.z + zOffset) + "\n" + - " Total: " + lSpeed + "\n" + - "Velocity total average: " + speed + "\n" + - "Velocity total in " + speedType.name() + ": " + speedTypeSpeed + "\n" + - "Percentage point of visual speedometer: " + v + "\n" + - "Degree end point: " + (i+45); + for(int x1 = 0; x1 < img.getWidth(); x1++){ + for(int y1 = 0; y1 < img.getHeight(); y1++){ + int x2 = x1 + xPos - img.getWidth(); + int y2 = y1 + yPos - img.getHeight(); - Color color = new Color(255, 255, 255); + int rgb = img.getRGB(x1, y1); - int y = 0; - for(String s : debugData.split("\n")){ - drawString(graphics,0, y, s, color.getRGB()); - y+=Minecraft.getInstance().font.lineHeight+1; - } - } - } + if(new Color(rgb).equals(Color.black)) continue; - private static void drawString(GuiGraphics graphics, int x, int y, String text, int colorRGB){ - graphics.drawString( - Minecraft.getInstance().font, - text, - x, - y, - colorRGB - ); - } + graphics.fill(x2, y2, x2+1, y2+1, rgb); + } + } - static boolean flag = true; + if(i >= 360+45){ + String string = "x" + (int)Math.floor(i/(365+45)); + graphics.drawString( + Minecraft.getInstance().font, + string, + xPos-Minecraft.getInstance().font.width(string), + (int)(yPos-4.5-(Config.getImageSize()/2)), + new Color(138, 0, 0).getRGB() + ); + } - private static int getPos(GuiGraphics event, String input, int type, boolean changeFlag, int Size) { - ArrayList passerPose = new ArrayList<>(); - final char[] s = input.toCharArray(); - try{ - for(int i = 0; i x + // j -> y + // k -> color RGB int + String speedString = format + " " + SpeedTypes.getName(speedType).getString(); + graphics.drawString( + Minecraft.getInstance().font, + speedString, + getPos(graphics, Config.getXPositionText(), 0, false, Minecraft.getInstance().font.width(speedString)), + getPos(graphics, Config.getYPositionText(), 1, true, Minecraft.getInstance().font.lineHeight), + Config.getColor().getColor() + ); + } + + if(Config.isDebug()){ + String debugData = "Velocity raw:" + "\n" + + " X: " + vec.x + "\n" + + " Y: " + vec.y + "\n" + + " Z: " + vec.z + "\n" + + "Offsets:" + "\n" + + " X: " + xOffset + "\n" + + " Y: " + yOffset + "\n" + + " Z: " + zOffset + "\n" + + " Total: " + vOffset + "\n" + + "Velocity modified:" + "\n" + + " X: " + (vec.x + xOffset) + "\n" + + " Y: " + (vec.y + yOffset) + "\n" + + " Z: " + (vec.z + zOffset) + "\n" + + " Total: " + lSpeed + "\n" + + "Velocity total average: " + speed + "\n" + + "Velocity total in " + speedType.name() + ": " + speedTypeSpeed + "\n" + + "Percentage point of visual speedometer: " + v + "\n" + + "Degree end point: " + (i+45); + + Color color = new Color(255, 255, 255); + + int y = 0; + for(String s : debugData.split("\n")){ + drawString(graphics,0, y, s, color.getRGB()); + y+=Minecraft.getInstance().font.lineHeight+1; + } + } + } + + private static void drawString(GuiGraphics graphics, int x, int y, String text, int colorRGB){ + graphics.drawString( + Minecraft.getInstance().font, + text, + x, + y, + colorRGB + ); + } + + static boolean flag = true; + + private static int getPos(GuiGraphics event, String input, int type, boolean changeFlag, int Size) { + ArrayList passerPose = new ArrayList<>(); + final char[] s = input.toCharArray(); + try{ + for(int i = 0; i passerPose) { - if(type == 0){ - passerPose.add(String.valueOf(event.guiWidth())); - passerPose.add("-"); - passerPose.add("70"); - }else if(type == 1){ - passerPose.add(String.valueOf(event.guiHeight())); - passerPose.add("-"); - passerPose.add("15"); - } - } + private static void defaultValues(GuiGraphics event, int type, ArrayList passerPose) { + if(type == 0){ + passerPose.add(String.valueOf(event.guiWidth())); + passerPose.add("-"); + passerPose.add("70"); + }else if(type == 1){ + passerPose.add(String.valueOf(event.guiHeight())); + passerPose.add("-"); + passerPose.add("15"); + } + } - private static boolean testIfInt(char c) { - int i = Integer.parseInt(Character.toString(c)); - return (i == 0 || i == 1 || i == 2 || - i == 3 || i == 4 || i == 5 || - i == 6 || i == 7 || i == 8 || - i == 9); - } + private static boolean testIfInt(char c) { + int i = Integer.parseInt(Character.toString(c)); + return (i == 0 || i == 1 || i == 2 || + i == 3 || i == 4 || i == 5 || + i == 6 || i == 7 || i == 8 || + i == 9); + } - public static ConfigBuilder getConfig(Screen parent) { - ConfigBuilder builder = ConfigBuilder.create() - .setParentScreen(parent) - .setTitle(Component.translatable("speedometer.config.name")); + public static ConfigBuilder getConfig(Screen parent) { + ConfigBuilder builder = ConfigBuilder.create() + .setParentScreen(parent) + .setTitle(Component.translatable("speedometer.config.name")); - ConfigCategory category = builder.getOrCreateCategory(Component.translatable("speedometer.config.category.name")); + ConfigCategory category = builder.getOrCreateCategory(Component.translatable("speedometer.config.category.name")); - ConfigEntryBuilder entryBuilder = builder.entryBuilder(); + ConfigEntryBuilder entryBuilder = builder.entryBuilder(); - category.addEntry(entryBuilder.startEnumSelector(Component.translatable("speedometer.config.speed"), SpeedTypes.class, me.zacharias.speedometer.Config.getSpeedType()) - .setEnumNameProvider(SpeedTypes::getName) - .setSaveConsumer(me.zacharias.speedometer.Config::setSpeedType) - .build() - ); + category.addEntry(entryBuilder.startEnumSelector(Component.translatable("speedometer.config.speed"), SpeedTypes.class, me.zacharias.speedometer.Config.getSpeedType()) + .setEnumNameProvider(SpeedTypes::getName) + .setSaveConsumer(me.zacharias.speedometer.Config::setSpeedType) + .build() + ); - category.addEntry(entryBuilder.startColorField(Component.translatable("speedometer.config.color"), me.zacharias.speedometer.Config.getColor()) - .setSaveConsumer2(me.zacharias.speedometer.Config::setColor) - .build() - ); + category.addEntry(entryBuilder.startColorField(Component.translatable("speedometer.config.color"), me.zacharias.speedometer.Config.getColor()) + .setSaveConsumer2(me.zacharias.speedometer.Config::setColor) + .build() + ); - category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.knot"), me.zacharias.speedometer.Config.getUseKnot()) - .setSaveConsumer(me.zacharias.speedometer.Config::setUseKnot) - .setYesNoTextSupplier(useKnot -> Component.translatable("speedometer.useKnot."+useKnot)) - .build() - ); + category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.knot"), me.zacharias.speedometer.Config.getUseKnot()) + .setSaveConsumer(me.zacharias.speedometer.Config::setUseKnot) + .setYesNoTextSupplier(useKnot -> Component.translatable("speedometer.useKnot."+useKnot)) + .build() + ); - category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.visualSpeedometer"), me.zacharias.speedometer.Config.getVisualSpeedometer()) - .setSaveConsumer(me.zacharias.speedometer.Config::setVisualSpeedometer) - .setYesNoTextSupplier((visualSpeedometer -> Component.translatable("speedometer.visualSpeedometer."+visualSpeedometer))) - .build() - ); + category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.visualSpeedometer"), me.zacharias.speedometer.Config.getVisualSpeedometer()) + .setSaveConsumer(me.zacharias.speedometer.Config::setVisualSpeedometer) + .setYesNoTextSupplier((visualSpeedometer -> Component.translatable("speedometer.visualSpeedometer."+visualSpeedometer))) + .build() + ); - // Regex + // Regex - String xRegex = "W*w*S*s*\\+*-*\\**/*[0-9]*"; - String yRegex = "H*h*S*s*\\+*-*\\**/*[0-9]*"; + String xRegex = "W*w*S*s*\\+*-*\\**/*[0-9]*"; + String yRegex = "H*h*S*s*\\+*-*\\**/*[0-9]*"; - // Text Placement + // Text Placement - category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.xPosition.text"), Config.getXPositionText()) - .setSaveConsumer(Config::setXPositionText) - .setErrorSupplier(xPosition -> { - if(xPosition.matches(xRegex)){ - return Optional.empty(); - }else{ - return Optional.of(Component.translatable("speedometer.invalid")); - } - }) - .setTooltip( - Component.translatable("speedometer.config.tooltip.xPosition.line1"), - Component.translatable("speedometer.config.tooltip.xPosition.line2"), - Component.translatable("speedometer.config.tooltip.xPosition.line3") - ) - .build() - ); + category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.xPosition.text"), Config.getXPositionText()) + .setSaveConsumer(Config::setXPositionText) + .setErrorSupplier(xPosition -> { + if(xPosition.matches(xRegex)){ + return Optional.empty(); + }else{ + return Optional.of(Component.translatable("speedometer.invalid")); + } + }) + .setTooltip( + Component.translatable("speedometer.config.tooltip.xPosition.line1"), + Component.translatable("speedometer.config.tooltip.xPosition.line2"), + Component.translatable("speedometer.config.tooltip.xPosition.line3") + ) + .build() + ); - category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.yPosition.text"), Config.getYPositionText()) - .setSaveConsumer(Config::setYPositionText) - .setErrorSupplier(yPosition -> { - if(yPosition.matches(yRegex)){ - return Optional.empty(); - }else{ - return Optional.of(Component.translatable("speedometer.invalid")); - } - }) - .setTooltip( - Component.translatable("speedometer.config.tooltip.yPosition.line1"), - Component.translatable("speedometer.config.tooltip.yPosition.line2"), - Component.translatable("speedometer.config.tooltip.yPosition.line3") - ) - .build() - ); + category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.yPosition.text"), Config.getYPositionText()) + .setSaveConsumer(Config::setYPositionText) + .setErrorSupplier(yPosition -> { + if(yPosition.matches(yRegex)){ + return Optional.empty(); + }else{ + return Optional.of(Component.translatable("speedometer.invalid")); + } + }) + .setTooltip( + Component.translatable("speedometer.config.tooltip.yPosition.line1"), + Component.translatable("speedometer.config.tooltip.yPosition.line2"), + Component.translatable("speedometer.config.tooltip.yPosition.line3") + ) + .build() + ); - // Visual location + // Visual location - category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.xPosition.visual"), Config.getXPositionVisual()) - .setSaveConsumer(Config::setXPositionVisual) - .setErrorSupplier(xPosition -> { - if(xPosition.matches(xRegex)){ - return Optional.empty(); - }else{ - return Optional.of(Component.translatable("speedometer.invalid")); - } - }) - .setTooltip( - Component.translatable("speedometer.config.tooltip.xPosition.line1"), - Component.translatable("speedometer.config.tooltip.xPosition.line2"), - Component.translatable("speedometer.config.tooltip.xPosition.line3") - ) - .build() - ); + category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.xPosition.visual"), Config.getXPositionVisual()) + .setSaveConsumer(Config::setXPositionVisual) + .setErrorSupplier(xPosition -> { + if(xPosition.matches(xRegex)){ + return Optional.empty(); + }else{ + return Optional.of(Component.translatable("speedometer.invalid")); + } + }) + .setTooltip( + Component.translatable("speedometer.config.tooltip.xPosition.line1"), + Component.translatable("speedometer.config.tooltip.xPosition.line2"), + Component.translatable("speedometer.config.tooltip.xPosition.line3") + ) + .build() + ); - category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.yPosition.visual"), Config.getYPositionVisual()) - .setSaveConsumer(Config::setYPositionVisual) - .setErrorSupplier(yPosition -> { - if(yPosition.matches(yRegex)){ - return Optional.empty(); - }else{ - return Optional.of(Component.translatable("speedometer.invalid")); - } - }) - .setTooltip( - Component.translatable("speedometer.config.tooltip.yPosition.line1"), - Component.translatable("speedometer.config.tooltip.yPosition.line2"), - Component.translatable("speedometer.config.tooltip.yPosition.line3") - ) - .build() - ); + category.addEntry(entryBuilder.startStringDropdownMenu(Component.translatable("speedometer.config.yPosition.visual"), Config.getYPositionVisual()) + .setSaveConsumer(Config::setYPositionVisual) + .setErrorSupplier(yPosition -> { + if(yPosition.matches(yRegex)){ + return Optional.empty(); + }else{ + return Optional.of(Component.translatable("speedometer.invalid")); + } + }) + .setTooltip( + Component.translatable("speedometer.config.tooltip.yPosition.line1"), + Component.translatable("speedometer.config.tooltip.yPosition.line2"), + Component.translatable("speedometer.config.tooltip.yPosition.line3") + ) + .build() + ); - category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.debug"),Config.isDebug()) - .setSaveConsumer(Config::setDebug) - .setYesNoTextSupplier(isDebug -> Component.translatable("speedometer.debug."+isDebug)) - .setTooltip(Component.translatable("speedometer.config.tooltip.debug")) - .build() - ); + category.addEntry(entryBuilder.startBooleanToggle(Component.translatable("speedometer.config.debug"),Config.isDebug()) + .setSaveConsumer(Config::setDebug) + .setYesNoTextSupplier(isDebug -> Component.translatable("speedometer.debug."+isDebug)) + .setTooltip(Component.translatable("speedometer.config.tooltip.debug")) + .build() + ); - builder.setSavingRunnable(me.zacharias.speedometer.Config::save); + // Size of visual image - return builder; - } + category.addEntry(entryBuilder.startIntField(Component.translatable("speedometer.config.imageWidth"), Config.getImageSize()) + .setSaveConsumer(Config::setImageSize) + .setTooltip(Component.translatable("speedometer.config.tooltip.imageWidth")) + .build() + ); + + builder.setSavingRunnable(me.zacharias.speedometer.Config::save); + + return builder; + } } diff --git a/common/src/main/resources/assets/speedometer/lang/en_us.json b/common/src/main/resources/assets/speedometer/lang/en_us.json index 165a89c..4ed5af1 100644 --- a/common/src/main/resources/assets/speedometer/lang/en_us.json +++ b/common/src/main/resources/assets/speedometer/lang/en_us.json @@ -10,6 +10,7 @@ "speedometer.config.xPosition.text": "X Position for Text Meter", "speedometer.config.yPosition.text": "Y Position for Text Meter", "speedometer.config.debug": "Debug", + "speedometer.config.imageWidth": "Image Width", "speedometer.key.configKey": "Config Key", "speedometer.key.debugKey": "Debug Key", @@ -22,6 +23,9 @@ "speedometer.speed.knot": "Knot", "speedometer.speed.error": "Unknown Speed Type", + "speedometer.meter.large": "Large", + "speedometer.meter.small": "Small", + "speedometer.visualSpeedometer.true": "Visual", "speedometer.visualSpeedometer.false": "Text", @@ -41,5 +45,7 @@ "speedometer.config.tooltip.debug": "Debug Information", + "speedometer.config.tooltip.imageWidth": "Image width", + "speedometer.invalid": "Invalid String" } \ No newline at end of file diff --git a/common/src/main/resources/assets/speedometer/meter/meter-115.png b/common/src/main/resources/assets/speedometer/meter/meter-115.png new file mode 100644 index 0000000000000000000000000000000000000000..c0393d2cb7a5d113d89863442c1fa5e7055a60ed GIT binary patch literal 2496 zcmeAS@N?(olHy`uVBq!ia0y~yU?>J*4mJh`hSkot&lngu+dW+zLn`9l&b96qjTAWU zZt#gYBZ#eU#p340N?LYp7bTewdI;atPe@WYRM%)~eDlD8BWFAWdPGbN%x>l2%YVdG~F%->!ZYcE5aoUiiWOhxcB-D?Yb>+4A#?{k|S^Yxi|AWB$&3o=KniJ##$s zeWv@&_DuH7H$SM)|2gk|vCQ#ex#z`mePi3AS;boHgm#Em$o()W;qr?zjhX&BnD43V z#nQs)15Fc_Gx;;iGyj)5be-{Oklj~{rLSL@9c)TC&g9P&&y#qY;p?Kh<0W_Rwuv3N z$-Rf~PclbF(W4`sZ|>|YzIn7;eDmt?^=amLcTSX*mv6qkJwN^T@835M9&{}G{_ZZ5 z-DlhV&n^0%+njrD72`kMknxpg?e~)Cs%*!e_D24;2u^lsX=c6HT~lKB*V*2_ecM}R ztJV&^>*r5j{;JXV%l=C4>)zI5_8c{4EuIhh9=%~Zvcx*|S74sz1 zN&mD>YC!(0^|wu!-qtNKeL1JqO@{YRrbz)q{mt!pccp|ggg$fZ<>>x*@Is$vxt5j8 zRjJZLPDj5lOsHejhFOkjiGmBCC*FL0S?|{J+cqq=-?oOW-4^ihc;o)kZSs(>cAe?^BPxCzDy^S+PW<1x%UON#R>$p= z(lfRSa|YkNLK0US|2*6Q^etZv0if@RH5U?9@9UW`8tRSH#a;#%?9` zIN(d%-zR${R?FKdZiu=NoZa*8mbmxKBVSJ}5m>gOBz4YH&6&TV&sMEC@-b!8hBHqJ zcledXpt;rXG2-!EZTtc^JQy zcKW0Cqs>QLTrX~H+V_t8bS~rE-j3GtTkgg)kLhyUtQt;l|BD~`rF-xlXv*8wKzF{>e~YqW&5t}^Y(d^g;}-{j15Z_yPaZGy1pMnJ3TSQL?wSmejxtzO#iKk zDn44D-uQ4A7R*xo-d&_t_j_uESCZPQM-3Mnbjou+XT(eFy;Z&VoX?|#&l3b{1yMA1nzGqkCMwM@J>62FP`EhA6*RDpv+7F`XlWO+;m~>>d%w-POz{!`Z`yzc&;Gyg0~GCoW`|7*s&rukEh>mQu? zvsa$^i)U=wgA={IOm?r6cl8uK^Pe-bW~KiNqdOB9pL?>|ZrSOK`#5am++GETU*aJi>x@iJ&rRGsYo0H=Y;)|h(Op)vk`?dIzhO9*;<(Gc_=V4X z%e#y{AD8YdzEv!>Mdoq5PS10b14lOZZkaW6b8o_<%7&=ki`{c)u%9q4*(#EJGP|fv z&&Q@bPJ543yuFS&Ft^10lCR^TTTd#em z{FF@8@7oWGxmj((TGMXdzU>;)6dL(l{MN!3ZFNz>CD(3+CoOuE)0nAV{v_v#)kBZu zU3_&%4~FF~+;F%te3y{5wY8kNiSmnR6Ha(r^s<0##bgwsVDdpB=N^p1DrUwnO*b&+@W z?T(M)s>k-n9P_=bCiaWTO5(AH!}hfI9=SsE7beeDO6Xd(zIf-B-6>ss7go4-AnIj*adopp&R=vRbEsIm$%xLDj>ND$l zrqFfg$*k`JJGkGz+A*a{x^V5{3-7M3b2rNss@~nQK*i8?@rUVmr|#9gQhaKzhjnJY zb@l4i2Az&co>%6#-Sx|f&%V7y;p@V~otnyYf)HCPYvMph`LG=FFMLJJ| z_H9hQ+4N0E?D{S~wL)!|P1~39yyIYd@I_*Ek>2&Ezor-;mYw1J_xWw34d>Jfzf0cc zocwp;$W8gcWiBrznCx~V*18;eu3xG_dWkEbNu6+<3D4Tr|eqG^UAX}{dVtF z_sKT`li0Ugy5%xn>Hf7g|M)Vl$umrvbu^Z2_537qmE&oU-PaA19e12f7ZUcL=-FfG zTl81;q;xn3$ad$-%tI>MvwV`OLO(s7#4xkx+7b=*=QjF+2Q>FQQ?AeFw*PtN`=5D_ nE#`f;nE(2S$$Z(Z{~2YDST4J_p`(R?fq}u()z4*}Q$iB}CwlZG literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/speedometer/meter/meter.png b/common/src/main/resources/assets/speedometer/meter/meter-19.png similarity index 100% rename from common/src/main/resources/assets/speedometer/meter/meter.png rename to common/src/main/resources/assets/speedometer/meter/meter-19.png diff --git a/common/src/main/resources/assets/speedometer/meter/meter-67.png b/common/src/main/resources/assets/speedometer/meter/meter-67.png new file mode 100644 index 0000000000000000000000000000000000000000..24fd3c83bd728ba95ae2d640896ccbfca96a291e GIT binary patch literal 1225 zcmeAS@N?(olHy`uVBq!ia0y~yU~mRu4mJh`hU2Gp6f-ceOz?DZ45^5F8)NPF#6e_E zPfx>-#tsHw117~fA&&zG1i!I$uypdM9I|C}pON9bMctvpI%mtQf?~dgE%(-a+fpg= z_I<^lX#15Wi{8Flr*-q~KO>0{0i{hj1(^lu28I=;GoTj^v+^$N{9-V5 zjfBmsQ`fIuYr1WeoVu=ngNF4j3$ z-5wO)xqbV$lL~KT>(jmQ%zs{NW&Hnho&e|Vju%%W;^XywHe@xZ|Il(?u((26Y1PJ- z%dT>FtsYoB687;wp`3k2M5xYganqgE7fYOHNLOUbUN{;h?0kqX^h&?O;wP&&WVRhC zT;wLYYg73dm#;b>cYdlhot5SxB>rLf`FFzE-`ZM|d1rIJj}Ed|>U5ZT;t;ddioYIm zr#&ow^{~ahxLLR`m+gy&@dD$zE!qzYZrtm!s}B<2-P<51b^6X`b~BYZGdiCs8*n^2 zw2R?IP@2R0>zqoQ>3xfqA2R>-hG{|fygu!3OldB`r7zYLD8@2<(KMcSlf&oUt?n6~ zpK85!v%FX=xw+pnjWd1jTUMX7h0pYutforx-|7)BS3GUL`)t84gXOEvR1~@`$QN9j z{bF9~^qxfDiqI*N7xwcQZ%9fNHq@1$zO#3kLH#wy(*n~Cn7u2^8rf4~6yme3F73F? z@QyFdC&nq67w&zgKO78=g3{Jw1&4(p8`%ci+-))b322;TS2?vLLW#=7O- zzmp5p7v~#0-7rgjCG=~(=l$~q8~*lmdUw2TR4dJ#-D7fZpIpY98!CAXm&FX~uRV~S zT_d%%C@o$wmpQwzs%G)E8$WsUw!FP?YtLs%o6D_|3VKVrKb$K$d*;P+hpCc(-|XOf zdEM7;=Ee0ZG>w044U@gJ{!o33$c_0Ir~LB}liT?%U17;l>+(rEp4{8{*s18v%ST^! zO-S*0XdBCMa>wm{?X}W{ZD+RL=2z7G?J(0L_(0p4z5G{NkGv5`WAbf&9C?c`v8Cc$ z-}a^DT=SN`lXds-T+X%Xh?Ae_jtN5NW`{Jk&NnY)OkeuIbBR{KO-~i^pbtH_lmbsn zn#xZ4{N<5S!0(r?vXef>WZ%rVvolO~Qqd#H;@;0v&3}6BKCW^8wfRH5^RNGt9`OIX k|G(ZX#>4yH=2P~GC(8F7*sQ3@z`(%Z>FVdQ&MBb@0GfMIR{#J2 literal 0 HcmV?d00001 diff --git a/fabric/src/main/java/me/zacharias/speedometer/fabric/Config.java b/fabric/src/main/java/me/zacharias/speedometer/fabric/Config.java index 5112dbf..4e597f3 100644 --- a/fabric/src/main/java/me/zacharias/speedometer/fabric/Config.java +++ b/fabric/src/main/java/me/zacharias/speedometer/fabric/Config.java @@ -13,12 +13,11 @@ import net.minecraft.network.chat.Component; import static me.zacharias.speedometer.Speedometer.LOGGER; public class Config implements ModMenuApi { - @Override - public ConfigScreenFactory getModConfigScreenFactory() { - return parent -> { - ConfigBuilder builder = Speedometer.getConfig(parent); - - return builder.build(); - }; - } - } \ No newline at end of file + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return parent -> { + ConfigBuilder builder = Speedometer.getConfig(parent); + return builder.build(); + }; + } +} \ No newline at end of file diff --git a/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java b/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java index 15ec746..6b1633f 100644 --- a/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java +++ b/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java @@ -4,8 +4,8 @@ import me.zacharias.speedometer.Speedometer; import net.fabricmc.api.ModInitializer; public class SpeedometerFabric implements ModInitializer { - @Override - public void onInitialize() { - Speedometer.init(); - } + @Override + public void onInitialize() { + Speedometer.init(); + } } \ No newline at end of file diff --git a/forge/src/main/java/me/zacharias/speedometer/forge/SpeedometerForge.java b/forge/src/main/java/me/zacharias/speedometer/forge/SpeedometerForge.java index 3223636..9873d85 100644 --- a/forge/src/main/java/me/zacharias/speedometer/forge/SpeedometerForge.java +++ b/forge/src/main/java/me/zacharias/speedometer/forge/SpeedometerForge.java @@ -7,9 +7,9 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; @Mod(Speedometer.MOD_ID) public class SpeedometerForge { - public SpeedometerForge() { - // Submit our event bus to let architectury register our content on the right time - EventBuses.registerModEventBus(Speedometer.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); - Speedometer.init(); - } + public SpeedometerForge() { + // Submit our event bus to let architectury register our content on the right time + EventBuses.registerModEventBus(Speedometer.MOD_ID, FMLJavaModLoadingContext.get().getModEventBus()); + Speedometer.init(); + } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index c00f8da..63ceb0f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,9 +1,9 @@ -org.gradle.jvmargs=-Xmx1G +org.gradle.jvmargs=-Xmx8G minecraft_version=1.20.1 archives_base_name=speedometer -mod_version=2.0 +mod_version=3.0 maven_group=me.zacharias architectury_version=9.0.8