Updated to 1.21.6

Reindented Client.java to 4 spaces

fixed small issue with the tokenizer where the game whuld crash, and numbers whuld be incorrecly tokenized. Might need feuture reimplementation.
This commit is contained in:
2025-06-22 23:53:52 +02:00
parent 0fdab6874c
commit 9c05791a20
3 changed files with 286 additions and 290 deletions

View File

@@ -6,6 +6,7 @@ import dev.architectury.event.events.client.ClientTickEvent;
import dev.architectury.platform.Platform; import dev.architectury.platform.Platform;
import dev.architectury.registry.client.keymappings.KeyMappingRegistry; import dev.architectury.registry.client.keymappings.KeyMappingRegistry;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.CrashReport;
import net.minecraft.client.DeltaTracker; import net.minecraft.client.DeltaTracker;
import net.minecraft.client.KeyMapping; import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@@ -182,7 +183,8 @@ public class Client {
} }
if(Config.isDebug()){ if(Config.isDebug()){
String debugData = "Velocity raw:" + "\n" + String debugData = "Speedometer: "+VERSION+"\n"+
"Velocity raw:" + "\n" +
" X: " + vec.x + "\n" + " X: " + vec.x + "\n" +
" Y: " + vec.y + "\n" + " Y: " + vec.y + "\n" +
" Z: " + vec.z + "\n" + " Z: " + vec.z + "\n" +
@@ -239,86 +241,80 @@ public class Client {
} }
private static int getPos(GuiGraphics event, int width, String input, boolean isXPosition) { private static int getPos(GuiGraphics event, int width, String input, boolean isXPosition) {
ArrayList<String> passerPose = new ArrayList<>(); ArrayList<String> tokens = new ArrayList<>();
final char[] s = input.toCharArray(); final char[] s = input.toCharArray();
try{ try{
for(int i = 0; i <s.length; i++){ for(int i = 0; i <s.length; i++){
char c = s[i]; char c = s[i];
if(c == 'W' || c == 'H'){ if(c == '+' ||
if(isXPosition) passerPose.add(String.valueOf(event.guiWidth()));
else passerPose.add(String.valueOf(event.guiHeight()));
}
else if(c == 'h' || c == 'w'){
if(isXPosition) passerPose.add(String.valueOf(event.guiWidth() / 2));
else passerPose.add(String.valueOf(event.guiHeight() / 2));
}
else if(c == 'S' || c == 's'){
passerPose.add(String.valueOf(width));
}
else if(c == '+' ||
c == '-' || c == '-' ||
c == '*' || c == '*' ||
c == '/'){ c == '/'){
passerPose.add(Character.toString(c)); tokens.add(Character.toString(c));
} }
else if(Character.isDigit(c)){ else if(Character.isDigit(c)){
int lastIndex = i - 1; int lastIndex = i - 1;
if(lastIndex > 0 && passerPose.get(lastIndex).matches("^[0-9]+$")) { if(lastIndex >= 0 && tokens.get(lastIndex).matches("^[0-9]+$")) {
passerPose.add(passerPose.removeLast() + c); tokens.set(tokens.size() - 1, tokens.get(tokens.size() - 1) + c);
} }
else else
{ {
passerPose.add(Character.toString(c)); tokens.add(Character.toString(c));
} }
} }
else{ else{
throw new Exception(); throw new IllegalArgumentException("Invalid character in input string: " + c);
} }
} }
}catch (Exception e){ }catch (Exception e){
passerPose.clear(); tokens.clear();
defaultValues(event, isXPosition, passerPose); defaultValues(event, isXPosition, tokens);
} }
//
int position; int position;
try{ try{
position = Integer.parseInt(passerPose.getFirst()); position = Integer.parseInt(tokens.getFirst());
}catch (NumberFormatException e){ }catch (NumberFormatException e){
passerPose.clear(); tokens.clear();
defaultValues(event, isXPosition, passerPose); defaultValues(event, isXPosition, tokens);
position = Integer.parseInt(passerPose.getFirst()); position = Integer.parseInt(tokens.getFirst());
} }
for(int i = 1; i < passerPose.size(); i++){ for(int i = 1; i < tokens.size(); i+=2){
boolean first = false; String operator = tokens.get(i);
String s1 = passerPose.get(i); if(i + 1 >= tokens.size()) {
String s2 = ""; LOGGER.error("Invalid expression: missing operand after operator '{}'", operator);
break;
}
String operand = tokens.get(i + 1);
int value;
try { try {
s2 = passerPose.get(i+1); value = Integer.parseInt(operand);
}catch (Exception e){ }
first = true; catch (NumberFormatException e) {
LOGGER.error("Invalid operand: '{}'. Using default value. REPORT THIS! https://github.com/zaze06/Speedometer/issues/new/choose", operand);
Minecraft.getInstance().emergencySaveAndCrash(new CrashReport("Invalid operand in speedometer position calculation. REPORT THIS! https://github.com/zaze06/Speedometer/issues/new/choose", e));
return -1;
} }
if(Objects.equals(s1, "+") && !first){ switch (operator) {
position += Integer.parseInt(s2); case "+" -> position += value;
}else if(Objects.equals(s1, "-") && !first){ case "-" -> position -= value;
position -= Integer.parseInt(s2); case "*" -> position *= value;
}else if(Objects.equals(s1, "*") && !first){ case "/" -> position /= value;
position *= Integer.parseInt(s2);
}else if(Objects.equals(s1, "/") && !first){
position /= Integer.parseInt(s2);
} }
} }
if((Config.isDebug()) && Config.getCounter() < 2) {
String speedDisplayType = SpeedTypes.getName(Config.getSpeedType()).getString(); if (Config.isDebug() && Config.getCounter() < 2) {
String splitRawSpeedPosition = Arrays.toString(passerPose.toArray()); LOGGER.info("Selected speed type: {}\n{}\n\n{}\n\n{}",
String rawSpeedPosition = isXPosition ? Config.getXPosition() : Config.getYPosition(); SpeedTypes.getName(Config.getSpeedType()).getString(),
LOGGER.info("Selected speed type: {}\n{}\n\n{}\n\n{}", speedDisplayType, splitRawSpeedPosition, position, rawSpeedPosition); Arrays.toString(tokens.toArray()),
position,
isXPosition ? Config.getXPosition() : Config.getYPosition());
Config.addCounter(); Config.addCounter();
} }
return position; return position;
} }

View File

@@ -1,29 +1,29 @@
org.gradle.jvmargs=-Xmx8G org.gradle.jvmargs=-Xmx8G
minecraft_version=1.21.5 minecraft_version=1.21.6
archives_base_name=speedometer archives_base_name=speedometer
mod_version=6.2.4 mod_version=6.3.0
maven_group=me.zacharias maven_group=me.zacharias
# https://modrinth.com/mod/architectury-api/versions # https://modrinth.com/mod/architectury-api/versions
architectury_version=16.0.3 architectury_version=17.0.6
# https://modrinth.com/mod/cloth-config/versions # https://modrinth.com/mod/cloth-config/versions
cloth_config_version = 18.0.145 cloth_config_version = 19.0.147
# NeoForged Only # NeoForged Only
# https://neoforged.net/ # https://neoforged.net/
neoforge_version = 21.5.14-beta neoforge_version = 21.6.12-beta
# Fabric Only # Fabric Only
# https://fabricmc.net/develop/ # https://fabricmc.net/develop/
fabric_loader_version=0.16.10 fabric_loader_version=0.16.14
fabric_api_version=0.119.6 fabric_api_version=0.127.1
# Fabric Only # Fabric Only
# https://modrinth.com/mod/modmenu/versions # https://modrinth.com/mod/modmenu/versions
modmenu_version = 14.0.0-rc.2 modmenu_version = 15.0.0-beta.3
# Version of the org.json json library # Version of the org.json json library
json_version = 20240303 json_version = 20240303

View File

@@ -27,7 +27,7 @@ public class SpeedometerNeoForge {
} }
} }
@EventBusSubscriber(modid = MOD_ID, bus = EventBusSubscriber.Bus.MOD, value = Dist.CLIENT) @EventBusSubscriber(modid = MOD_ID,/* bus = EventBusSubscriber.Bus.MOD, */value = Dist.CLIENT)
class EventHandler class EventHandler
{ {
/** /**