aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev')
-rw-r--r--src/main/java/dev/isxander/yacl/api/utils/Dimension.java33
-rw-r--r--src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java11
-rw-r--r--src/main/java/dev/isxander/yacl/config/ConfigInstance.java2
-rw-r--r--src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java5
-rw-r--r--src/main/java/dev/isxander/yacl/config/NbtConfigInstance.java13
-rw-r--r--src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java115
-rw-r--r--src/main/java/dev/isxander/yacl/impl/utils/YACLConstants.java8
7 files changed, 177 insertions, 10 deletions
diff --git a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java
new file mode 100644
index 0000000..0de0a58
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java
@@ -0,0 +1,33 @@
+package dev.isxander.yacl.api.utils;
+
+import dev.isxander.yacl.impl.utils.DimensionIntegerImpl;
+
+public interface Dimension<T extends Number> {
+ T x();
+ T y();
+
+ T width();
+ T height();
+
+ T xLimit();
+ T yLimit();
+
+ T centerX();
+ T centerY();
+
+ boolean isPointInside(T x, T y);
+
+ MutableDimension<T> clone();
+
+ Dimension<T> withX(T x);
+ Dimension<T> withY(T y);
+ Dimension<T> withWidth(T width);
+ Dimension<T> withHeight(T height);
+
+ Dimension<T> moved(T x, T y);
+ Dimension<T> expanded(T width, T height);
+
+ static MutableDimension<Integer> ofInt(int x, int y, int width, int height) {
+ return new DimensionIntegerImpl(x, y, width, height);
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java b/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java
new file mode 100644
index 0000000..eff0186
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java
@@ -0,0 +1,11 @@
+package dev.isxander.yacl.api.utils;
+
+public interface MutableDimension<T extends Number> extends Dimension<T> {
+ MutableDimension<T> setX(T x);
+ MutableDimension<T> setY(T y);
+ MutableDimension<T> setWidth(T width);
+ MutableDimension<T> setHeight(T height);
+
+ MutableDimension<T> move(T x, T y);
+ MutableDimension<T> expand(T width, T height);
+}
diff --git a/src/main/java/dev/isxander/yacl/config/ConfigInstance.java b/src/main/java/dev/isxander/yacl/config/ConfigInstance.java
index 18733f3..3ceee6d 100644
--- a/src/main/java/dev/isxander/yacl/config/ConfigInstance.java
+++ b/src/main/java/dev/isxander/yacl/config/ConfigInstance.java
@@ -16,8 +16,6 @@ import java.lang.reflect.InvocationTargetException;
* @param <T> config data type
*/
public abstract class ConfigInstance<T> {
- protected final static Logger logger = LoggerFactory.getLogger("YetAnotherConfigLib");
-
private final Class<T> configClass;
private final T defaultInstance;
private T instance;
diff --git a/src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java b/src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java
index 3e075ab..40c2c99 100644
--- a/src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java
+++ b/src/main/java/dev/isxander/yacl/config/GsonConfigInstance.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl.config;
import com.google.gson.*;
+import dev.isxander.yacl.impl.utils.YACLConstants;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
@@ -53,7 +54,7 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
@Override
public void save() {
try {
- logger.info("Saving {}...", getConfigClass().getSimpleName());
+ YACLConstants.LOGGER.info("Saving {}...", getConfigClass().getSimpleName());
Files.writeString(path, gson.toJson(getConfig()), StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE);
} catch (IOException e) {
e.printStackTrace();
@@ -68,7 +69,7 @@ public class GsonConfigInstance<T> extends ConfigInstance<T> {
return;
}
- logger.info("Loading {}...", getConfigClass().getSimpleName());
+ YACLConstants.LOGGER.info("Loading {}...", getConfigClass().getSimpleName());
setConfig(gson.fromJson(Files.readString(path), getConfigClass()));
} catch (IOException e) {
e.printStackTrace();
diff --git a/src/main/java/dev/isxander/yacl/config/NbtConfigInstance.java b/src/main/java/dev/isxander/yacl/config/NbtConfigInstance.java
index 8f817cb..5749695 100644
--- a/src/main/java/dev/isxander/yacl/config/NbtConfigInstance.java
+++ b/src/main/java/dev/isxander/yacl/config/NbtConfigInstance.java
@@ -1,5 +1,6 @@
package dev.isxander.yacl.config;
+import dev.isxander.yacl.impl.utils.YACLConstants;
import net.minecraft.nbt.*;
import java.awt.*;
@@ -57,13 +58,13 @@ public class NbtConfigInstance<T> extends ConfigInstance<T> {
@Override
public void save() {
- logger.info("Saving {}...", getConfigClass().getSimpleName());
+ YACLConstants.LOGGER.info("Saving {}...", getConfigClass().getSimpleName());
NbtCompound nbt;
try {
nbt = (NbtCompound) serializeObject(getConfig(), nbtSerializerHolder, field -> field.isAnnotationPresent(ConfigEntry.class));
} catch (IllegalAccessException e) {
- logger.error("Failed to convert '{}' -> NBT", getConfigClass().getName(), e);
+ YACLConstants.LOGGER.error("Failed to convert '{}' -> NBT", getConfigClass().getName(), e);
return;
}
@@ -76,7 +77,7 @@ public class NbtConfigInstance<T> extends ConfigInstance<T> {
else
NbtIo.write(nbt, new DataOutputStream(fos));
} catch (IOException e) {
- logger.error("Failed to write NBT to '{}'", path, e);
+ YACLConstants.LOGGER.error("Failed to write NBT to '{}'", path, e);
}
}
@@ -87,19 +88,19 @@ public class NbtConfigInstance<T> extends ConfigInstance<T> {
return;
}
- logger.info("Loading {}...", getConfigClass().getSimpleName());
+ YACLConstants.LOGGER.info("Loading {}...", getConfigClass().getSimpleName());
NbtCompound nbt;
try {
nbt = compressed ? NbtIo.readCompressed(path.toFile()) : NbtIo.read(path.toFile());
} catch (IOException e) {
- logger.error("Failed to read NBT file '{}'", path, e);
+ YACLConstants.LOGGER.error("Failed to read NBT file '{}'", path, e);
return;
}
try {
setConfig(deserializeObject(nbt, getConfigClass(), nbtSerializerHolder, field -> field.isAnnotationPresent(ConfigEntry.class)));
} catch (InvocationTargetException | NoSuchMethodException | InstantiationException | IllegalAccessException e) {
- logger.error("Failed to convert NBT -> '{}'", getConfigClass().getName(), e);
+ YACLConstants.LOGGER.error("Failed to convert NBT -> '{}'", getConfigClass().getName(), e);
}
}
diff --git a/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java b/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java
new file mode 100644
index 0000000..6c7508d
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/utils/DimensionIntegerImpl.java
@@ -0,0 +1,115 @@
+package dev.isxander.yacl.impl.utils;
+
+import dev.isxander.yacl.api.utils.Dimension;
+import dev.isxander.yacl.api.utils.MutableDimension;
+
+public class DimensionIntegerImpl implements MutableDimension<Integer> {
+ private int x, y;
+ private int width, height;
+
+ public DimensionIntegerImpl(int x, int y, int width, int height) {
+ this.x = x;
+ this.y = y;
+ this.width = width;
+ this.height = height;
+ }
+
+ @Override
+ public Integer x() {
+ return x;
+ }
+
+ @Override
+ public Integer y() {
+ return y;
+ }
+
+ @Override
+ public Integer width() {
+ return width;
+ }
+
+ @Override
+ public Integer height() {
+ return height;
+ }
+
+ @Override
+ public Integer xLimit() {
+ return x + width;
+ }
+
+ @Override
+ public Integer yLimit() {
+ return y + height;
+ }
+
+ @Override
+ public Integer centerX() {
+ return x + width / 2;
+ }
+
+ @Override
+ public Integer centerY() {
+ return y + height / 2;
+ }
+
+ @Override
+ public boolean isPointInside(Integer x, Integer y) {
+ return x >= x() && x <= xLimit() && y >= y() && y <= yLimit();
+ }
+
+ @Override
+ public MutableDimension<Integer> clone() {
+ return new DimensionIntegerImpl(x, y, width, height);
+ }
+
+ @Override public MutableDimension<Integer> setX(Integer x) { this.x = x; return this; }
+ @Override public MutableDimension<Integer> setY(Integer y) { this.y = y; return this; }
+ @Override public MutableDimension<Integer> setWidth(Integer width) { this.width = width; return this; }
+ @Override public MutableDimension<Integer> setHeight(Integer height) { this.height = height; return this; }
+
+ @Override
+ public Dimension<Integer> withX(Integer x) {
+ return clone().setX(x);
+ }
+
+ @Override
+ public Dimension<Integer> withY(Integer y) {
+ return clone().setY(y);
+ }
+
+ @Override
+ public Dimension<Integer> withWidth(Integer width) {
+ return clone().setWidth(width);
+ }
+
+ @Override
+ public Dimension<Integer> withHeight(Integer height) {
+ return clone().setHeight(height);
+ }
+
+ @Override
+ public MutableDimension<Integer> move(Integer x, Integer y) {
+ this.x += x;
+ this.y += y;
+ return this;
+ }
+
+ @Override
+ public MutableDimension<Integer> expand(Integer width, Integer height) {
+ this.width += width;
+ this.height += height;
+ return this;
+ }
+
+ @Override
+ public Dimension<Integer> moved(Integer x, Integer y) {
+ return clone().move(x, y);
+ }
+
+ @Override
+ public Dimension<Integer> expanded(Integer width, Integer height) {
+ return clone().expand(width, height);
+ }
+}
diff --git a/src/main/java/dev/isxander/yacl/impl/utils/YACLConstants.java b/src/main/java/dev/isxander/yacl/impl/utils/YACLConstants.java
new file mode 100644
index 0000000..3d382d4
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/impl/utils/YACLConstants.java
@@ -0,0 +1,8 @@
+package dev.isxander.yacl.impl.utils;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class YACLConstants {
+ public static final Logger LOGGER = LoggerFactory.getLogger("YetAnotherConfigLib");
+}