Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
*/
dependencies {

embed 'org.mariuszgromada.math:MathParser.org-mXparser:6.1.0'
}
7 changes: 6 additions & 1 deletion src/main/java/com/cleanroommc/modularui/ModularUI.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLLoadCompleteEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.mariuszgromada.math.mxparser.License;

@Mod(modid = ModularUI.ID,
name = ModularUI.NAME,
Expand Down Expand Up @@ -37,6 +37,11 @@ public class ModularUI {
private static boolean blurLoaded = false;
private static boolean sorterLoaded = false;

static {
// confirm mXparser license
License.iConfirmNonCommercialUse("CleanroomMC");
}

@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
blurLoaded = Loader.isModLoaded("blur");
Expand Down
46 changes: 46 additions & 0 deletions src/main/java/com/cleanroommc/modularui/utils/MathUtils.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,53 @@
package com.cleanroommc.modularui.utils;

import org.mariuszgromada.math.mxparser.Constant;
import org.mariuszgromada.math.mxparser.Expression;

public class MathUtils {

// SI prefixes
public static final Constant k = new Constant("k", 1e3);
public static final Constant M = new Constant("M", 1e6);
public static final Constant G = new Constant("G", 1e9);
public static final Constant T = new Constant("T", 1e12);
public static final Constant P = new Constant("P", 1e15);
public static final Constant E = new Constant("E", 1e18);
public static final Constant Z = new Constant("Z", 1e21);
public static final Constant Y = new Constant("Y", 1e24);
public static final Constant m = new Constant("m", 1e-3);
public static final Constant u = new Constant("u", 1e-6);
public static final Constant n = new Constant("n", 1e-9);
public static final Constant p = new Constant("p", 1e-12);
public static final Constant f = new Constant("f", 1e-15);
public static final Constant a = new Constant("a", 1e-18);
public static final Constant z = new Constant("z", 1e-21);
public static final Constant y = new Constant("y", 1e-24);

public static ParseResult parseExpression(String expression) {
return parseExpression(expression, Double.NaN, false);
}

public static ParseResult parseExpression(String expression, boolean useSiPrefixes) {
return parseExpression(expression, Double.NaN, useSiPrefixes);
}

public static ParseResult parseExpression(String expression, double defaultValue) {
return parseExpression(expression, defaultValue, true);
}

public static ParseResult parseExpression(String expression, double defaultValue, boolean useSiPrefixes) {
if (expression == null || expression.isEmpty()) return ParseResult.success(defaultValue);
Expression e = new Expression(expression);
if (useSiPrefixes) {
e.addConstants(k, M, G, T, P, E, Z, Y, m, u, n, p, f, a, z, y);
}
double result = e.calculate();
if (Double.isNaN(result)) {
return ParseResult.failure(defaultValue, e.getErrorMessage());
}
return ParseResult.success(result);
}

public static int clamp(int v, int min, int max) {
return Math.max(min, Math.min(v, max));
}
Expand Down
46 changes: 46 additions & 0 deletions src/main/java/com/cleanroommc/modularui/utils/ParseResult.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.cleanroommc.modularui.utils;

import org.jetbrains.annotations.NotNull;

public class ParseResult {

private final double result;
private final String error;

public static ParseResult success(double result) {
return new ParseResult(result, null);
}

public static ParseResult failure(@NotNull String error) {
return failure(Double.NaN, error);
}

public static ParseResult failure(double value, @NotNull String error) {
return new ParseResult(value, error);
}

private ParseResult(double result, String error) {
this.result = result;
this.error = error;
}

public boolean isSuccess() {
return this.error == null;
}

public boolean isFailure() {
return this.error != null;
}

public boolean hasValue() {
return !Double.isNaN(this.result);
}

public double getResult() {
return result;
}

public String getError() {
return error;
}
}
68 changes: 0 additions & 68 deletions src/main/java/com/cleanroommc/modularui/utils/math/Constant.java

This file was deleted.

41 changes: 0 additions & 41 deletions src/main/java/com/cleanroommc/modularui/utils/math/Direction.java

This file was deleted.

58 changes: 0 additions & 58 deletions src/main/java/com/cleanroommc/modularui/utils/math/Group.java

This file was deleted.

Loading