--- a/net/minecraft/world/level/block/EndPortalBlock.java
+++ b/net/minecraft/world/level/block/EndPortalBlock.java
@@ -63,7 +_,7 @@
             level.getCraftServer().getPluginManager().callEvent(event);
             if (event.isCancelled()) return; // Paper - make cancellable
             // CraftBukkit end
-            if (!level.isClientSide && level.dimension() == Level.END && entity instanceof ServerPlayer serverPlayer && !serverPlayer.seenCredits) {
+            if (false && !level.isClientSide && level.dimension() == Level.END && entity instanceof ServerPlayer serverPlayer && !serverPlayer.seenCredits) { // Folia - region threading - do not show credits
                 if (level.paperConfig().misc.disableEndCredits) {serverPlayer.seenCredits = true; return;} // Paper - Option to disable end credits
                 serverPlayer.showEndCredits();
             } else {
@@ -112,6 +_,20 @@
             // CraftBukkit end
         }
     }
+
+    // Folia start - region threading
+    @Override
+    public boolean portalAsync(ServerLevel sourceWorld, Entity portalTarget, BlockPos portalPos) {
+        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(portalTarget)) {
+            return false;
+        }
+        if (!ca.spottedleaf.moonrise.common.util.TickThread.isTickThreadFor(sourceWorld, portalPos)) {
+            return false;
+        }
+
+        return portalTarget.endPortalLogicAsync(portalPos);
+    }
+    // Folia end - region threading
 
     @Override
     public void animateTick(BlockState state, Level level, BlockPos pos, RandomSource random) {
