From 1a59e3dc2a721c37a74b2411fc2b92587d55b1fc Mon Sep 17 00:00:00 2001 From: Zacharias Date: Wed, 18 Dec 2024 14:12:47 +0100 Subject: [PATCH] fabric.mod.json: neoforge.mods.toml: > Updated minumum version of mods and load order *.java: > cleaned up some code Updated to version 6.2.2 Fixed bug in Client.java for the position parser --- .../java/me/zacharias/speedometer/Client.java | 127 ++++-------------- .../java/me/zacharias/speedometer/Config.java | 13 +- .../me/zacharias/speedometer/ConfigMenu.java | 4 +- .../{Debuger.java => Debugger.java} | 2 +- .../me/zacharias/speedometer/SpeedTypes.java | 20 +-- .../me/zacharias/speedometer/Speedometer.java | 4 +- .../speedometer/SpeedometerIcon.java | 9 +- fabric/build.gradle | 4 +- .../speedometer/fabric/SpeedometerFabric.java | 12 -- fabric/src/main/resources/fabric.mod.json | 4 +- gradle.properties | 24 +++- .../forge/SpeedometerNeoForge.java | 31 +---- .../resources/META-INF/neoforge.mods.toml | 10 +- resourcepack.md | 4 +- 14 files changed, 78 insertions(+), 190 deletions(-) rename common/src/main/java/me/zacharias/speedometer/{Debuger.java => Debugger.java} (83%) diff --git a/common/src/main/java/me/zacharias/speedometer/Client.java b/common/src/main/java/me/zacharias/speedometer/Client.java index b954dbc..4f4e985 100644 --- a/common/src/main/java/me/zacharias/speedometer/Client.java +++ b/common/src/main/java/me/zacharias/speedometer/Client.java @@ -37,7 +37,7 @@ public class Client { ); private static final ArrayList speeds = new ArrayList<>(); - private static boolean speedometerVisualDisplayFailed = false; + public static void init(){ @@ -59,7 +59,7 @@ public class Client { } else if(Minecraft.getInstance().player != null) { - Minecraft.getInstance().player.sendSystemMessage( + Minecraft.getInstance().player.displayClientMessage( Component .translatable("speedometer.error.missing_cloth") .withColor(new Color(190, 0, 0).getRGB()) @@ -68,7 +68,7 @@ public class Client { .literal("Open Config") .withStyle(ChatFormatting.UNDERLINE) .withStyle((style) -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_FILE, Config.getConfigPath()))) - )); + ), false); LOGGER.warn(Component.translatable("speedometer.error.missing_cloth").getString()); } else @@ -91,39 +91,6 @@ public class Client { ClientGuiEvent.RENDER_HUD.register(Client::render); LOGGER.info("Finished loading speedometer"); - - /*((IPackRepository) Minecraft.getInstance().getResourcePackRepository()).addSource(new RepositorySource() { - @Override - public void loadPacks(Consumer consumer) { - consumer.accept(new Pack(new PackLocationInfo( - "quarter_circle_speedometer", - Component.translatable("resourcepack.speedometer.quarter_circle_speedometer"), - new PackSource() { - @Override - public Component decorate(Component component) { - return component; - } - - @Override - public boolean shouldAddAutomatically() { - return false; - } - }, - Optional.empty() - ), - new Pack.ResourcesSupplier() { - @Override - public PackResources openPrimary(PackLocationInfo packLocationInfo) { - return packLocationInfo.; - } - - @Override - public PackResources openFull(PackLocationInfo packLocationInfo, Pack.Metadata metadata) { - return null; - } - })); - } - });*/ } private static void render(GuiGraphics graphics, DeltaTracker deltaTracker) { @@ -189,42 +156,6 @@ public class Client { BufferedImage img = ImageHandler.scale(ICON.getSpeedometerIcon(speedTypeSpeed), Config.getImageSize(), Config.getImageSize()); - /*int radius = img.getWidth()/2-4; - - int x3 = (int) Math.round(radius*Math.cos(Math.toRadians(i+90)))+(img.getWidth()/2); - int y3 = (int) Math.round(radius*Math.sin(Math.toRadians(i+90)))+(img.getHeight()/2); - - Graphics2D g2d = img.createGraphics(); - - g2d.setColor(new Color(138, 0, 0)); - - g2d.setStroke(new BasicStroke(2)); - - g2d.drawLine(x3,y3,img.getWidth()/2,img.getHeight()/2); - - 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(); - - int rgb = img.getRGB(x1, y1); - - if(new Color(rgb).equals(Color.black)) continue; - - graphics.fill(x2, y2, x2+1, y2+1, rgb); - } - } - - 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-((double) Config.getImageSize() /2)), - new Color(138, 0, 0).getRGB() - ); - }*/ for(int x1 = 0; x1 < img.getWidth(); x1++){ for(int y1 = 0; y1 < img.getHeight(); y1++){ int x2 = x1 + xPos - img.getWidth(); @@ -268,8 +199,8 @@ public class Client { " Total: " + lSpeed + "\n" + "Velocity total average: " + speed + "\n" + "Velocity total in " + speedType.name() + ": " + speedTypeSpeed + "\n" + - "Endpoint position: (" + Debuger.x + ", " + Debuger.y + ")\n" + - "Percentage point of visual speedometer: " + Debuger.angle + "\n" + + "Endpoint position: (" + Debugger.x + ", " + Debugger.y + ")\n" + + "Percentage point of visual speedometer: " + Debugger.angle + "\n" + (Config.getVisualSpeedometer()?"Visual Size: "+Config.getImageSize():"Textual display"); Color color = new Color(255, 255, 255); @@ -298,36 +229,35 @@ public class Client { try{ for(int i = 0; i 0 && passerPose.get(i - 1).matches("^[0-9]+$")) { - Integer.parseInt(passerPose.get(i - 1)); - passerPose.add(i - 1, passerPose.get(i - 1) + s[i]); - } - else - { - passerPose.add(Character.toString(s[i])); - } - }catch (NumberFormatException e){ - passerPose.add(Character.toString(s[i])); + } + else if(c == '+' || + c == '-' || + c == '*' || + c == '/'){ + passerPose.add(Character.toString(c)); + } + else if(Character.isDigit(c)){ + int lastIndex = i - 1; + if(lastIndex > 0 && passerPose.get(lastIndex).matches("^[0-9]+$")) { + passerPose.add(passerPose.removeLast() + c); } - }else{ + else + { + passerPose.add(Character.toString(c)); + } + } + else{ throw new Exception(); } } @@ -342,6 +272,7 @@ public class Client { try{ position = Integer.parseInt(passerPose.getFirst()); }catch (NumberFormatException e){ + passerPose.clear(); defaultValues(event, isXPosition, passerPose); position = Integer.parseInt(passerPose.getFirst()); } diff --git a/common/src/main/java/me/zacharias/speedometer/Config.java b/common/src/main/java/me/zacharias/speedometer/Config.java index 073da51..a1a1717 100644 --- a/common/src/main/java/me/zacharias/speedometer/Config.java +++ b/common/src/main/java/me/zacharias/speedometer/Config.java @@ -1,7 +1,6 @@ package me.zacharias.speedometer; import dev.architectury.platform.Platform; -import net.minecraft.client.Minecraft; import org.json.JSONException; import org.json.JSONObject; @@ -32,7 +31,7 @@ public class Config { } config = new JSONObject(); - defualt(); + defaultValues(); }else { try { BufferedReader in = new BufferedReader(new FileReader(configFile)); @@ -62,7 +61,7 @@ public class Config { } config = new JSONObject(); - defualt(); + defaultValues(); return; } @@ -72,20 +71,20 @@ public class Config { if(config.getFloat("version")!=configVersion){ if(config.getFloat("version") > configVersion){ LOGGER.warn("Config version is too new, resting"); - defualt(); + defaultValues(); save(); }else if(config.getFloat("version") < configVersion){ config = new JSONObject(); LOGGER.warn("Config version is outdated, resting"); - defualt(); + defaultValues(); save(); } } }else{ config = new JSONObject(); - defualt(); + defaultValues(); save(); } } catch (IOException e) { @@ -94,7 +93,7 @@ public class Config { } } - private static void defualt() { + private static void defaultValues() { if(!config.has("speed")) { config.put("speed", SpeedTypes.BlockPS); } diff --git a/common/src/main/java/me/zacharias/speedometer/ConfigMenu.java b/common/src/main/java/me/zacharias/speedometer/ConfigMenu.java index 7d4aa92..616c507 100644 --- a/common/src/main/java/me/zacharias/speedometer/ConfigMenu.java +++ b/common/src/main/java/me/zacharias/speedometer/ConfigMenu.java @@ -23,9 +23,7 @@ public class ConfigMenu { ); category.addEntry(entryBuilder.startColorField(Component.translatable("speedometer.config.color"), me.zacharias.speedometer.Config.getColorRGB()) - .setSaveConsumer2(color -> { - me.zacharias.speedometer.Config.setColor(color.getRed(), color.getGreen(), color.getBlue()); - }) + .setSaveConsumer2(color -> Config.setColor(color.getRed(), color.getGreen(), color.getBlue())) .build() ); diff --git a/common/src/main/java/me/zacharias/speedometer/Debuger.java b/common/src/main/java/me/zacharias/speedometer/Debugger.java similarity index 83% rename from common/src/main/java/me/zacharias/speedometer/Debuger.java rename to common/src/main/java/me/zacharias/speedometer/Debugger.java index dc4cdb1..2fa388d 100644 --- a/common/src/main/java/me/zacharias/speedometer/Debuger.java +++ b/common/src/main/java/me/zacharias/speedometer/Debugger.java @@ -1,6 +1,6 @@ package me.zacharias.speedometer; -public class Debuger { +public class Debugger { public static double angle; public static double x; public static double y; diff --git a/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java b/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java index 0cf412b..3b754b0 100644 --- a/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java +++ b/common/src/main/java/me/zacharias/speedometer/SpeedTypes.java @@ -3,17 +3,11 @@ package me.zacharias.speedometer; import net.minecraft.network.chat.Component; public enum SpeedTypes { - MPH(20), - KMPH(200), - MPS(10), - BlockPS(10), - KNOT(20); - - private final int maxVisual; - - SpeedTypes(int maxVisual){ - this.maxVisual = maxVisual; - } + MPH, + KMPH, + MPS, + BlockPS, + KNOT; public static Component getName(Enum anEnum) { if(anEnum instanceof SpeedTypes speedType) { @@ -28,8 +22,4 @@ public enum SpeedTypes { return Component.translatable("speedometer.speed.error"); } } - - 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 203c907..a73839c 100644 --- a/common/src/main/java/me/zacharias/speedometer/Speedometer.java +++ b/common/src/main/java/me/zacharias/speedometer/Speedometer.java @@ -3,7 +3,6 @@ package me.zacharias.speedometer; import dev.architectury.platform.Platform; import dev.architectury.utils.Env; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; import net.minecraft.server.packs.resources.ResourceManager; @@ -64,8 +63,7 @@ public class Speedometer return; } - try { - BufferedReader stream = resource.get().openAsReader(); + try(BufferedReader stream = resource.get().openAsReader()) { String tmp; StringBuilder builder = new StringBuilder(); while ((tmp = stream.readLine()) != null) { diff --git a/common/src/main/java/me/zacharias/speedometer/SpeedometerIcon.java b/common/src/main/java/me/zacharias/speedometer/SpeedometerIcon.java index 58405b9..2f440d7 100644 --- a/common/src/main/java/me/zacharias/speedometer/SpeedometerIcon.java +++ b/common/src/main/java/me/zacharias/speedometer/SpeedometerIcon.java @@ -10,14 +10,11 @@ import org.json.JSONObject; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Objects; import java.util.Optional; -import static me.zacharias.speedometer.Speedometer.MOD_ID; - public class SpeedometerIcon { private BufferedImage speedometerIcon; private Pointer pointer; @@ -169,7 +166,7 @@ class Pointer } double angle = ((speed/max) * end)+start; if(angle > end && !overflow) angle = end; - Debuger.angle = angle; + Debugger.angle = angle; if(Objects.nonNull(image)) { @@ -183,8 +180,8 @@ class Pointer double angleRads = Math.toRadians(180+angle); int endX = (int) (Math.cos(angleRads) * length + this.start.x); int endY = (int) (Math.sin(angleRads) * length + this.start.y); - Debuger.x = endX; - Debuger.y = endY; + Debugger.x = endX; + Debugger.y = endY; g2d.setColor(c); g2d.setStroke(new BasicStroke(3, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); diff --git a/fabric/build.gradle b/fabric/build.gradle index 6287108..513edfd 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -23,12 +23,12 @@ repositories { dependencies { modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}" - modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}" + modApi "net.fabricmc.fabric-api:fabric-api:${rootProject.fabric_api_version}+${rootProject.minecraft_version}" // Remove the next line if you don't want to depend on the API modApi "dev.architectury:architectury-fabric:${rootProject.architectury_version}" modApi "me.shedaniel.cloth:cloth-config-fabric:${rootProject.cloth_config_version}" - modApi "com.terraformersmc:modmenu:11.0.0" + modApi "com.terraformersmc:modmenu:${rootProject.modmenu_version}" modApi "eu.pb4:placeholder-api:2.4.0-pre.2+1.21" common(project(path: ":common", configuration: "namedElements")) { transitive false } 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 22e3e53..7a346de 100644 --- a/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java +++ b/fabric/src/main/java/me/zacharias/speedometer/fabric/SpeedometerFabric.java @@ -3,23 +3,11 @@ package me.zacharias.speedometer.fabric; import me.zacharias.speedometer.Speedometer; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.resource.ResourceManagerHelper; -import net.fabricmc.fabric.api.resource.ResourcePackActivationType; import net.fabricmc.fabric.api.resource.SimpleSynchronousResourceReloadListener; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.ModContainer; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.repository.RepositorySource; import net.minecraft.server.packs.resources.ResourceManager; -import java.util.HashSet; -import java.util.Set; - -import static me.zacharias.speedometer.Speedometer.LOGGER; -import static me.zacharias.speedometer.Speedometer.MOD_ID; - public class SpeedometerFabric implements ModInitializer { @Override public void onInitialize() { diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index 8cdab2a..e31de5a 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -21,9 +21,9 @@ "depends": { "fabricloader": ">=0.15.11", "minecraft": ">=1.21", - "architectury": ">=13.0.1" + "architectury": ">=13.0.5" }, "suggests": { - "cloth-config1": ">=15.0.127" + "cloth-config1": ">=15.0.140" } } diff --git a/gradle.properties b/gradle.properties index 4aa6863..d21b88b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,19 +1,29 @@ org.gradle.jvmargs=-Xmx8G -minecraft_version=1.21.1 +minecraft_version=1.21.4 archives_base_name=speedometer -mod_version=6.2.1 +mod_version=6.2.2 maven_group=me.zacharias -architectury_version=13.0.8 +# https://modrinth.com/mod/architectury-api/versions +architectury_version=15.0.1 -fabric_loader_version=0.16.5 -fabric_api_version=0.105.0+1.21.1 +# https://modrinth.com/mod/cloth-config/versions +cloth_config_version = 17.0.144 -neoforge_version = 21.1.66 +# NeoForged Only +# https://neoforged.net/ +neoforge_version = 21.4.30-beta -cloth_config_version = 15.0.140 +# Fabric Only +# https://fabricmc.net/develop/ +fabric_loader_version=0.16.9 +fabric_api_version=0.112.1 + +# Fabric Only +# https://modrinth.com/mod/modmenu/versions +modmenu_version = 13.0.0-beta.1 # Version of the org.json json library json_version = 20240303 \ No newline at end of file diff --git a/neoforge/src/main/java/me/zacharias/speedometer/forge/SpeedometerNeoForge.java b/neoforge/src/main/java/me/zacharias/speedometer/forge/SpeedometerNeoForge.java index 2d42c48..76dac13 100644 --- a/neoforge/src/main/java/me/zacharias/speedometer/forge/SpeedometerNeoForge.java +++ b/neoforge/src/main/java/me/zacharias/speedometer/forge/SpeedometerNeoForge.java @@ -2,18 +2,6 @@ package me.zacharias.speedometer.forge; import com.mojang.datafixers.util.Unit; import me.zacharias.speedometer.Speedometer; -import net.minecraft.client.Minecraft; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.AbstractPackResources; -import net.minecraft.server.packs.PackLocationInfo; -import net.minecraft.server.packs.PackResources; -import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.repository.KnownPack; -import net.minecraft.server.packs.repository.Pack; -import net.minecraft.server.packs.repository.PackSource; -import net.minecraft.server.packs.resources.IoSupplier; -import net.minecraft.server.packs.resources.PreparableReloadListener; import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.server.packs.resources.SimplePreparableReloadListener; import net.minecraft.util.profiling.ProfilerFiller; @@ -23,19 +11,8 @@ import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; -import net.neoforged.neoforge.client.ClientNeoForgeMod; import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent; -import net.neoforged.neoforge.common.NeoForge; -import net.neoforged.neoforge.resource.ResourcePackLoader; -import org.jetbrains.annotations.Nullable; - -import java.io.InputStream; -import java.util.Optional; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; - -import static me.zacharias.speedometer.Speedometer.*; +import org.jetbrains.annotations.NotNull; @Mod(Speedometer.MOD_ID) public class SpeedometerNeoForge { @@ -52,7 +29,7 @@ class EventHandler { /** * Register the reload listener for the speedometers - * This is required since i havent found how to put this in the Architecture Abstraction layer(Common module) + * This is required since i haven't found how to put this in the Architecture Abstraction layer(Common module) * TODO: Find a way to put this in the Abstraction layer * @param event The event that is fired when the client reloads resources */ @@ -60,12 +37,12 @@ class EventHandler private static void onResourceReload(RegisterClientReloadListenersEvent event) { event.registerReloadListener(new SimplePreparableReloadListener() { @Override - protected Unit prepare(ResourceManager arg, ProfilerFiller arg2) { + protected @NotNull Unit prepare(@NotNull ResourceManager arg, @NotNull ProfilerFiller arg2) { return Unit.INSTANCE; } @Override - protected void apply(Unit object, ResourceManager resourceManager, ProfilerFiller arg2) { + protected void apply(@NotNull Unit object, @NotNull ResourceManager resourceManager, @NotNull ProfilerFiller arg2) { Speedometer.loadSpeedometers(resourceManager); } }); diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index ed70f69..4ddad23 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -82,12 +82,12 @@ Just displaying your speed [[dependencies.speedometer]] modId="architectury" mandatory=true - versionRange="[13.0.1,)" - ordering="NONE" + versionRange="[13.0.5,)" + ordering="BEFORE" side="CLIENT" [[dependencies.speedometer]] modId="cloth_config" - mandatory=false - versionRange="[15.0.127,)" - ordering="NONE" + type="optional" + versionRange="[15.0.140,)" + ordering="BEFORE" side="CLIENT" \ No newline at end of file diff --git a/resourcepack.md b/resourcepack.md index 6681870..b8ad5c0 100644 --- a/resourcepack.md +++ b/resourcepack.md @@ -9,7 +9,7 @@ This feature is supported in ## `pack.mcmeta` The mcmeta file has no differences just make sure it's a valid pack_format for the version - 1.21.x: `"pack_format": 34` -- I recommend adding this, so that you dont need to update the format since the only real requirement is using version 6.2 or newer of this mod +- I recommend adding this, so that you don't need to update the format since the only real requirement is using version 6.2 or newer of this mod ```json "supported_formats": { "min_inclusive": 34, @@ -91,4 +91,4 @@ I have created a JSON schema for this that is available at [speedometer_config_s ```json "$schema": "https://raw.githubusercontent.com/zaze06/Speedometer/refs/heads/master/schemas/speedometer_config_schema.json", ``` -in the root object, and the schema shuld apply, else if your editor supports it you can add the schema to all `speedometer.json` files \ No newline at end of file +in the root object, and the schema should apply, else if your editor supports it you can add the schema to all `speedometer.json` files \ No newline at end of file