Skip to content

Commit 335ff2b

Browse files
authored
Merge pull request #1 from MidnightTale/experiment/neo-scheduler
Upstream(neo scheduler)
2 parents fad609e + a17c2bd commit 335ff2b

12 files changed

+263
-67
lines changed

atdeprecated-server/minecraft-patches/features/0009-Purpur-Barrels-and-enderchests-6-rows.patch

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ From: MidnightTale <[email protected]>
33
Date: Thu, 24 Jul 2025 08:46:30 +0700
44
Subject: [PATCH] Purpur: Barrels and enderchests 6 rows
55

6-
Co-authored by: William Blake Galbreath <[email protected]>
76
As part of: Purpur (https://github.com/PurpurMC/Purpur/blob/09f547de09fc5d886f18f6d99ff389289766ec9d/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch)
87
Licensed under: MIT (https://github.com/PurpurMC/Purpur/blob/09f547de09fc5d886f18f6d99ff389289766ec9d/LICENSE)
98

109
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
11-
index 5c21fc0c749973d17df690fe7e2eab597b198131..d89f91a08d38869296471a78d52fa84ff97be64a 100644
10+
index 5958732fe6ac391648df07cd76e73c0fb4c312b8..2f4ceb4f26a9861083de02e3d5aa6f10763c20f5 100644
1211
--- a/net/minecraft/server/players/PlayerList.java
1312
+++ b/net/minecraft/server/players/PlayerList.java
14-
@@ -1086,6 +1086,9 @@ public abstract class PlayerList {
13+
@@ -1087,6 +1087,9 @@ public abstract class PlayerList {
1514
player.getBukkitEntity().recalculatePermissions(); // CraftBukkit
1615
this.server.getCommands().sendCommands(player);
1716
} // Paper - Add sendOpLevel API
@@ -34,7 +33,7 @@ index 7ff3562f4095a1e79a1299b56a080ee5a15cfa0d..aa1a5de33aef5718581bf50ee45b1d2b
3433
// CraftBukkit start
3534
public boolean fauxSleeping;
3635
diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java
37-
index 0fffa384f928ab84451331380968fb4650eafe26..8cf24c79535d1cf326079f0eacd5f1ac25e3f365 100644
36+
index 0fffa384f928ab84451331380968fb4650eafe26..57ac36b77f15966b0e2a6676bfc15b963ec1100a 100644
3837
--- a/net/minecraft/world/inventory/ChestMenu.java
3938
+++ b/net/minecraft/world/inventory/ChestMenu.java
4039
@@ -70,6 +70,26 @@ public class ChestMenu extends AbstractContainerMenu {

atdeprecated-server/minecraft-patches/features/0010-Add-config-for-death-loot.patch

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Add config for death loot
55

66

77
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
8-
index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1fde373e51 100644
8+
index aa242f3f7589c8edafccccb52effaed7582aa6f4..44d8430361cadacff08b5f543a471982d453ff77 100644
99
--- a/net/minecraft/server/level/ServerPlayer.java
1010
+++ b/net/minecraft/server/level/ServerPlayer.java
11-
@@ -1249,7 +1249,33 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
11+
@@ -1250,7 +1250,33 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
1212
if (!keepInventory) {
1313
for (ItemStack item : this.getInventory().getContents()) {
1414
if (!item.isEmpty() && !EnchantmentHelper.has(item, net.minecraft.world.item.enchantment.EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) {
@@ -17,23 +17,23 @@ index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1f
1717
+ ItemEntity entity = this.drop(stack, true, false, false, null);
1818
+ // atDeprecated start - death loot protection
1919
+ if (entity != null) {
20-
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsOwnerPickupOnly) {
20+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsOwnerPickupOnly) {
2121
+ entity.setTarget(this.getUUID());
2222
+ entity.markAsDeathLoot();
2323
+ }
24-
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsGlow) {
24+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsGlow) {
2525
+ entity.setGlowingTag(true);
2626
+ entity.markAsDeathLoot();
2727
+ }
28-
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsInvulnerable) {
28+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsInvulnerable) {
2929
+ entity.setInvulnerable(true);
3030
+ entity.markAsDeathLoot();
3131
+ }
32-
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemDespawnTimeTicks > 0) {
33-
+ entity.age = -fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemDespawnTimeTicks;
32+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemDespawnTimeTicks > 0) {
33+
+ entity.age = -fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemDespawnTimeTicks;
3434
+ entity.markAsDeathLoot();
3535
+ }
36-
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsMobCantPickup) {
36+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsMobCantPickup) {
3737
+ entity.canMobPickup = false;
3838
+ entity.markAsDeathLoot();
3939
+ }
@@ -44,7 +44,7 @@ index 06e41bca6b964ca71ea7bca547b03cdb3610ba31..b39f2790fabeb7f2a977dcd1ec66db1f
4444
}
4545
}
4646
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
47-
index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c59699465 100644
47+
index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..08b29d1f7941bb81d9a715656d94d987e8247cc5 100644
4848
--- a/net/minecraft/world/entity/LivingEntity.java
4949
+++ b/net/minecraft/world/entity/LivingEntity.java
5050
@@ -3970,9 +3970,17 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -56,7 +56,7 @@ index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c
5656
- itemEntity.setDeltaMovement(-Mth.sin(f1) * f, 0.2F, Mth.cos(f1) * f);
5757
+ // atDeprecated start
5858
+ if (this instanceof Player) {
59-
+ float f = this.random.nextFloat() * (float) fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathLootSpread;
59+
+ float f = this.random.nextFloat() * (float) fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathLootSpread;
6060
+ float f1 = this.random.nextFloat() * (float) (Math.PI * 2);
6161
+ itemEntity.setDeltaMovement(-Mth.sin(f1) * f, 0.2F, Mth.cos(f1) * f);
6262
+ } else {
@@ -69,7 +69,7 @@ index d55a6989fd68f0bcf7bd05e9420fda1115afa6c0..25b1db4170104c7b49ed5c62989f6d8c
6969
float f = 0.3F;
7070
float f1 = Mth.sin(this.getXRot() * (float) (Math.PI / 180.0));
7171
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
72-
index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f28cf33be 100644
72+
index b745eb5d9c68547335247910ff2ae8d5fb36349c..a779bb24475e2ee5b6fab7da9b64a2c96b027242 100644
7373
--- a/net/minecraft/world/entity/item/ItemEntity.java
7474
+++ b/net/minecraft/world/entity/item/ItemEntity.java
7575
@@ -56,6 +56,7 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -85,7 +85,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
8585
this.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause
8686
}
8787
+ // atDeprecated start - glowing for death loot
88-
+ if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsGlow) {
88+
+ if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsGlow) {
8989
+ this.setGlowingTag(true);
9090
+ }
9191
+ // atDeprecated end
@@ -118,7 +118,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
118118
public void playerTouch(Player entity) {
119119
if (!this.level().isClientSide) {
120120
+ // atDeprecated start - enforce owner-only pickup for death loot
121-
+ if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsOwnerPickupOnly) {
121+
+ if (this.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsOwnerPickupOnly) {
122122
+ if (this.target != null && !this.target.equals(entity.getUUID())) {
123123
+ return;
124124
+ }
@@ -137,7 +137,7 @@ index b745eb5d9c68547335247910ff2ae8d5fb36349c..bef0bf94a54ab85a86efcb5502ca721f
137137
+ // atDeprecated end
138138
}
139139
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
140-
index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85d1e48ee5 100644
140+
index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..d5ba1bea926f0fd3ef38d101055d61eb548679a4 100644
141141
--- a/net/minecraft/world/entity/player/Player.java
142142
+++ b/net/minecraft/world/entity/player/Player.java
143143
@@ -1840,7 +1840,16 @@ public abstract class Player extends LivingEntity {
@@ -147,7 +147,7 @@ index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85
147147
- return !level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator() ? Math.min(this.experienceLevel * 7, 100) : 0;
148148
+ // atDeprecated start - Use deathXpDropPercentage gamerule for XP drop (fixed XP calculation)
149149
+ if (!level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) {
150-
+ int percent = fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathXpDropPercentage;
150+
+ int percent = fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathXpDropPercentage;
151151
+ if (percent < 0) percent = 0;
152152
+ if (percent > 100) percent = 100;
153153
+ int xp = getTrueTotalExperience();
@@ -194,15 +194,15 @@ index aa1a5de33aef5718581bf50ee45b1d2b1c13a46c..b9b14cd9f0ff5556e076aab21f4c2b85
194194
+ // atDeprecated end
195195
}
196196
diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
197-
index 5de769e7bd56bb3355c3c711d46ce5e103ea4409..e823741a915f14254933aebc515f4ad72b174bbc 100644
197+
index 5de769e7bd56bb3355c3c711d46ce5e103ea4409..646cb7159a3e38101c281bd9fac5d0be1d79c3e8 100644
198198
--- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java
199199
+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java
200200
@@ -630,6 +630,11 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
201201
}
202202

203203
public static boolean addItem(Container container, ItemEntity item) {
204204
+ // atDeprecated start - prevent hopper pickup of death loot
205-
+ if (item.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.DEATH_LOOT_CONFIG.deathItemsHopperCantPickup) {
205+
+ if (item.isDeathLoot && fun.mntale.atdeprecated.config.AtCoreConfig.INVENTORY_CONFIG.deathItemsHopperCantPickup) {
206206
+ return false;
207207
+ }
208208
+ // atDeprecated end

atdeprecated-server/minecraft-patches/features/0012-Lophine-Add-config-to-enable-Raytracing-tracker.patch

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ From: MidnightTale <[email protected]>
33
Date: Thu, 24 Jul 2025 23:04:37 +0700
44
Subject: [PATCH] Lophine: Add config to enable Raytracing tracker
55

6-
Co-authored by: MrHua269 <[email protected]>
76
As part of: Lophine (https://github.com/LuminolMC/Lophine/blob/904abaa56499a869259d3e6b3e586c1d33e34d28/lophine-server/minecraft-patches/features/0006-Add-config-to-enable-Raytracing-tracker.patch)
87
Licensed under: MIT (https://github.com/LuminolMC/Lophine/blob/904abaa56499a869259d3e6b3e586c1d33e34d28/LICENSE.md)
98

@@ -96,7 +95,7 @@ index 6f00ffa05d9597917574357e0069c9b056aa5ce2..af0a8b99188f25adb0a76e227d3debc1
9695
public EntityType(
9796
EntityType.EntityFactory<T> factory,
9897
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
99-
index b9b14cd9f0ff5556e076aab21f4c2b85d1e48ee5..4480b491250f08350f479c27d17d51fe62bc60f6 100644
98+
index d5ba1bea926f0fd3ef38d101055d61eb548679a4..e95884b560b8986568dc84214649f640d84d199e 100644
10099
--- a/net/minecraft/world/entity/player/Player.java
101100
+++ b/net/minecraft/world/entity/player/Player.java
102101
@@ -230,6 +230,25 @@ public abstract class Player extends LivingEntity {
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MidnightTale <[email protected]>
3+
Date: Fri, 25 Jul 2025 10:48:02 +0700
4+
Subject: [PATCH] Leaf: Don't save primed tnt entity
5+
6+
As part of: Leaf (https://github.com/Winds-Studio/Leaf/blob/006fe7ce3a58e687183271f02e1331f23fc5bd99/leaf-server/minecraft-patches/features/0137-Don-t-save-primed-tnt-entity.patch)
7+
Licensed under: MIT (https://github.com/Winds-Studio/Leaf/blob/006fe7ce3a58e687183271f02e1331f23fc5bd99/LICENSE.md)
8+
9+
diff --git a/net/minecraft/world/entity/item/PrimedTnt.java b/net/minecraft/world/entity/item/PrimedTnt.java
10+
index 732672aa7d915217eb4af44179b2f2ab1e796cca..19c34d9e453b98e633aa272dae7c35b01339532a 100644
11+
--- a/net/minecraft/world/entity/item/PrimedTnt.java
12+
+++ b/net/minecraft/world/entity/item/PrimedTnt.java
13+
@@ -246,4 +246,11 @@ public class PrimedTnt extends Entity implements TraceableEntity {
14+
return !this.level().paperConfig().fixes.preventTntFromMovingInWater && super.isPushedByFluid();
15+
}
16+
// Paper end - Option to prevent TNT from moving in water
17+
+
18+
+ // Leaf start - PMC - Don't save primed tnt entity
19+
+ @Override
20+
+ public boolean shouldBeSaved() {
21+
+ return !fun.mntale.atdeprecated.config.AtCoreConfig.ENTITY_CONFIG.dontSavePrimedTNT && super.shouldBeSaved();
22+
+ }
23+
+ // Leaf - PMC - Don't save primed tnt entity
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MidnightTale <[email protected]>
3+
Date: Fri, 25 Jul 2025 10:50:28 +0700
4+
Subject: [PATCH] Leaf: Don't save falling block entity
5+
6+
As part of: Leaf (https://github.com/Winds-Studio/Leaf/blob/006fe7ce3a58e687183271f02e1331f23fc5bd99/leaf-server/minecraft-patches/features/0138-Don-t-save-falling-block-entity.patch)
7+
Licensed under: MIT (https://github.com/Winds-Studio/Leaf/blob/006fe7ce3a58e687183271f02e1331f23fc5bd99/LICENSE.md)
8+
9+
diff --git a/net/minecraft/world/entity/item/FallingBlockEntity.java b/net/minecraft/world/entity/item/FallingBlockEntity.java
10+
index c444c4b7dc8454abd257030a8c59b9b22b9013d9..8fe609d6506edfe26067af196188a395f9ba966b 100644
11+
--- a/net/minecraft/world/entity/item/FallingBlockEntity.java
12+
+++ b/net/minecraft/world/entity/item/FallingBlockEntity.java
13+
@@ -390,4 +390,11 @@ public class FallingBlockEntity extends Entity {
14+
this.forceTickAfterTeleportToDuplicate = entity != null && flag && (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowUnsafeEndPortalTeleportation || me.earthme.luminol.config.modules.fixes.UnsafeTeleportationConfig.enabled); // Paper // Luminol - Unsafe teleportation
15+
return entity;
16+
}
17+
+
18+
+ // Leaf start - PMC - Don't save falling block entity
19+
+ @Override
20+
+ public boolean shouldBeSaved() {
21+
+ return !fun.mntale.atdeprecated.config.AtCoreConfig.ENTITY_CONFIG.dontSaveFallingBlock && super.shouldBeSaved();
22+
+ }
23+
+ // Leaf end - PMC - Don't save falling block entity
24+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: MidnightTale <[email protected]>
3+
Date: Fri, 25 Jul 2025 11:16:28 +0700
4+
Subject: [PATCH] Purpur: Don't send useless entity packets
5+
6+
Original license: MIT
7+
Original project: https://github.com/PurpurMC/Purpur
8+
9+
diff --git a/net/minecraft/server/level/ServerEntity.java b/net/minecraft/server/level/ServerEntity.java
10+
index 3a9293d5328ef0befa0b709169489b61a2266807..de476f97c42f6949f769aaf9cf5ce18470bd7cda 100644
11+
--- a/net/minecraft/server/level/ServerEntity.java
12+
+++ b/net/minecraft/server/level/ServerEntity.java
13+
@@ -231,6 +231,7 @@ public class ServerEntity {
14+
} // SparklyPaper end
15+
}
16+
17+
+ if (fun.mntale.atdeprecated.config.AtCoreConfig.ENTITY_CONFIG.reduceUselessEntityMovePackets && isUselessMoveEntityPacket(packet)) packet = null; // Purpur
18+
if (packet != null) {
19+
this.broadcast.accept(packet);
20+
}
21+
@@ -291,6 +292,21 @@ public class ServerEntity {
22+
);
23+
}
24+
25+
+ // Purpur start
26+
+ private boolean isUselessMoveEntityPacket(@Nullable Packet<?> packet) {
27+
+ if (!(packet instanceof ClientboundMoveEntityPacket moveEntityPacket)) return false;
28+
+ return switch (packet) {
29+
+ case ClientboundMoveEntityPacket.Pos ignored ->
30+
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0;
31+
+ case ClientboundMoveEntityPacket.PosRot ignored ->
32+
+ moveEntityPacket.getXa() == 0 && moveEntityPacket.getYa() == 0 && moveEntityPacket.getZa() == 0 && moveEntityPacket.getYRot() == 0 && moveEntityPacket.getXRot() == 0;
33+
+ case ClientboundMoveEntityPacket.Rot ignored ->
34+
+ moveEntityPacket.getYRot() == 0 && moveEntityPacket.getXRot() == 0;
35+
+ default -> false;
36+
+ };
37+
+ }
38+
+ // Purpur end
39+
+
40+
private void handleMinecartPosRot(NewMinecartBehavior behavior, byte yRot, byte xRot, boolean dirty) {
41+
this.sendDirtyEntityData();
42+
if (behavior.lerpSteps.isEmpty()) {

0 commit comments

Comments
 (0)