2020-10-27 20:15:13 +01:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: YatopiaMC <yatopiamc@gmail.com>
|
|
|
|
Date: Fri, 23 Oct 2020 09:20:01 -0700
|
|
|
|
Subject: [PATCH] Utilities
|
|
|
|
|
|
|
|
This patch includes all utilities required by the Yatopia project and its patches.
|
|
|
|
|
|
|
|
Co-authored-by: Mykyta Komarnytskyy <nkomarn@hotmail.com>
|
|
|
|
Co-authored-by: Ivan Pekov <ivan@mrivanplays.com>
|
|
|
|
|
2020-12-01 03:08:41 +01:00
|
|
|
diff --git a/pom.xml b/pom.xml
|
2020-12-02 07:35:11 +01:00
|
|
|
index 9f2cc8fbc0bfaefd772904076e6fd4d0c78f30ee..2acc51071e968333f85959d76b86e7e6e0ee828b 100644
|
2020-12-01 03:08:41 +01:00
|
|
|
--- a/pom.xml
|
|
|
|
+++ b/pom.xml
|
|
|
|
@@ -166,6 +166,12 @@
|
|
|
|
<artifactId>commons-math3</artifactId>
|
|
|
|
<version>3.6.1</version>
|
|
|
|
</dependency>
|
|
|
|
+ <!-- Fast Random -->
|
|
|
|
+ <dependency>
|
|
|
|
+ <groupId>org.apache.commons</groupId>
|
|
|
|
+ <artifactId>commons-rng-core</artifactId>
|
|
|
|
+ <version>1.3</version>
|
|
|
|
+ </dependency>
|
|
|
|
</dependencies>
|
|
|
|
|
|
|
|
<repositories>
|
2020-12-02 07:35:11 +01:00
|
|
|
diff --git a/src/main/java/org/yatopiamc/yatopia/server/util/Constants.java b/src/main/java/org/yatopiamc/yatopia/server/util/Constants.java
|
2020-10-27 20:15:13 +01:00
|
|
|
new file mode 100644
|
2020-12-02 07:35:11 +01:00
|
|
|
index 0000000000000000000000000000000000000000..ac5235155eb1b5515165fc9648b7c9d7a0713b44
|
2020-10-27 20:15:13 +01:00
|
|
|
--- /dev/null
|
2020-12-02 07:35:11 +01:00
|
|
|
+++ b/src/main/java/org/yatopiamc/yatopia/server/util/Constants.java
|
2020-10-27 20:15:13 +01:00
|
|
|
@@ -0,0 +1,7 @@
|
2020-12-02 07:35:11 +01:00
|
|
|
+package org.yatopiamc.yatopia.server.util;
|
2020-10-27 20:15:13 +01:00
|
|
|
+
|
|
|
|
+public class Constants {
|
|
|
|
+
|
|
|
|
+ public static final int[] EMPTY_ARRAY = new int[0];
|
|
|
|
+ public static final int[] ZERO_ARRAY = new int[]{0};
|
|
|
|
+}
|
2020-12-02 07:35:11 +01:00
|
|
|
diff --git a/src/main/java/org/yatopiamc/yatopia/server/util/FastRandom.java b/src/main/java/org/yatopiamc/yatopia/server/util/FastRandom.java
|
2020-12-01 03:08:41 +01:00
|
|
|
new file mode 100644
|
2020-12-02 07:35:11 +01:00
|
|
|
index 0000000000000000000000000000000000000000..e41c1e3fa656d8f595733897ab05089c3b0976a7
|
2020-12-01 03:08:41 +01:00
|
|
|
--- /dev/null
|
2020-12-02 07:35:11 +01:00
|
|
|
+++ b/src/main/java/org/yatopiamc/yatopia/server/util/FastRandom.java
|
2020-12-01 03:08:41 +01:00
|
|
|
@@ -0,0 +1,64 @@
|
2020-12-02 07:35:11 +01:00
|
|
|
+package org.yatopiamc.yatopia.server.util;
|
2020-12-01 03:08:41 +01:00
|
|
|
+
|
|
|
|
+import org.apache.commons.rng.core.source64.XoRoShiRo128PlusPlus;
|
|
|
|
+
|
|
|
|
+import java.util.Random;
|
|
|
|
+import java.util.SplittableRandom;
|
|
|
|
+
|
|
|
|
+public class FastRandom extends Random {
|
|
|
|
+
|
|
|
|
+ private XoRoShiRo128PlusPlus random;
|
|
|
|
+
|
|
|
|
+ public FastRandom() {
|
|
|
|
+ super();
|
|
|
|
+ SplittableRandom randomseed = new SplittableRandom();
|
|
|
|
+ this.random = new XoRoShiRo128PlusPlus(randomseed.nextLong(), randomseed.nextLong());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public FastRandom(long seed) {
|
|
|
|
+ super(seed);
|
|
|
|
+ SplittableRandom randomseed = new SplittableRandom(seed);
|
|
|
|
+ this.random = new XoRoShiRo128PlusPlus(randomseed.nextLong(), randomseed.nextLong());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public boolean nextBoolean() {
|
|
|
|
+ return random.nextBoolean();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public int nextInt() {
|
|
|
|
+ return random.nextInt();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public float nextFloat() {
|
|
|
|
+ return (float) random.nextDouble();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public double nextDouble() {
|
|
|
|
+ return random.nextDouble();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public synchronized void setSeed(long seed) {
|
|
|
|
+ SplittableRandom randomseed = new SplittableRandom(seed);
|
|
|
|
+ this.random = new XoRoShiRo128PlusPlus(randomseed.nextLong(), randomseed.nextLong());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void nextBytes(byte[] bytes) {
|
|
|
|
+ random.nextBytes(bytes);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public int nextInt(int bound) {
|
|
|
|
+ return random.nextInt(bound);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public long nextLong() {
|
|
|
|
+ return random.nextLong();
|
|
|
|
+ }
|
|
|
|
+}
|
2020-12-02 07:35:11 +01:00
|
|
|
diff --git a/src/main/java/org/yatopiamc/yatopia/server/util/TimeUtils.java b/src/main/java/org/yatopiamc/yatopia/server/util/TimeUtils.java
|
2020-10-27 20:15:13 +01:00
|
|
|
new file mode 100644
|
2020-12-02 07:35:11 +01:00
|
|
|
index 0000000000000000000000000000000000000000..acdf3d60738791b767a3bafa2c9511342a8c18df
|
2020-10-27 20:15:13 +01:00
|
|
|
--- /dev/null
|
2020-12-02 07:35:11 +01:00
|
|
|
+++ b/src/main/java/org/yatopiamc/yatopia/server/util/TimeUtils.java
|
2020-10-27 20:15:13 +01:00
|
|
|
@@ -0,0 +1,27 @@
|
2020-12-02 07:35:11 +01:00
|
|
|
+package org.yatopiamc.yatopia.server.util;
|
2020-10-27 20:15:13 +01:00
|
|
|
+
|
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
+
|
|
|
|
+public class TimeUtils {
|
|
|
|
+
|
|
|
|
+ public static String getFriendlyName(TimeUnit unit) {
|
|
|
|
+ switch (unit) {
|
|
|
|
+ case NANOSECONDS:
|
|
|
|
+ return "ns";
|
|
|
|
+ case MILLISECONDS:
|
|
|
|
+ return "ms";
|
|
|
|
+ case MICROSECONDS:
|
|
|
|
+ return "micros";
|
|
|
|
+ case SECONDS:
|
|
|
|
+ return "s";
|
|
|
|
+ case MINUTES:
|
|
|
|
+ return "m";
|
|
|
|
+ case DAYS:
|
|
|
|
+ return "d";
|
|
|
|
+ case HOURS:
|
|
|
|
+ return "h";
|
|
|
|
+ default:
|
|
|
|
+ throw new AssertionError();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|