Skip to content

Commit

Permalink
work work work
Browse files Browse the repository at this point in the history
  • Loading branch information
mechoriet committed Oct 7, 2023
1 parent 38d73e9 commit 3acd639
Show file tree
Hide file tree
Showing 10 changed files with 145 additions and 78 deletions.
32 changes: 32 additions & 0 deletions patches/server/0103-fastutil-EntityTracker.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mechoriet <[email protected]>
Date: Sat, 7 Oct 2023 17:33:39 +0200
Subject: [PATCH] fastutil - EntityTracker


diff --git a/src/main/java/net/minecraft/server/EntityTracker.java b/src/main/java/net/minecraft/server/EntityTracker.java
index cb72b36725927272fddfdad929b268a7b06140ac..d3afb43259dc34a63c561266efbf7e5050d9d213 100644
--- a/src/main/java/net/minecraft/server/EntityTracker.java
+++ b/src/main/java/net/minecraft/server/EntityTracker.java
@@ -13,7 +13,7 @@ public class EntityTracker {

private static final Logger a = LogManager.getLogger();
private final WorldServer world;
- private Set<EntityTrackerEntry> c = Sets.newHashSet();
+ private Set<EntityTrackerEntry> c = new io.papermc.paper.util.maplist.ObjectMapList<>(); // PandaSpigot - FastUtil - ObjectMapList
public IntHashMap<EntityTrackerEntry> trackedEntities = new IntHashMap();
private int e;

diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
index 0b90b6f30ea09fb117281d5ddd2fc752d2c139b5..91e72f4fe98a4d83c5f886e86c945c602eb1454a 100644
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
@@ -42,7 +42,7 @@ public class EntityTrackerEntry {
// PaperSpigot start
// Replace trackedPlayers Set with a Map. The value is true until the player receives
// their first update (which is forced to have absolute coordinates), false afterward.
- public java.util.Map<EntityPlayer, Boolean> trackedPlayerMap = new java.util.HashMap<EntityPlayer, Boolean>();
+ public java.util.Map<EntityPlayer, Boolean> trackedPlayerMap = new it.unimi.dsi.fastutil.objects.Reference2BooleanOpenHashMap<>();
public Set<EntityPlayer> trackedPlayers = trackedPlayerMap.keySet();
// PaperSpigot end

This file was deleted.

11 changes: 10 additions & 1 deletion patches/server/0106-fastutil-World.patch
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,18 @@ Subject: [PATCH] fastutil - World


diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 38ebe35f6fa434103b52e86262c7f4cc32d486e3..5736c939c850e9c4dea9c4070079ed1fd4db9809 100644
index 38ebe35f6fa434103b52e86262c7f4cc32d486e3..560b15ee0d932f30161915be21425c97d4ba656d 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -36,7 +36,7 @@ public abstract class World implements IBlockAccess {
private int a = 63;
protected boolean e;
// Spigot start - guard entity list from removals
- public final List<Entity> entityList = new java.util.ArrayList<Entity>()
+ public final List<Entity> entityList = new it.unimi.dsi.fastutil.objects.ObjectArrayList<Entity>()
{
@Override
public Entity remove(int index)
@@ -66,8 +66,8 @@ public abstract class World implements IBlockAccess {
public final List<TileEntity> tileEntityList = Lists.newArrayList();
private final List<TileEntity> b = Lists.newArrayList();
Expand Down
43 changes: 39 additions & 4 deletions patches/server/0107-fastutil-NBTTagCompound.patch
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,50 @@ Subject: [PATCH] fastutil - NBTTagCompound


diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java
index 22d7c2ab36f11f93c0b9d08b786c784562ef7077..89c9298fde1711a1a5923b81715f45f1341fa693 100644
index 22d7c2ab36f11f93c0b9d08b786c784562ef7077..01cc42ebc8429ac0fb66366542781739fbe77ee7 100644
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
@@ -12,7 +12,7 @@ import java.util.concurrent.Callable;
@@ -12,10 +12,14 @@ import java.util.concurrent.Callable;

public class NBTTagCompound extends NBTBase {

- private Map<String, NBTBase> map = Maps.newHashMap();
+ private Map<String, NBTBase> map = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(8, 0.8f); // PandaSpigot - reduce memory footprint of NBTTagCompound
-
- public NBTTagCompound() {}
+ private Map<String, NBTBase> map;

public NBTTagCompound() {}
+ public NBTTagCompound() {
+ map = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(8, 0.8f); // PandaSpigot - reduce memory footprint of NBTTagCompound
+ }
+ public NBTTagCompound(it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<String, NBTBase> map) {
+ this.map = map;
+ }
void write(DataOutput dataoutput) throws IOException {
Iterator iterator = this.map.keySet().iterator();

@@ -282,16 +286,17 @@ public class NBTTagCompound extends NBTBase {
}

public NBTBase clone() {
- NBTTagCompound nbttagcompound = new NBTTagCompound();
- Iterator iterator = this.map.keySet().iterator();
-
+ it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<String, NBTBase> ret = new it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap<>(
+ this.map.size(), 0.8f);
+ Iterator<Map.Entry<String, NBTBase>> iterator = (this.map instanceof it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap)
+ ? ((it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap) this.map).object2ObjectEntrySet()
+ .fastIterator()
+ : this.map.entrySet().iterator();
while (iterator.hasNext()) {
- String s = (String) iterator.next();
-
- nbttagcompound.set(s, ((NBTBase) this.map.get(s)).clone());
+ Map.Entry<String, NBTBase> entry = iterator.next();
+ ret.put(entry.getKey(), entry.getValue().clone());
}
-
- return nbttagcompound;
+ return new NBTTagCompound(ret);
}

public boolean equals(Object object) {
54 changes: 0 additions & 54 deletions patches/server/0109-fixup-fastutil-NBTTagCompound.patch

This file was deleted.

45 changes: 45 additions & 0 deletions patches/server/0112-fastutil-SpawnerCreature.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mechoriet <[email protected]>
Date: Sat, 7 Oct 2023 21:43:55 +0200
Subject: [PATCH] fastutil - SpawnerCreature


diff --git a/src/main/java/net/minecraft/server/SpawnerCreature.java b/src/main/java/net/minecraft/server/SpawnerCreature.java
index 550bd42b656ce2e7a0d1542215845d2bf7c475d7..4c497835c9f3be3410d53a53beb289fcb36ca2d9 100644
--- a/src/main/java/net/minecraft/server/SpawnerCreature.java
+++ b/src/main/java/net/minecraft/server/SpawnerCreature.java
@@ -23,28 +23,13 @@ public final class SpawnerCreature {
// Spigot start - get entity count only from chunks being processed in b
private int getEntityCount(WorldServer server, Class oClass)
{
- // PandaSpigot start - use entire world, not just active chunks. Spigot broke vanilla expectations.
- if (true) {
- int sum = 0;
- for (Chunk c : server.chunkProviderServer.chunks.values()) {
- sum += c.entityCount.get(oClass);
- }
- return sum;
- }
- // PandaSpigot end
- int i = 0;
- Iterator<Long> it = this.b.iterator();
- while ( it.hasNext() )
- {
- Long coord = it.next();
- int x = LongHash.msw( coord );
- int z = LongHash.lsw( coord );
- if ( !server.chunkProviderServer.unloadQueue.contains( coord ) && server.isChunkLoaded( x, z, true ) )
- {
- i += server.getChunkAt( x, z ).entityCount.get( oClass );
- }
+ int sum = 0;
+ for (it.unimi.dsi.fastutil.objects.ObjectIterator<Chunk> objectIterator = (server.chunkProviderServer).chunks.values()
+ .iterator(); objectIterator.hasNext();) {
+ Chunk c = objectIterator.next();
+ sum += c.entityCount.get(oClass);
}
- return i;
+ return sum;
}
// Spigot end

19 changes: 19 additions & 0 deletions patches/server/0113-fastutil-CraftingManager.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mechoriet <[email protected]>
Date: Sat, 7 Oct 2023 21:46:27 +0200
Subject: [PATCH] fastutil - CraftingManager


diff --git a/src/main/java/net/minecraft/server/CraftingManager.java b/src/main/java/net/minecraft/server/CraftingManager.java
index 544ff0a6c2ec62911c97fb02aec24d0215188dc3..2d099863b1d77cf5e1dbc6c37a48f517685d1925 100644
--- a/src/main/java/net/minecraft/server/CraftingManager.java
+++ b/src/main/java/net/minecraft/server/CraftingManager.java
@@ -14,7 +14,7 @@ import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
public class CraftingManager {

private static final CraftingManager a = new CraftingManager();
- public List<IRecipe> recipes = Lists.newArrayList();
+ public List<IRecipe> recipes = new it.unimi.dsi.fastutil.objects.ObjectArrayList<>();
// CraftBukkit start
public IRecipe lastRecipe;
public org.bukkit.inventory.InventoryView lastCraftView;

0 comments on commit 3acd639

Please sign in to comment.