9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-28 19:29:07 +00:00
Files
SakuraMC/sakura-server/minecraft-patches/features/0027-copy-EntityList-implementation-to-BasicEntityList.patch
Samsuik 991f961f38 Updated Upstream (Paper 1.21.6)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@a24f9b2 1.21.6 dev
PaperMC/Paper@457a0a6 Bump version string and protocol version to 1.21.6 release
PaperMC/Paper@245b547 Update base to 1.21.6
PaperMC/Paper@b28d77b Update Moonrise to 1.21.6
PaperMC/Paper@8318dcb Update DataConverter to 1.21.6-rc1
PaperMC/Paper@d2b1158 Set correct world access on BSL snapshots
PaperMC/Paper@023e6c2 Ensure waypoints are per world
PaperMC/Paper@40d5d31 Fix recursively converting JSON Text Components
PaperMC/Paper@1fcc416 Implement FeatureHooks#isChunkSent for Moonrise chunk system
PaperMC/Paper@e4d7178 Implement WaypointTransmitter#isChunkVisible
PaperMC/Paper@8980ead Directly walk text component after converting from JSON
PaperMC/Paper@5613ed6 Provide env environment variable and copy spigots sys prop for overriding default repository
PaperMC/Paper@62b7f86 Avoid and discourage use of Maven Central as a CDN (#12689)
PaperMC/Paper@f5534cb [ci skip] Run generators (#12691)
PaperMC/Paper@4781d28 Re-add Log4j Javadocs (#12693)
PaperMC/Paper@74fbcce Check type of Material in get/set stats (#12607)
PaperMC/Paper@4b3f967 Improve Fix MC-44654 (#12703)
PaperMC/Paper@a7dd263 Enable spigot obfuscation support (#12695)
PaperMC/Paper@6a51c44 Cleanup Primed TNT Fix (#12704)
PaperMC/Paper@839c6a1 Fix #11169 (#12706)
PaperMC/Paper@c77d5f9 Fix MC-297591
PaperMC/Paper@219f86e Implement chunk unload delay config option
PaperMC/Paper@e4eb69b Do not allow ticket level decreases to be processed asynchronously
PaperMC/Paper@71b0c76 Adds support for vanilla negative explosions (#12705)
PaperMC/Paper@3750927 [ci skip] Fix PermissionManager#clearPermissions() docs bad wording (#12657)
PaperMC/Paper@d61a51e Add ItemType#getBurnDuration() (#12604)
PaperMC/Paper@29fc853 Allow empty paths in namespaced keys (#12687)
PaperMC/Paper@4419afb fix: Safely handle nanosecond overflow in ClickCallback (#12686)
PaperMC/Paper@5652882 Add `isProxyEnabled` method to ServerConfiguration (#12664)
PaperMC/Paper@c0dda0e Add `isForceDefaultGameMode` method (#12673)
PaperMC/Paper@e714de6 Fix excess slot updates
PaperMC/Paper@6d0821d [ci skip] Fix docs for Spawner class and cleanup (#12710)
PaperMC/Paper@cceffe3 Release ItemType and BlockType (#12708)
PaperMC/Paper@186e9e3 Relocate CommandMap#registerServerAliases() call to after lifecycle events have been run (#12601)
PaperMC/Paper@5edcf6d Cleanup/command dispatching (#12713)
PaperMC/Paper@803baf0 Support hidden entities in Waypoints (#12715)
PaperMC/Paper@1814d8b build: publish to fill (#12717)
PaperMC/Paper@e454fef Add support for private constructors in plugin main classes (#12652)
PaperMC/Paper@d0e808f Move player to correct position in vehicle move packet handler
PaperMC/Paper@46b4b0b Improve keepalive ping system
PaperMC/Paper@38c1ddb Add and use FeatureHooks.getAllEntities
PaperMC/Paper@2f083ac Ensure player entity schedulers are ticked when they are dead
PaperMC/Paper@7c90c7c Optimise EntityScheduler ticking
PaperMC/Paper@aa6ee44 Re-add global region scheduler tick erroneously removed in last commit
PaperMC/Paper@d7510ef Fix #12722 (#12726)
PaperMC/Paper@0caf75f Fix #12721 (#12725)
PaperMC/Paper@bee2879 Adventure 4.23.0 (#12690)
PaperMC/Paper@692e93a Fix MC-299110
PaperMC/Paper@ea10fa4 Don't mutate the position of Items for MC-4 Fix (#12702)
PaperMC/Paper@aa6cd74 Remove unnecesary item check for ServerboundPlayerActionPacket RELEASE_USE_ITEM (#12668)
PaperMC/Paper@c9e89f4 Expose arrow velocity in EntityShootBowEvent for mobs (#12688)
PaperMC/Paper@7ec3174 Jump out of experimental phase
PaperMC/Paper@4e1a255 Update try catch for command handling
2025-06-26 14:47:59 +01:00

82 lines
3.4 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Samsuik <kfian294ma4@gmail.com>
Date: Sun, 2 Feb 2025 17:05:05 +0000
Subject: [PATCH] copy EntityList implementation to BasicEntityList
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
index 7678696aa2fa74358a374a501a6b7f76f4805945..1fa98cb7f853a29d2eaa297fc4e6e4c20e8d49e4 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
@@ -418,6 +418,13 @@ public final class ChunkEntitySlices {
private E[] storage;
private int size;
+ // Sakura start - use methods from EntityList
+ private it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap entityToIndex = null;
+ private void setupIndexMap() {
+ this.entityToIndex = new it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap(2, 0.8f);
+ this.entityToIndex.defaultReturnValue(Integer.MIN_VALUE);
+ }
+ // Sakura end - use methods from EntityList
public BasicEntityList() {
this(0);
@@ -438,6 +445,7 @@ public final class ChunkEntitySlices {
private void resize() {
if (this.storage == EMPTY) {
this.storage = (E[])new Entity[DEFAULT_CAPACITY];
+ this.setupIndexMap(); // Sakura - use methods from EntityList
} else {
this.storage = Arrays.copyOf(this.storage, this.storage.length * 2);
}
@@ -451,6 +459,7 @@ public final class ChunkEntitySlices {
} else {
this.storage[idx] = entity;
}
+ this.entityToIndex.put(entity.getId(), idx); // Sakura - use methods from EntityList
}
public int indexOf(final E entity) {
@@ -466,24 +475,32 @@ public final class ChunkEntitySlices {
}
public boolean remove(final E entity) {
- final int idx = this.indexOf(entity);
- if (idx == -1) {
+ // Sakura start - use methods from EntityList
+ if (this.entityToIndex == null) {
return false;
}
- final int size = --this.size;
- final E[] storage = this.storage;
- if (idx != size) {
- System.arraycopy(storage, idx + 1, storage, idx, size - idx);
+ final int index = this.entityToIndex.remove(entity.getId());
+ if (index == Integer.MIN_VALUE) {
+ return false;
}
- storage[size] = null;
+ // move the entity at the end to this index
+ final int endIndex = --this.size;
+ final E end = this.storage[endIndex];
+ if (index != endIndex) {
+ // not empty after this call
+ this.entityToIndex.put(end.getId(), index); // update index
+ }
+ this.storage[index] = end;
+ this.storage[endIndex] = null;
+ // Sakura end - use methods from EntityList
return true;
}
public boolean has(final E entity) {
- return this.indexOf(entity) != -1;
+ return this.entityToIndex != null && this.entityToIndex.containsKey(entity.getId()); // Sakura - use methods from EntityList
}
}