From 37ab206cb148d0a89b3261e66d0fcc8b399c1d0a Mon Sep 17 00:00:00 2001 From: TheMode Date: Fri, 9 Jul 2021 11:20:49 +0200 Subject: [PATCH 1/5] ThreadProvider cleanup --- .../server/thread/ThreadProvider.java | 52 +++++-------------- 1 file changed, 14 insertions(+), 38 deletions(-) diff --git a/src/main/java/net/minestom/server/thread/ThreadProvider.java b/src/main/java/net/minestom/server/thread/ThreadProvider.java index 666d4b04c..e5cd2fab0 100644 --- a/src/main/java/net/minestom/server/thread/ThreadProvider.java +++ b/src/main/java/net/minestom/server/thread/ThreadProvider.java @@ -165,7 +165,6 @@ public abstract class ThreadProvider { processRemovedEntities(); // Update entities chunks processUpdatedEntities(); - if (getChunkRefreshType() == RefreshType.NEVER) return; @@ -175,21 +174,18 @@ public abstract class ThreadProvider { final int size = chunks.size(); int counter = 0; while (true) { - Chunk chunk = chunks.pollFirst(); + final Chunk chunk = chunks.pollFirst(); if (!ChunkUtils.isLoaded(chunk)) { removeChunk(chunk); - return; + continue; } - // Update chunk threads switchChunk(chunk); - // Add back to the deque chunks.addLast(chunk); if (++counter > size) break; - if (System.currentTimeMillis() >= endTime) break; } @@ -226,22 +222,13 @@ public abstract class ThreadProvider { this.threads.forEach(TickThread::shutdown); } - /** - * Gets all the {@link TickThread tick threads}. - * - * @return the tick threads - */ - public @NotNull List<@NotNull TickThread> getThreads() { - return threads; - } - - protected void addChunk(@NotNull Chunk chunk) { + private void addChunk(@NotNull Chunk chunk) { ChunkEntry chunkEntry = setChunkThread(chunk, (thread) -> new ChunkEntry(thread, chunk)); this.chunkEntryMap.put(chunk, chunkEntry); this.chunks.add(chunk); } - protected void switchChunk(@NotNull Chunk chunk) { + private void switchChunk(@NotNull Chunk chunk) { ChunkEntry chunkEntry = chunkEntryMap.get(chunk); if (chunkEntry == null) return; @@ -256,8 +243,8 @@ public abstract class ThreadProvider { }); } - protected @NotNull ChunkEntry setChunkThread(@NotNull Chunk chunk, - @NotNull Function chunkEntrySupplier) { + private @NotNull ChunkEntry setChunkThread(@NotNull Chunk chunk, + @NotNull Function chunkEntrySupplier) { final int threadId = getThreadId(chunk); TickThread thread = threads.get(threadId); var chunks = threadChunkMap.computeIfAbsent(thread, tickThread -> ConcurrentHashMap.newKeySet()); @@ -267,7 +254,7 @@ public abstract class ThreadProvider { return chunkEntry; } - protected void removeChunk(Chunk chunk) { + private void removeChunk(Chunk chunk) { ChunkEntry chunkEntry = chunkEntryMap.get(chunk); if (chunkEntry != null) { TickThread thread = chunkEntry.thread; @@ -286,7 +273,7 @@ public abstract class ThreadProvider { * @param chunk the chunk to find the thread id from * @return the chunk thread id */ - protected int getThreadId(@NotNull Chunk chunk) { + private int getThreadId(@NotNull Chunk chunk) { return (int) (Math.abs(findThread(chunk)) % threads.size()); } @@ -310,25 +297,15 @@ public abstract class ThreadProvider { for (Entity entity : updatableEntities) { var acquirableEntity = entity.getAcquirable(); ChunkEntry handlerChunkEntry = acquirableEntity.getHandler().getChunkEntry(); - - Chunk entityChunk = entity.getChunk(); - - // Entity is possibly not in the correct thread - // Remove from previous list - { - if (handlerChunkEntry != null) { - handlerChunkEntry.entities.remove(entity); - } + if (handlerChunkEntry != null) { + handlerChunkEntry.entities.remove(entity); } - // Add to new list - { - ChunkEntry chunkEntry = chunkEntryMap.get(entityChunk); - if (chunkEntry != null) { - chunkEntry.entities.add(entity); - acquirableEntity.getHandler().refreshChunkEntry(chunkEntry); - } + ChunkEntry chunkEntry = chunkEntryMap.get(entity.getChunk()); + if (chunkEntry != null) { + chunkEntry.entities.add(entity); + acquirableEntity.getHandler().refreshChunkEntry(chunkEntry); } } this.updatableEntities.clear(); @@ -387,5 +364,4 @@ public abstract class ThreadProvider { return Objects.hash(chunk); } } - } From b546a873e3cf3fcf6fe33df1ef9f36c7a048eb60 Mon Sep 17 00:00:00 2001 From: TheMode Date: Fri, 9 Jul 2021 11:23:18 +0200 Subject: [PATCH 2/5] Remove unnecessary cast --- .../server/thread/PerChunkThreadProvider.java | 2 +- .../server/thread/PerInstanceThreadProvider.java | 2 +- .../server/thread/SingleThreadProvider.java | 2 +- .../net/minestom/server/thread/ThreadProvider.java | 14 ++------------ 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/minestom/server/thread/PerChunkThreadProvider.java b/src/main/java/net/minestom/server/thread/PerChunkThreadProvider.java index ccd4365b8..aa6836d6a 100644 --- a/src/main/java/net/minestom/server/thread/PerChunkThreadProvider.java +++ b/src/main/java/net/minestom/server/thread/PerChunkThreadProvider.java @@ -17,7 +17,7 @@ public class PerChunkThreadProvider extends ThreadProvider { } @Override - public long findThread(@NotNull Chunk chunk) { + public int findThread(@NotNull Chunk chunk) { return chunk.hashCode(); } diff --git a/src/main/java/net/minestom/server/thread/PerInstanceThreadProvider.java b/src/main/java/net/minestom/server/thread/PerInstanceThreadProvider.java index baba20527..e1f5dbcf2 100644 --- a/src/main/java/net/minestom/server/thread/PerInstanceThreadProvider.java +++ b/src/main/java/net/minestom/server/thread/PerInstanceThreadProvider.java @@ -18,7 +18,7 @@ public class PerInstanceThreadProvider extends ThreadProvider { } @Override - public long findThread(@NotNull Chunk chunk) { + public int findThread(@NotNull Chunk chunk) { return chunk.getInstance().hashCode(); } diff --git a/src/main/java/net/minestom/server/thread/SingleThreadProvider.java b/src/main/java/net/minestom/server/thread/SingleThreadProvider.java index 34fa99b98..40b584a07 100644 --- a/src/main/java/net/minestom/server/thread/SingleThreadProvider.java +++ b/src/main/java/net/minestom/server/thread/SingleThreadProvider.java @@ -13,7 +13,7 @@ public class SingleThreadProvider extends ThreadProvider { } @Override - public long findThread(@NotNull Chunk chunk) { + public int findThread(@NotNull Chunk chunk) { return 0; } diff --git a/src/main/java/net/minestom/server/thread/ThreadProvider.java b/src/main/java/net/minestom/server/thread/ThreadProvider.java index e5cd2fab0..1b9a84bf7 100644 --- a/src/main/java/net/minestom/server/thread/ThreadProvider.java +++ b/src/main/java/net/minestom/server/thread/ThreadProvider.java @@ -69,7 +69,7 @@ public abstract class ThreadProvider { * * @param chunk the chunk */ - public abstract long findThread(@NotNull Chunk chunk); + public abstract int findThread(@NotNull Chunk chunk); /** * Defines how often chunks thread should be updated. @@ -245,7 +245,7 @@ public abstract class ThreadProvider { private @NotNull ChunkEntry setChunkThread(@NotNull Chunk chunk, @NotNull Function chunkEntrySupplier) { - final int threadId = getThreadId(chunk); + final int threadId = Math.abs(findThread(chunk)) % threads.size(); TickThread thread = threads.get(threadId); var chunks = threadChunkMap.computeIfAbsent(thread, tickThread -> ConcurrentHashMap.newKeySet()); @@ -267,16 +267,6 @@ public abstract class ThreadProvider { this.chunks.remove(chunk); } - /** - * Finds the thread id associated to a {@link Chunk}. - * - * @param chunk the chunk to find the thread id from - * @return the chunk thread id - */ - private int getThreadId(@NotNull Chunk chunk) { - return (int) (Math.abs(findThread(chunk)) % threads.size()); - } - private void processRemovedEntities() { if (removedEntities.isEmpty()) return; From 0ff69503c57f8800537265047f5f8fb49e860a19 Mon Sep 17 00:00:00 2001 From: TheMode Date: Fri, 9 Jul 2021 12:42:36 +0200 Subject: [PATCH 3/5] Add Point#isZero --- src/main/java/net/minestom/server/coordinate/Point.java | 4 ++++ src/main/java/net/minestom/server/entity/Entity.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minestom/server/coordinate/Point.java b/src/main/java/net/minestom/server/coordinate/Point.java index bf116427b..c2ebac45d 100644 --- a/src/main/java/net/minestom/server/coordinate/Point.java +++ b/src/main/java/net/minestom/server/coordinate/Point.java @@ -172,6 +172,10 @@ public interface Point { Double.compare(point.z(), z()) == 0; } + default boolean isZero() { + return x() == 0 && y() == 0 && z() == 0; + } + /** * Gets if two points are in the same chunk. * diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 6aaca60d6..92499695b 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -914,7 +914,7 @@ public class Entity implements Viewable, Tickable, EventHandler, Da * @return true if velocity is not set to 0 */ public boolean hasVelocity() { - return !velocity.samePoint(Vec.ZERO); + return !velocity.isZero(); } /** From ec440f778b940d594b0d1e9aa79695b06d7d7719 Mon Sep 17 00:00:00 2001 From: TheMode Date: Fri, 9 Jul 2021 17:15:28 +0200 Subject: [PATCH 4/5] Remove nullable annotation --- src/main/java/net/minestom/server/instance/block/Block.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minestom/server/instance/block/Block.java b/src/main/java/net/minestom/server/instance/block/Block.java index ea2d3b107..77a7d051a 100644 --- a/src/main/java/net/minestom/server/instance/block/Block.java +++ b/src/main/java/net/minestom/server/instance/block/Block.java @@ -169,11 +169,11 @@ public interface Block extends ProtocolObject, TagReadable, BlockConstants { return compare(block, Comparator.ID); } - static @Nullable Block fromNamespaceId(@NotNull String namespaceID) { + static Block fromNamespaceId(@NotNull String namespaceID) { return BlockLoader.get(namespaceID); } - static @Nullable Block fromNamespaceId(@NotNull NamespaceID namespaceID) { + static Block fromNamespaceId(@NotNull NamespaceID namespaceID) { return fromNamespaceId(namespaceID.asString()); } From 33c263934d5a3ca639014c96cbaa4b8c691441be Mon Sep 17 00:00:00 2001 From: TheMode Date: Fri, 9 Jul 2021 18:19:43 +0200 Subject: [PATCH 5/5] Add data as dependency --- build.gradle | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 22a9be8bb..5b6b77b59 100644 --- a/build.gradle +++ b/build.gradle @@ -164,8 +164,7 @@ dependencies { } api "com.github.Minestom:DependencyGetter:v1.0.1" - // TODO include registry files - //implementation files('data/minestom-data-1.17.jar') + implementation 'com.github.Minestom:MinestomDataGenerator:-SNAPSHOT' // Adventure, for user-interface api "net.kyori:adventure-api:$adventureVersion"