mirror of
https://github.com/Minestom/Minestom.git
synced 2025-03-02 11:21:15 +01:00
Cleanup + created SingleThreadProvider
This commit is contained in:
parent
451402ed4f
commit
ade727cd0f
@ -85,9 +85,6 @@ public final class MinecraftServer {
|
||||
|
||||
public static final String THREAD_NAME_TICK = "Ms-Tick";
|
||||
|
||||
public static final String THREAD_NAME_PACKET_WRITER = "Ms-PacketWriterPool";
|
||||
public static final int THREAD_COUNT_PACKET_WRITER = 2;
|
||||
|
||||
public static final String THREAD_NAME_BLOCK_BATCH = "Ms-BlockBatchPool";
|
||||
public static final int THREAD_COUNT_BLOCK_BATCH = 2;
|
||||
|
||||
|
@ -38,7 +38,6 @@ public final class BenchmarkManager {
|
||||
THREAD_MX_BEAN.setThreadCpuTimeEnabled(true);
|
||||
|
||||
THREADS.add(THREAD_NAME_MAIN_UPDATE);
|
||||
THREADS.add(THREAD_NAME_PACKET_WRITER);
|
||||
THREADS.add(THREAD_NAME_BLOCK_BATCH);
|
||||
THREADS.add(THREAD_NAME_SCHEDULER);
|
||||
THREADS.add(THREAD_NAME_TICK);
|
||||
|
@ -0,0 +1,58 @@
|
||||
package net.minestom.server.thread;
|
||||
|
||||
import net.minestom.server.instance.Chunk;
|
||||
import net.minestom.server.instance.Instance;
|
||||
import net.minestom.server.utils.chunk.ChunkUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CopyOnWriteArraySet;
|
||||
import java.util.concurrent.Future;
|
||||
|
||||
/**
|
||||
* Simple thread provider implementation using a single thread to update all the instances and chunks.
|
||||
*/
|
||||
public class SingleThreadProvider extends ThreadProvider {
|
||||
|
||||
{
|
||||
setThreadCount(1);
|
||||
}
|
||||
|
||||
private final Set<Instance> instances = new CopyOnWriteArraySet<>();
|
||||
|
||||
@Override
|
||||
public void onInstanceCreate(@NotNull Instance instance) {
|
||||
this.instances.add(instance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceDelete(@NotNull Instance instance) {
|
||||
this.instances.remove(instance);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkLoad(@NotNull Instance instance, int chunkX, int chunkZ) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload(@NotNull Instance instance, int chunkX, int chunkZ) {
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<Future<?>> update(long time) {
|
||||
return Collections.singletonList(pool.submit(() -> {
|
||||
for (Instance instance : instances) {
|
||||
updateInstance(instance, time);
|
||||
for (Chunk chunk : instance.getChunks()) {
|
||||
final long index = ChunkUtils.getChunkIndex(chunk.getChunkX(), chunk.getChunkZ());
|
||||
processChunkTick(instance, index, time);
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
@ -103,6 +103,9 @@ public abstract class ThreadProvider {
|
||||
}
|
||||
|
||||
private void refreshPool() {
|
||||
if (pool != null) {
|
||||
this.pool.shutdown();
|
||||
}
|
||||
this.pool = new MinestomThread(threadCount, MinecraftServer.THREAD_NAME_TICK);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user