514 lines
32 KiB
Diff
514 lines
32 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Mykyta Komarnytskyy <nkomarn@hotmail.com>
|
|
Date: Fri, 27 Nov 2020 10:33:59 -0600
|
|
Subject: [PATCH] Use faster random implementation
|
|
|
|
Original code by YatopiaMC, licensed under MIT
|
|
You can find the original code on https://github.com/YatopiaMC/Yatopia
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
index 20cfe7b9b7127ddeb97aa91d759fc17b4a548eaf..5cadd485b3987eec21743f3315cd226930646eac 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/loottable/PaperLootableInventoryData.java
|
|
@@ -13,7 +13,7 @@ import java.util.UUID;
|
|
|
|
public class PaperLootableInventoryData {
|
|
|
|
- private static final Random RANDOM = new Random();
|
|
+ private static final Random RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
|
|
private long lastFill = -1;
|
|
private long nextRefill = -1;
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 40fe4111a52ab754094d462b0d1889e740797d4d..c691ee6208521b1570f0f25c8bbfd05146bd155c 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -415,7 +415,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
this.onMetricsRecordingFinished = (path) -> {
|
|
};
|
|
this.status = new ServerStatus();
|
|
- this.random = new Random();
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.port = -1;
|
|
this.levels = Maps.newLinkedHashMap(); // CraftBukkit - keep order, k+v already use identity methods
|
|
this.running = true;
|
|
@@ -650,7 +650,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
|
|
if (worlddimension == null) {
|
|
dimensionmanager = (DimensionType) this.registryHolder.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY).getOrThrow(DimensionType.OVERWORLD_LOCATION);
|
|
- chunkgenerator = WorldGenSettings.makeDefaultOverworld(this.registryHolder, (new Random()).nextLong());
|
|
+ chunkgenerator = WorldGenSettings.makeDefaultOverworld(this.registryHolder, (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong());
|
|
} else {
|
|
dimensionmanager = worlddimension.type();
|
|
chunkgenerator = worlddimension.generator();
|
|
@@ -778,7 +778,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
ChunkPos chunkcoordintpair = new ChunkPos(chunkgenerator.climateSampler().findSpawnPosition());
|
|
// CraftBukkit start
|
|
if (world.generator != null) {
|
|
- Random rand = new Random(world.getSeed());
|
|
+ Random rand = new org.yatopiamc.yatopia.server.util.FastRandom(world.getSeed());
|
|
org.bukkit.Location spawn = world.generator.getFixedSpawnLocation(world.getWorld(), rand);
|
|
|
|
if (spawn != null) {
|
|
diff --git a/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java b/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
index 62f26f5d3ef5546f26424185e378fea64c08ce2f..832b87d7a42d6e8b38e2e7746ef8fea42fd46307 100644
|
|
--- a/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
+++ b/src/main/java/net/minecraft/server/commands/SpreadPlayersCommand.java
|
|
@@ -55,7 +55,7 @@ public class SpreadPlayersCommand {
|
|
}
|
|
|
|
private static int spreadPlayers(CommandSourceStack source, Vec2 center, float spreadDistance, float maxRange, int maxY, boolean respectTeams, Collection<? extends Entity> players) throws CommandSyntaxException {
|
|
- Random random = new Random();
|
|
+ Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
double d0 = (double) (center.x - maxRange);
|
|
double d1 = (double) (center.y - maxRange);
|
|
double d2 = (double) (center.x + maxRange);
|
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
index 7b23535a680d2a8534dcb8dd87770f66fb982c13..ab06dd398bdf52656123eecdfe4daebe2a3b07e6 100644
|
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
|
@@ -368,7 +368,7 @@ public class ServerPlayer extends Player {
|
|
long l = k * k;
|
|
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
int j1 = this.getCoprime(i1);
|
|
- int k1 = (new Random()).nextInt(i1);
|
|
+ int k1 = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(i1);
|
|
|
|
for (int l1 = 0; l1 < i1; ++l1) {
|
|
int i2 = (k1 + j1 * l1) % i1;
|
|
@@ -405,7 +405,7 @@ public class ServerPlayer extends Player {
|
|
long l = k * k;
|
|
int i1 = l > 2147483647L ? Integer.MAX_VALUE : (int) l;
|
|
int j1 = this.getCoprime(i1);
|
|
- int k1 = (new Random()).nextInt(i1);
|
|
+ int k1 = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(i1);
|
|
|
|
for (int l1 = 0; l1 < i1; ++l1) {
|
|
int i2 = (k1 + j1 * l1) % i1;
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
index 33a29890435d6065a2cc4f8e8bf8209c01d5d114..f1c865c415243f50a9c82b96cca023274897193e 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
|
@@ -52,7 +52,7 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener
|
|
private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0);
|
|
static final Logger LOGGER = LogManager.getLogger();
|
|
private static final int MAX_TICKS_BEFORE_LOGIN = 600;
|
|
- private static final Random RANDOM = new Random();
|
|
+ private static final Random RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private final byte[] nonce = new byte[4];
|
|
final MinecraftServer server;
|
|
public final Connection connection;
|
|
diff --git a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
index 25ae440839f1d286550a77d0a4c61e1dc02b369d..b0cbe7d42eef1865e84211844b351027a26a5956 100644
|
|
--- a/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
+++ b/src/main/java/net/minecraft/server/rcon/thread/QueryThreadGs4.java
|
|
@@ -348,7 +348,7 @@ public class QueryThreadGs4 extends GenericThread {
|
|
this.identBytes[2] = bs[5];
|
|
this.identBytes[3] = bs[6];
|
|
this.ident = new String(this.identBytes, StandardCharsets.UTF_8);
|
|
- this.challenge = (new Random()).nextInt(16777216);
|
|
+ this.challenge = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt(16777216);
|
|
this.challengeBytes = String.format("\t%s%d\u0000", this.ident, this.challenge).getBytes(StandardCharsets.UTF_8);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/util/Mth.java b/src/main/java/net/minecraft/util/Mth.java
|
|
index 19f77e377342ee461f0da8bc5378f2002fb9e94a..e6799eb40ec5e8c9f58aaafb7841a9066ac299c8 100644
|
|
--- a/src/main/java/net/minecraft/util/Mth.java
|
|
+++ b/src/main/java/net/minecraft/util/Mth.java
|
|
@@ -31,7 +31,7 @@ public class Mth {
|
|
}
|
|
|
|
});
|
|
- private static final Random RANDOM = new Random();
|
|
+ private static final Random RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
public static float[] getSinTable() { return SIN; }
|
|
private static final int[] MULTIPLY_DE_BRUIJN_BIT_POSITION = new int[]{0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9};
|
|
private static final double ONE_SIXTH = 0.16666666666666666D;
|
|
@@ -758,7 +758,7 @@ public class Mth {
|
|
}
|
|
|
|
public static double wobble(double d) {
|
|
- return d + (2.0D * (new Random((long)floor(d * 3000.0D))).nextDouble() - 1.0D) * 1.0E-7D / 2.0D;
|
|
+ return d + (2.0D * (new org.yatopiamc.yatopia.server.util.FastRandom((long)floor(d * 3000.0D))).nextDouble() - 1.0D) * 1.0E-7D / 2.0D;
|
|
}
|
|
|
|
public static int roundToward(int value, int divisor) {
|
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
index 136ec7851f26c39b5b9a02ec791682fd5be2dbf1..ffcdd6c88aaae17075a491f35ebea3625e4914d2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
|
@@ -158,7 +158,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, i
|
|
}
|
|
|
|
// Paper start
|
|
- public static Random SHARED_RANDOM = new Random() {
|
|
+ public static Random SHARED_RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom() {
|
|
private boolean locked = false;
|
|
@Override
|
|
public synchronized void setSeed(long seed) {
|
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java b/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
|
index 204ca4fbd89bdadd902529f1f191df46fce3cace..2b8cf6819c4a76fb558607f8d111f27e01781a15 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/ShufflingList.java
|
|
@@ -13,7 +13,7 @@ import java.util.stream.Stream;
|
|
|
|
public class ShufflingList<U> {
|
|
public final List<ShufflingList.WeightedEntry<U>> entries; // Paper - public
|
|
- private final Random random = new Random();
|
|
+ private final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private final boolean isUnsafe; // Paper
|
|
|
|
public ShufflingList() {
|
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
|
index f3b8e253a5bfc3f68121dbe656ae7e2ac0f0eb1c..325e7725f0105076c7f865db550cfd4e2866b8d2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
|
@@ -8,7 +8,7 @@ import net.minecraft.world.entity.ai.memory.MemoryModuleType;
|
|
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
|
|
|
|
public abstract class Sensor<E extends LivingEntity> {
|
|
- private static final Random RANDOM = new Random();
|
|
+ private static final Random RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private static final int DEFAULT_SCAN_RATE = 20;
|
|
protected static final int TARGETING_RANGE = 16;
|
|
private static final TargetingConditions TARGET_CONDITIONS = TargetingConditions.forNonCombat().range(16.0D);
|
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
index f362e007aece208036a37d9bda8bb481a78eeaff..ae4e5258b92ff480f9c098a561160fe0595a7bbf 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
@@ -374,7 +374,7 @@ public class PiglinAi {
|
|
}
|
|
|
|
private static boolean wantsToDance(LivingEntity piglin, LivingEntity target) {
|
|
- return target.getType() != EntityType.HOGLIN ? false : (new Random(piglin.level.getGameTime())).nextFloat() < 0.1F;
|
|
+ return target.getType() != EntityType.HOGLIN ? false : (new org.yatopiamc.yatopia.server.util.FastRandom(piglin.level.getGameTime())).nextFloat() < 0.1F;
|
|
}
|
|
|
|
protected static boolean wantsToPickup(Piglin piglin, ItemStack stack) {
|
|
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
|
index 323eea2bccacfcc85849b5d82c2b30d991e0c0d8..78104373a57616fd38d96c727a4ee3b79d874316 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
|
|
@@ -35,7 +35,7 @@ public class WanderingTraderSpawner implements CustomSpawner {
|
|
private static final int SPAWN_CHANCE_INCREASE = 25;
|
|
private static final int SPAWN_ONE_IN_X_CHANCE = 10;
|
|
private static final int NUMBER_OF_SPAWN_ATTEMPTS = 10;
|
|
- private final Random random = new Random();
|
|
+ private final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private final ServerLevelData serverLevelData;
|
|
private int tickDelay;
|
|
private int spawnDelay;
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
index 1037d0a0cdd4fd7aa99a958ee969759c5883fdc0..99ab7bf2829b1355de452a368ac9971dec04064c 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/FishingHook.java
|
|
@@ -76,7 +76,7 @@ public class FishingHook extends Projectile {
|
|
|
|
private FishingHook(EntityType<? extends FishingHook> type, Level world, int lureLevel, int luckOfTheSeaLevel) {
|
|
super(type, world);
|
|
- this.syncronizedRandom = new Random();
|
|
+ this.syncronizedRandom = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.openWater = true;
|
|
this.currentState = FishingHook.FishHookState.FLYING;
|
|
this.noCulling = true;
|
|
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
index 7131226de05bc57830f7a68ba545ebfd19d33a59..d41bdd71ae1f722b5f108bed9282bf5bde348e90 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java
|
|
@@ -110,7 +110,7 @@ public class Raid {
|
|
|
|
public Raid(int id, ServerLevel world, BlockPos pos) {
|
|
this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
|
|
- this.random = new Random();
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.waveSpawnPos = Optional.empty();
|
|
this.id = id;
|
|
this.level = world;
|
|
@@ -124,7 +124,7 @@ public class Raid {
|
|
|
|
public Raid(ServerLevel world, CompoundTag nbt) {
|
|
this.raidEvent = new ServerBossEvent(Raid.RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10);
|
|
- this.random = new Random();
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.waveSpawnPos = Optional.empty();
|
|
this.level = world;
|
|
this.id = nbt.getInt("Id");
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
index d75f14e23d94deee2b6af20c8af3bcd42c1fbbc3..cac4584ea634e0461d05908cbfd88ef66ea75c4e 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
@@ -68,7 +68,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
}
|
|
// CraftBukkit end
|
|
};
|
|
- this.random = new Random();
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.enchantmentSeed = DataSlot.standalone();
|
|
this.costs = new int[3];
|
|
this.enchantClue = new int[]{-1, -1, -1};
|
|
diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
index 03726227fdd60e9cf77213d50184abff438e01ef..2f38fd48dd3798b25758028c04e4ec9546166108 100644
|
|
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
|
|
@@ -41,7 +41,7 @@ public abstract class BaseSpawner {
|
|
public int maxNearbyEntities = 6;
|
|
public int requiredPlayerRange = 16;
|
|
public int spawnRange = 4;
|
|
- private final Random random = new Random();
|
|
+ private final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private int tickDelay = 0; // Paper
|
|
|
|
public BaseSpawner() {}
|
|
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
index 6795132318a4e8b4c7a33b6f4b89a730ea66b97f..eebbf0b9d646ee5ae1bd48c821f122a7c4f4a0c6 100644
|
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
|
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
@@ -88,7 +88,7 @@ public class Explosion {
|
|
}
|
|
|
|
public Explosion(Level world, @Nullable Entity entity, @Nullable DamageSource damageSource, @Nullable ExplosionDamageCalculator behavior, double x, double y, double z, float power, boolean createFire, Explosion.BlockInteraction destructionType) {
|
|
- this.random = new Random();
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
this.toBlow = Lists.newArrayList();
|
|
this.hitPlayers = Maps.newHashMap();
|
|
this.level = world;
|
|
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
|
index 9d7d5acd04c6f8ed77d86241c058ea9b09f7449b..6a061119f98837da20d40c82160ef60c2b0cfaef 100644
|
|
--- a/src/main/java/net/minecraft/world/level/Level.java
|
|
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
|
@@ -124,13 +124,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
|
public final Thread thread;
|
|
private final boolean isDebug;
|
|
private int skyDarken;
|
|
- protected int randValue = (new Random()).nextInt();
|
|
+ protected int randValue = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextInt();
|
|
protected final int addend = 1013904223;
|
|
protected float oRainLevel;
|
|
public float rainLevel;
|
|
protected float oThunderLevel;
|
|
public float thunderLevel;
|
|
- public final Random random = new Random();
|
|
+ public final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private final DimensionType dimensionType;
|
|
public final WritableLevelData levelData;
|
|
private final Supplier<ProfilerFiller> profiler;
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/DispenserBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
|
index f74c5bb8e1ba42c77c59d481b871fd992483b128..610e2ec624516684007fb53bf084b95b4fcadc1d 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/DispenserBlockEntity.java
|
|
@@ -21,7 +21,7 @@ import org.bukkit.entity.HumanEntity;
|
|
|
|
public class DispenserBlockEntity extends RandomizableContainerBlockEntity {
|
|
|
|
- private static final Random RANDOM = new Random();
|
|
+ private static final Random RANDOM = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
public static final int CONTAINER_SIZE = 9;
|
|
private NonNullList<ItemStack> items;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
index 6278115e3511fe2176b29122e2c733498f31bb5a..f25a0b94a001d13b698c9e9c1140e2dd290192a0 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java
|
|
@@ -265,7 +265,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
|
if (blockposition1 == null) {
|
|
blockposition1 = new BlockPos(vec3d.x + 0.5D, 75.0D, vec3d.z + 0.5D);
|
|
TheEndGatewayBlockEntity.LOGGER.debug("Failed to find a suitable block to teleport to, spawning an island on {}", blockposition1);
|
|
- EndFeatures.END_ISLAND.place(world, world.getChunkSource().getGenerator(), new Random(blockposition1.asLong()), blockposition1);
|
|
+ EndFeatures.END_ISLAND.place(world, world.getChunkSource().getGenerator(), new org.yatopiamc.yatopia.server.util.FastRandom(blockposition1.asLong()), blockposition1);
|
|
} else {
|
|
TheEndGatewayBlockEntity.LOGGER.debug("Found suitable block to teleport to: {}", blockposition1);
|
|
}
|
|
@@ -353,7 +353,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity {
|
|
}
|
|
|
|
private static void spawnGatewayPortal(ServerLevel world, BlockPos pos, EndGatewayConfiguration config) {
|
|
- Feature.END_GATEWAY.configured(config).place(world, world.getChunkSource().getGenerator(), new Random(), pos);
|
|
+ Feature.END_GATEWAY.configured(config).place(world, world.getChunkSource().getGenerator(), new org.yatopiamc.yatopia.server.util.FastRandom(), pos);
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
|
|
index e4591c0b3c8547cc6f4e2a0891fc378ee4334d9e..f4f964a2ef28840944b11404cdc6e41684e46af3 100644
|
|
--- a/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
|
|
+++ b/src/main/java/net/minecraft/world/level/chunk/ChunkGenerator.java
|
|
@@ -109,7 +109,7 @@ public abstract class ChunkGenerator implements BiomeManager.NoiseBiomeSource {
|
|
int i = structuresettingsstronghold.distance();
|
|
int j = structuresettingsstronghold.count();
|
|
int k = structuresettingsstronghold.spread();
|
|
- Random random = new Random();
|
|
+ Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
|
|
random.setSeed(this.strongholdSeed);
|
|
double d0 = random.nextDouble() * 3.141592653589793D * 2.0D;
|
|
diff --git a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
index be5952133720bf0ac3483cc2fed334967e6fc0c4..037b091bafd378493e35d2a816cfc59318362b4e 100644
|
|
--- a/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
+++ b/src/main/java/net/minecraft/world/level/dimension/end/EndDragonFight.java
|
|
@@ -124,7 +124,7 @@ public class EndDragonFight {
|
|
}
|
|
} else {
|
|
this.gateways.addAll(ContiguousSet.create(Range.closedOpen(0, 20), DiscreteDomain.integers()));
|
|
- Collections.shuffle(this.gateways, new Random(gatewaysSeed));
|
|
+ Collections.shuffle(this.gateways, new org.yatopiamc.yatopia.server.util.FastRandom(gatewaysSeed));
|
|
}
|
|
|
|
this.exitPortalPattern = BlockPatternBuilder.start().aisle(" ", " ", " ", " # ", " ", " ", " ").aisle(" ", " ", " ", " # ", " ", " ", " ").aisle(" ", " ", " ", " # ", " ", " ", " ").aisle(" ### ", " # # ", "# #", "# # #", "# #", " # # ", " ### ").aisle(" ", " ### ", " ##### ", " ##### ", " ##### ", " ### ", " ").where('#', BlockInWorld.hasState(BlockPredicate.forBlock(Blocks.BEDROCK))).build();
|
|
@@ -402,7 +402,7 @@ public class EndDragonFight {
|
|
|
|
private void spawnNewGateway(BlockPos pos) {
|
|
this.level.levelEvent(3000, pos, 0);
|
|
- EndFeatures.END_GATEWAY_DELAYED.place(this.level, this.level.getChunkSource().getGenerator(), new Random(), pos);
|
|
+ EndFeatures.END_GATEWAY_DELAYED.place(this.level, this.level.getChunkSource().getGenerator(), new org.yatopiamc.yatopia.server.util.FastRandom(), pos);
|
|
}
|
|
|
|
public void spawnExitPortal(boolean previouslyKilled) {
|
|
@@ -418,7 +418,7 @@ public class EndDragonFight {
|
|
}
|
|
// Paper end
|
|
|
|
- endPodiumFeature.configured(FeatureConfiguration.NONE).place(this.level, this.level.getChunkSource().getGenerator(), new Random(), this.portalLocation);
|
|
+ endPodiumFeature.configured(FeatureConfiguration.NONE).place(this.level, this.level.getChunkSource().getGenerator(), new org.yatopiamc.yatopia.server.util.FastRandom(), this.portalLocation);
|
|
}
|
|
|
|
private EnderDragon createNewDragon() {
|
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java b/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
index 286c75989282c6d370ca64ac714ab15d784210ab..e3a2919e214c63aa8cc2334d30dade3daf39b92d 100644
|
|
--- a/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/WorldGenSettings.java
|
|
@@ -86,7 +86,7 @@ public class WorldGenSettings {
|
|
}
|
|
|
|
public static WorldGenSettings makeDefault(RegistryAccess registryManager) {
|
|
- long i = (new Random()).nextLong();
|
|
+ long i = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong();
|
|
|
|
return new WorldGenSettings(i, true, false, WorldGenSettings.withOverworld(registryManager.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY), DimensionType.defaultDimensions(registryManager, i), WorldGenSettings.makeDefaultOverworld(registryManager, i)));
|
|
}
|
|
@@ -215,7 +215,7 @@ public class WorldGenSettings {
|
|
}).orElse("default");
|
|
|
|
properties.put("level-type", s4);
|
|
- long i = (new Random()).nextLong();
|
|
+ long i = (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong();
|
|
|
|
if (!s1.isEmpty()) {
|
|
try {
|
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/SpikeFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/SpikeFeature.java
|
|
index c03bf5bdb67b00c75f9fcfead882c4d944282244..300c994cd3cc0995eeb4914590afce8b6ad1d92b 100644
|
|
--- a/src/main/java/net/minecraft/world/level/levelgen/feature/SpikeFeature.java
|
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/feature/SpikeFeature.java
|
|
@@ -36,7 +36,7 @@ public class SpikeFeature extends Feature<SpikeConfiguration> {
|
|
}
|
|
|
|
public static List<SpikeFeature.EndSpike> getSpikesForLevel(WorldGenLevel world) {
|
|
- Random random = new Random(world.getSeed());
|
|
+ Random random = new org.yatopiamc.yatopia.server.util.FastRandom(world.getSeed());
|
|
long l = random.nextLong() & 65535L;
|
|
return SPIKE_CACHE.getUnchecked(l);
|
|
}
|
|
@@ -167,7 +167,7 @@ public class SpikeFeature extends Feature<SpikeConfiguration> {
|
|
@Override
|
|
public List<SpikeFeature.EndSpike> load(Long long_) {
|
|
List<Integer> list = IntStream.range(0, 10).boxed().collect(Collectors.toList());
|
|
- Collections.shuffle(list, new Random(long_));
|
|
+ Collections.shuffle(list, new org.yatopiamc.yatopia.server.util.FastRandom(long_));
|
|
List<SpikeFeature.EndSpike> list2 = Lists.newArrayList();
|
|
|
|
for(int i = 0; i < 10; ++i) {
|
|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings.java b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings.java
|
|
index c75141f96bdbee9ec070e81bd4f1ce0e7f1054fa..dbd46f0467f402fdde61831b49b4b7c1ba2d3af1 100644
|
|
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings.java
|
|
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/templatesystem/StructurePlaceSettings.java
|
|
@@ -120,7 +120,7 @@ public class StructurePlaceSettings {
|
|
}
|
|
|
|
public Random getRandom(@Nullable BlockPos pos) {
|
|
- return this.random != null ? this.random : (pos == null ? new Random(Util.getMillis()) : new Random(Mth.getSeed(pos)));
|
|
+ return this.random != null ? this.random : (pos == null ? new org.yatopiamc.yatopia.server.util.FastRandom(Util.getMillis()) : new org.yatopiamc.yatopia.server.util.FastRandom(Mth.getSeed(pos)));
|
|
}
|
|
|
|
public boolean isIgnoreEntities() {
|
|
diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java b/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
index d33af84300db18ea2b71dba2c9ed43390a293500..14ef922c3f8d8f0867614fb0fd1faee73319a993 100644
|
|
--- a/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootContext.java
|
|
@@ -127,7 +127,7 @@ public class LootContext {
|
|
|
|
public LootContext.Builder withOptionalRandomSeed(long seed) {
|
|
if (seed != 0L) {
|
|
- this.random = new Random(seed);
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom(seed);
|
|
}
|
|
|
|
return this;
|
|
@@ -137,7 +137,7 @@ public class LootContext {
|
|
if (seed == 0L) {
|
|
this.random = random;
|
|
} else {
|
|
- this.random = new Random(seed);
|
|
+ this.random = new org.yatopiamc.yatopia.server.util.FastRandom(seed);
|
|
}
|
|
|
|
return this;
|
|
@@ -201,7 +201,7 @@ public class LootContext {
|
|
} else {
|
|
Random random = this.random;
|
|
if (random == null) {
|
|
- random = new Random();
|
|
+ random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
}
|
|
|
|
MinecraftServer minecraftServer = this.level.getServer();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 6f885434f0576d2738b9c74fa9cc202e66ede262..0ab224b093e18f7e49c366c9e4862e0a97e7573c 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -1237,7 +1237,7 @@ public final class CraftServer implements Server {
|
|
|
|
if (worlddimension == null) {
|
|
dimensionmanager = (DimensionType) console.registryHolder.registryOrThrow(Registry.DIMENSION_TYPE_REGISTRY).getOrThrow(DimensionType.OVERWORLD_LOCATION);
|
|
- chunkgenerator = WorldGenSettings.makeDefaultOverworld(console.registryHolder, (new Random()).nextLong());
|
|
+ chunkgenerator = WorldGenSettings.makeDefaultOverworld(console.registryHolder, (new org.yatopiamc.yatopia.server.util.FastRandom()).nextLong());
|
|
} else {
|
|
dimensionmanager = worlddimension.type();
|
|
chunkgenerator = worlddimension.generator();
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
index ac41bc23d2f7e16bbacdc9b33fcf6c0d706fa023..5520b78f182e9e3281b12d6a2f93ce171e4b1151 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
@@ -204,7 +204,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
|
}
|
|
// Paper end
|
|
|
|
- private static final Random rand = new Random();
|
|
+ private static final Random rand = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
|
|
public CraftWorld(ServerLevel world, ChunkGenerator gen, BiomeProvider biomeProvider, Environment env) {
|
|
this.world = world;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
index be86114eac3975b82ca74d4d6ed3f0402a642e8a..e369d3a67c375e39c9ca58b44b71ab3963943c1f 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
@@ -13,7 +13,7 @@ import org.bukkit.inventory.meta.FireworkMeta;
|
|
|
|
public class CraftFirework extends CraftProjectile implements Firework {
|
|
|
|
- private final Random random = new Random();
|
|
+ private final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private final CraftItemStack item;
|
|
|
|
public CraftFirework(CraftServer server, FireworkRocketEntity entity) {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
index dd453548e1a1ac26ce611f5a96bd3ea81b0971da..a2b03655e571d5c8e5a04566a300b1c2142cc097 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
|
|
@@ -44,7 +44,7 @@ public class CustomChunkGenerator extends InternalChunkGenerator {
|
|
public final net.minecraft.world.level.chunk.ChunkGenerator delegate;
|
|
private final ChunkGenerator generator;
|
|
private final ServerLevel world;
|
|
- private final Random random = new Random();
|
|
+ private final Random random = new org.yatopiamc.yatopia.server.util.FastRandom();
|
|
private boolean newApi;
|
|
private boolean implementBaseHeight = true;
|
|
|