9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-19 15:09:25 +00:00
This commit is contained in:
Dreeam
2025-04-04 17:14:03 -04:00
parent f96b3e9f76
commit 4c835820f8
23 changed files with 127 additions and 22 deletions

View File

@@ -12,6 +12,52 @@ By: Simon Gardling <titaniumtown@gmail.com>
As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
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 ba20e87d2105ce53cdaf4049de2388d05fcd1b56..7b686d834e4eb36be5758b0e0a846a70d1e2294b 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java
@@ -378,7 +378,6 @@ public final class ChunkEntitySlices {
private static final class BasicEntityList<E extends Entity> {
- private static final Entity[] EMPTY = new Entity[0];
private static final int DEFAULT_CAPACITY = 4;
private E[] storage;
@@ -389,7 +388,7 @@ public final class ChunkEntitySlices {
}
public BasicEntityList(final int cap) {
- this.storage = (E[])(cap <= 0 ? EMPTY : new Entity[cap]);
+ this.storage = (E[])(cap <= 0 ? me.titaniumtown.ArrayConstants.emptyEntityArray : new Entity[cap]);// Gale - JettPack - reduce array allocations
}
public boolean isEmpty() {
@@ -401,7 +400,7 @@ public final class ChunkEntitySlices {
}
private void resize() {
- if (this.storage == EMPTY) {
+ if (this.storage == me.titaniumtown.ArrayConstants.emptyEntityArray) { // Gale - JettPack - reduce array allocations
this.storage = (E[])new Entity[DEFAULT_CAPACITY];
} else {
this.storage = Arrays.copyOf(this.storage, this.storage.length * 2);
diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
index 26207443b1223119c03db478d7e816d9cdf8e618..bbd1c262674b42eb9ea2830acb8bf94182f971f9 100644
--- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
+++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/server/ServerEntityLookup.java
@@ -14,10 +14,8 @@ import net.minecraft.world.level.entity.LevelCallback;
public final class ServerEntityLookup extends EntityLookup {
- private static final Entity[] EMPTY_ENTITY_ARRAY = new Entity[0];
-
private final ServerLevel serverWorld;
- public final ReferenceList<Entity> trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker
+ public final ReferenceList<Entity> trackerEntities = new ReferenceList<>(me.titaniumtown.ArrayConstants.emptyEntityArray); // Moonrise - entity tracker // Gale - JettPack - reduce array allocations
public ServerEntityLookup(final ServerLevel world, final LevelCallback<Entity> worldCallback) {
super(world, worldCallback);
diff --git a/net/minecraft/nbt/ByteArrayTag.java b/net/minecraft/nbt/ByteArrayTag.java
index 6fbb131b472a3093b137d8ced9889777a133bd5b..cecfd48f57bc11b84c18b4e5a723228fd3c18e23 100644
--- a/net/minecraft/nbt/ByteArrayTag.java
@@ -189,6 +235,28 @@ index bfda76974ea8d4397e2c2ebf5bdcb5d7e5f0bab5..cabbc93409ca99180d115e2f23419ee1
} else {
String[] strings = new String[pattern.size() - i3 - i2];
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
index 20403c3e2582caf3541cd9b051fb5ebff52eb555..96f29ce52dfbaebdaff287e4ae249f6628b22cf7 100644
--- a/net/minecraft/world/level/Level.java
+++ b/net/minecraft/world/level/Level.java
@@ -1832,7 +1832,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
public org.bukkit.entity.Entity[] getChunkEntities(int chunkX, int chunkZ) {
ca.spottedleaf.moonrise.patches.chunk_system.level.entity.ChunkEntitySlices slices = ((ServerLevel)this).moonrise$getEntityLookup().getChunk(chunkX, chunkZ);
if (slices == null) {
- return new org.bukkit.entity.Entity[0];
+ return me.titaniumtown.ArrayConstants.emptyBukkitEntityArray; // Gale - JettPack - reduce array allocations
}
List<org.bukkit.entity.Entity> ret = new java.util.ArrayList<>();
@@ -1843,7 +1843,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
}
}
- return ret.toArray(new org.bukkit.entity.Entity[0]);
+ return ret.toArray(me.titaniumtown.ArrayConstants.emptyBukkitEntityArray); // Gale - JettPack - reduce array allocations
}
// Paper end - rewrite chunk system
diff --git a/net/minecraft/world/level/block/ComposterBlock.java b/net/minecraft/world/level/block/ComposterBlock.java
index a647d76d365a60b95a3eb7927ac426bf70d417f3..7977ecd013c55359f179b4b7f895099b7eb02294 100644
--- a/net/minecraft/world/level/block/ComposterBlock.java

View File

@@ -11,15 +11,26 @@ Optimizes "image in map" maps, without requiring the map to be locked, which som
This has the disadvantage that the vanilla map data will never be updated while the CraftMapRenderer is not present, but that's not a huuuge problem for u
diff --git a/net/minecraft/world/item/MapItem.java b/net/minecraft/world/item/MapItem.java
index ba0b254d43651bca1f29b5272af05d068fc37ba8..2c6349285f598a4fbbc891eca1fb05efab109458 100644
index ba0b254d43651bca1f29b5272af05d068fc37ba8..9bb0ce86d2b7af4c468588de50a26a0b8615eb04 100644
--- a/net/minecraft/world/item/MapItem.java
+++ b/net/minecraft/world/item/MapItem.java
@@ -274,7 +274,7 @@ public class MapItem extends Item {
@@ -274,7 +274,18 @@ public class MapItem extends Item {
savedData.tickCarriedBy(player, stack);
}
- if (!savedData.locked && slot != null && slot.getType() == EquipmentSlot.Type.HAND) {
+ if (!savedData.locked && slot != null && slot.getType() == EquipmentSlot.Type.HAND && (!org.dreeam.leaf.config.modules.opt.SkipMapItemDataUpdates.enabled || savedData.mapView.getRenderers().stream().anyMatch(mapRenderer -> mapRenderer.getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class))) { // SparklyPaper - don't update maps if they don't have the CraftMapRenderer in the render list
+ // SparklyPaper start - don't update maps if they don't have the CraftMapRenderer in the render list
+ boolean shouldUpdateMap = !savedData.locked && slot != null && slot.getType() == EquipmentSlot.Type.HAND;
+ if (org.dreeam.leaf.config.modules.opt.SkipMapItemDataUpdates.enabled) {
+ for (org.bukkit.map.MapRenderer mapRenderer : savedData.mapView.getRenderers()) {
+ if (mapRenderer.getClass() == org.bukkit.craftbukkit.map.CraftMapRenderer.class) {
+ shouldUpdateMap = true;
+ break;
+ }
+ }
+ }
+ if (shouldUpdateMap) {
+ // SparklyPaper end - don't update maps if they don't have the CraftMapRenderer in the render list
this.update(level, entity, savedData);
}
}

View File

@@ -6,16 +6,15 @@ Subject: [PATCH] Polpot: Make egg and snowball can knockback player
Original project: https://github.com/HaHaWTH/Polpot
diff --git a/net/minecraft/world/entity/projectile/Snowball.java b/net/minecraft/world/entity/projectile/Snowball.java
index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..b5ee9ff679a8e9ec441154b698ed0196d525ae67 100644
index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..3f9767a84e9faf1f010358d9c2137bb2cf900337 100644
--- a/net/minecraft/world/entity/projectile/Snowball.java
+++ b/net/minecraft/world/entity/projectile/Snowball.java
@@ -54,6 +54,12 @@ public class Snowball extends ThrowableItemProjectile {
@@ -54,6 +54,11 @@ public class Snowball extends ThrowableItemProjectile {
Entity entity = result.getEntity();
int i = entity instanceof Blaze ? 3 : 0;
entity.hurt(this.damageSources().thrown(this, this.getOwner()), i);
+ // Leaf start - Polpot - Make snowball can knockback player
+ if (org.dreeam.leaf.config.modules.gameplay.Knockback.snowballCanKnockback && entity instanceof net.minecraft.server.level.ServerPlayer serverPlayer) {
+ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F);
+ serverPlayer.knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ());
+ }
+ // Leaf end - Polpot - Make snowball can knockback player
@@ -23,18 +22,18 @@ index 677b4b681f9c2c09a8ae3cfdec72102265547a7b..b5ee9ff679a8e9ec441154b698ed0196
@Override
diff --git a/net/minecraft/world/entity/projectile/ThrownEgg.java b/net/minecraft/world/entity/projectile/ThrownEgg.java
index 73ec34b43f3fb2aa3edc3f1cb48a923d1fa32036..0e4cba55c15d17af2dff7d9e10cecaf821853475 100644
index 73ec34b43f3fb2aa3edc3f1cb48a923d1fa32036..2433724db23e35f5de3ff46b2801914e6bc2a112 100644
--- a/net/minecraft/world/entity/projectile/ThrownEgg.java
+++ b/net/minecraft/world/entity/projectile/ThrownEgg.java
@@ -54,7 +54,14 @@ public class ThrownEgg extends ThrowableItemProjectile {
@@ -54,7 +54,13 @@ public class ThrownEgg extends ThrowableItemProjectile {
@Override
protected void onHitEntity(EntityHitResult result) {
super.onHitEntity(result);
+ net.minecraft.world.entity.Entity entity = result.getEntity(); // Polpot - make egg can knockback player
result.getEntity().hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F);
- result.getEntity().hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F);
+ // Leaf start - Polpot - Make egg can knockback player
+ net.minecraft.world.entity.Entity entity = result.getEntity();
+ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0F);
+ if (org.dreeam.leaf.config.modules.gameplay.Knockback.eggCanKnockback && entity instanceof net.minecraft.server.level.ServerPlayer serverPlayer) {
+ entity.hurt(this.damageSources().thrown(this, this.getOwner()), 0.0000001F);
+ serverPlayer.knockback(0.4000000059604645D, this.getX() - entity.getX(), this.getZ() - entity.getZ());
+ }
+ // Leaf end - Polpot - Make egg can knockback player

View File

@@ -0,0 +1,31 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com>
Date: Fri, 4 Apr 2025 17:12:53 -0400
Subject: [PATCH] Remove stream in entity mountedOrDismounted changes update
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index 936429fd17d8649329e6258a4e10c9e6bf62f6de..28c90d0a70048f6992a96aeb25ebafef579e8003 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -118,7 +118,19 @@ public class ServerEntity {
// Paper end - optimise collisions
List<Entity> passengers = this.entity.getPassengers();
if (!passengers.equals(this.lastPassengers)) {
- List<UUID> list = this.mountedOrDismounted(passengers).map(Entity::getUUID).toList();
+ // Leaf start - Remove stream in entity mountedOrDismounted changes update
+ List<UUID> list = new ArrayList<>();
+ for (Entity entity : this.lastPassengers) {
+ if (!passengers.contains(entity)) {
+ list.add(entity.getUUID());
+ }
+ }
+ for (Entity entity : passengers) {
+ if (!this.lastPassengers.contains(entity)) {
+ list.add(entity.getUUID());
+ }
+ }
+ // Leaf end - Remove stream in entity mountedOrDismounted changes update
this.broadcastWithIgnore.accept(new ClientboundSetPassengersPacket(this.entity), list);
this.lastPassengers = passengers;
}

View File

@@ -9,10 +9,10 @@ Original license: MIT
Original project: https://github.com/PurpurMC/Purpur
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index 936429fd17d8649329e6258a4e10c9e6bf62f6de..94fa37653598014d8187c4ecfd486709e4fb9f91 100644
index 28c90d0a70048f6992a96aeb25ebafef579e8003..209a2b6a30d334fc4f6d0b1c02682db7f0b5e435 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -204,6 +204,8 @@ public class ServerEntity {
@@ -216,6 +216,8 @@ public class ServerEntity {
}
// Gale end - Airplane - better checking for useless move packets
@@ -21,7 +21,7 @@ index 936429fd17d8649329e6258a4e10c9e6bf62f6de..94fa37653598014d8187c4ecfd486709
if (this.entity.hasImpulse || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity)this.entity).isFallFlying()) {
Vec3 deltaMovement = this.entity.getDeltaMovement();
if (deltaMovement != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed
@@ -287,6 +289,21 @@ public class ServerEntity {
@@ -299,6 +301,21 @@ public class ServerEntity {
);
}

View File

@@ -177,10 +177,10 @@ index f106373ef3ac4a8685c2939c9e8361688a285913..51ae390c68e7a3aa193329cc3bc47ca6
public boolean visible = true;
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
index 94fa37653598014d8187c4ecfd486709e4fb9f91..8aebb5e5f42fd4ae54cdea8ab7573bda3dea1d30 100644
index 209a2b6a30d334fc4f6d0b1c02682db7f0b5e435..1489ecc2754901c6f30ec1b5ff0f324b2c2f0a48 100644
--- a/net/minecraft/server/level/ServerEntity.java
+++ b/net/minecraft/server/level/ServerEntity.java
@@ -443,12 +443,15 @@ public class ServerEntity {
@@ -455,12 +455,15 @@ public class ServerEntity {
if (this.entity instanceof LivingEntity) {
Set<AttributeInstance> attributesToSync = ((LivingEntity)this.entity).getAttributes().getAttributesToSync();
if (!attributesToSync.isEmpty()) {

View File

@@ -9,7 +9,7 @@ public class UseSpigotItemMergingMech extends ConfigModules {
return EnumConfigCategory.GAMEPLAY.getBaseKeyName() + ".use-spigot-item-merging-mechanism";
}
public static boolean enabled = true;
public static boolean enabled = false;
@Override
public void onLoaded() {

View File

@@ -10,11 +10,7 @@
- [ ] Add server full join config explanation to docs
- [ ] Add purpur config changes to docs moved config
- [ ] check Dont send useless entity packets
- [ ] Use different state to separate config reload
- [ ] Use different state to separate different configs reload
# 1.21.5
- [ ] Reduce array allocations when paper patched all
- [ ] Check KeYi: Add an option for spigot item merging mechanism
- [ ] Remove stream in sparklypaper map optimization
- [ ] Check snowball knockback patch, whether need double hurt
- [ ] Update from Leaf 1.21.4 (curr commit: `1977a5b12c01f915d7c04a765b18957cbfbeeb24`)