a2a9ffe3b9
Where I blocked movement did not consider velocity buildup, which I assume then "unleashes" if something was really trying to push that entity, and moves it a very large distance. Additionally, this method was completely misnamed, as movementTick is more "doLotsOfTickThings", and ended up breaking AI too, which the whole point of temporary wake ups was to let AI run to trigger new immunity. Also fixed numerous behavioral rules for Immunity to improve vanilla gameplay, suchas bees that are angry or moving towards a flower or hive, any insentient that is targetting any enemy (Accidently made it any player), and included flying mobs such as phantoms by reducing the type check to insentient instead of Creature. Also improved inWater immunity to consider if the mob is movable by water or not.
33 lines
1.7 KiB
Diff
33 lines
1.7 KiB
Diff
From 0ac3b8721e23bde721c5cecbd6e253998a2ad5d1 Mon Sep 17 00:00:00 2001
|
|
From: AJMFactsheets <AJMFactsheets@gmail.com>
|
|
Date: Wed, 22 Jan 2020 19:52:28 -0600
|
|
Subject: [PATCH] Fix items vanishing through end portal
|
|
|
|
If the Paper configuration option "keep-spawn-loaded" is set to false,
|
|
items entering the overworld from the end will spawn at Y = 0.
|
|
|
|
This is due to logic in the getHighestBlockYAt method in World.java
|
|
only searching the heightmap if the chunk is loaded.
|
|
|
|
Quickly loading the exact world spawn chunk before searching the
|
|
heightmap resolves the issue without having to load all spawn chunks.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index 3a248dbe37..d81ae00fb4 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -2610,6 +2610,11 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
|
|
if (blockposition == null) { // CraftBukkit
|
|
if (dimensionmanager1.getType() == DimensionManager.THE_END && dimensionmanager == DimensionManager.OVERWORLD) { // CraftBukkit
|
|
+ // Paper start - Ensure spawn chunk is always loaded before calculating Y coordinate
|
|
+ if (!worldserver1.isLoaded(worldserver1.getSpawn())) {
|
|
+ worldserver1.getChunkAtWorldCoords(worldserver1.getSpawn());
|
|
+ }
|
|
+ // Paper end
|
|
// CraftBukkit start
|
|
EntityPortalEvent event = CraftEventFactory.callEntityPortalEvent(this, worldserver1, worldserver1.getHighestBlockYAt(HeightMap.Type.MOTION_BLOCKING_NO_LEAVES, worldserver1.getSpawn()), 0);
|
|
if (event == null) {
|
|
--
|
|
2.25.1
|
|
|