Optimized dust

This commit is contained in:
cyberpwn 2021-08-29 07:25:07 -04:00
parent b9f2530e2f
commit 48c1db6a8a
3 changed files with 23 additions and 4 deletions

View File

@ -28,8 +28,11 @@ import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.util.Vector; import org.bukkit.util.Vector;
import java.util.concurrent.atomic.AtomicInteger;
@SuppressWarnings("InstantiationOfUtilityClass") @SuppressWarnings("InstantiationOfUtilityClass")
public class BlockSignal { public class BlockSignal {
public static final AtomicInteger active = new AtomicInteger(0);
public static void of(Block block, int ticks) { public static void of(Block block, int ticks) {
new BlockSignal(block, ticks); new BlockSignal(block, ticks);
} }
@ -78,6 +81,7 @@ public class BlockSignal {
} }
public BlockSignal(Block block, int ticks) { public BlockSignal(Block block, int ticks) {
active.incrementAndGet();
Location tg = block.getLocation().clone().add(0.5, 0, 0.5).clone(); Location tg = block.getLocation().clone().add(0.5, 0, 0.5).clone();
FallingBlock e = block.getWorld().spawnFallingBlock(tg.clone(), block.getBlockData()); FallingBlock e = block.getWorld().spawnFallingBlock(tg.clone(), block.getBlockData());
e.setGravity(false); e.setGravity(false);
@ -91,8 +95,8 @@ public class BlockSignal {
e.setVelocity(new Vector(0, 0, 0)); e.setVelocity(new Vector(0, 0, 0));
J.s(() -> { J.s(() -> {
e.remove(); e.remove();
active.decrementAndGet();
BlockData type = block.getBlockData(); BlockData type = block.getBlockData();
MultiBurst.burst.lazy(() -> { MultiBurst.burst.lazy(() -> {
for (Player i : block.getWorld().getPlayers()) { for (Player i : block.getWorld().getPlayers()) {
i.sendBlockChange(block.getLocation(), block.getBlockData()); i.sendBlockChange(block.getLocation(), block.getBlockData());

View File

@ -23,13 +23,17 @@ import com.volmit.iris.core.tools.IrisToolbelt;
import com.volmit.iris.engine.framework.Engine; import com.volmit.iris.engine.framework.Engine;
import com.volmit.iris.util.collection.KList; import com.volmit.iris.util.collection.KList;
import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.BlockPosition;
import com.volmit.iris.util.math.M;
import com.volmit.iris.util.math.RNG; import com.volmit.iris.util.math.RNG;
import com.volmit.iris.util.plugin.VolmitSender; import com.volmit.iris.util.plugin.VolmitSender;
import com.volmit.iris.util.scheduling.J; import com.volmit.iris.util.scheduling.J;
import lombok.Data; import lombok.Data;
import org.bukkit.Sound;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import java.util.concurrent.atomic.AtomicInteger;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
@Data @Data
public class DustRevealer { public class DustRevealer {
@ -47,6 +51,8 @@ public class DustRevealer {
String a = access.getObjectPlacementKey(block.getX(), block.getY(), block.getZ()); String a = access.getObjectPlacementKey(block.getX(), block.getY(), block.getZ());
if (a != null) { if (a != null) {
world.playSound(block.getLocation(), Sound.ITEM_LODESTONE_COMPASS_LOCK, 1f, 0.1f);
sender.sendMessage("Found object " + a); sender.sendMessage("Found object " + a);
J.a(() -> { J.a(() -> {
new DustRevealer(access, world, new BlockPosition(block.getX(), block.getY(), block.getZ()), a, new KList<>()); new DustRevealer(access, world, new BlockPosition(block.getX(), block.getY(), block.getZ()), a, new KList<>());
@ -63,8 +69,17 @@ public class DustRevealer {
this.hits = hits; this.hits = hits;
J.s(() -> { J.s(() -> {
new BlockSignal(world.getBlockAt(block.getX(), block.getY(), block.getZ()), 100); new BlockSignal(world.getBlockAt(block.getX(), block.getY(), block.getZ()), 7);
if(M.r(0.25))
{
world.playSound(block.toBlock(world).getLocation(), Sound.BLOCK_AMETHYST_BLOCK_CHIME, 1f, RNG.r.f(0.2f, 2f));
}
J.a(() -> { J.a(() -> {
while(BlockSignal.active.get() > 128)
{
J.sleep(5);
}
try { try {
is(new BlockPosition(block.getX() + 1, block.getY(), block.getZ())); is(new BlockPosition(block.getX() + 1, block.getY(), block.getZ()));
is(new BlockPosition(block.getX() - 1, block.getY(), block.getZ())); is(new BlockPosition(block.getX() - 1, block.getY(), block.getZ()));
@ -97,7 +112,7 @@ public class DustRevealer {
e.printStackTrace(); e.printStackTrace();
} }
}); });
}, RNG.r.i(3, 6)); }, RNG.r.i(2,8));
} }
private boolean is(BlockPosition a) { private boolean is(BlockPosition a) {