From 107d1fc8ff36dd963a23aede7a1ee9f52fbb29ed Mon Sep 17 00:00:00 2001 From: CocoTheOwner Date: Fri, 1 Oct 2021 13:10:07 +0200 Subject: [PATCH] Fix random --- .../java/com/volmit/iris/engine/framework/Engine.java | 2 +- .../java/com/volmit/iris/engine/framework/Locator.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/src/main/java/com/volmit/iris/engine/framework/Engine.java index 914ff4dc8..79e73d5ca 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Engine.java +++ b/src/main/java/com/volmit/iris/engine/framework/Engine.java @@ -783,7 +783,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat && lb.matches(engine, chunk); if (!regionKeys.isEmpty()) { - locator.find(player, distance, random); + locator.find(player, Math.abs(distance), random); } else { player.sendMessage(C.RED + biome.getName() + " is not in any defined regions!"); } diff --git a/src/main/java/com/volmit/iris/engine/framework/Locator.java b/src/main/java/com/volmit/iris/engine/framework/Locator.java index 84433954b..f7fa3b00f 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Locator.java +++ b/src/main/java/com/volmit/iris/engine/framework/Locator.java @@ -18,6 +18,7 @@ package com.volmit.iris.engine.framework; +import com.volmit.iris.Iris; import com.volmit.iris.core.IrisSettings; import com.volmit.iris.core.tools.IrisToolbelt; import com.volmit.iris.engine.object.IrisBiome; @@ -105,8 +106,11 @@ public interface Locator { cancelSearch(); int fdistance = distance >> 4; + Position2 pos = random ? new Position2(M.irand(-29_000_000, 29_000_000) >> 4, M.irand(-29_000_000, 29_000_000) >> 4) : new Position2(location.getX(), location.getZ()); + if (random) { + Iris.info("Randomly finding location from: " + pos); + } return MultiBurst.burst.completeValue(() -> { - Position2 pos = random ? new Position2(M.irand(-29*10^6, 29*10^6), M.irand(-29*10^6, 29*10^6)) : new Position2(location.getX(), location.getZ()); int tc = IrisSettings.getThreadCount(IrisSettings.get().getConcurrency().getParallelism()) * 17; MultiBurst burst = MultiBurst.burst; AtomicBoolean found = new AtomicBoolean(false); @@ -116,7 +120,7 @@ public interface Locator { PrecisionStopwatch px = PrecisionStopwatch.start(); LocatorCanceller.cancel = () -> stop.set(true); AtomicReference next = new AtomicReference<>(pos); - Spiraler s = new Spiraler(50000, 50000, (x, z) -> next.set(new Position2((M.r(0.5) ? -1 : 1) * (x + fdistance), (M.r(0.5) ? -1 : 1) * (z + fdistance)))); + Spiraler s = new Spiraler(50000, 50000, (x, z) -> next.set(new Position2(pos.getX() + (M.r(0.5) ? -1 : 1) * (x + fdistance), pos.getZ() + (M.r(0.5) ? -1 : 1) * (z + fdistance)))); s.setOffset(pos.getX(), pos.getZ()); s.next();