Developers!: You will need to clean up your work/Minecraft/1.13.2 folder for this Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: b850a822 SPIGOT-4526: Add conversion time API for Zombie & subclasses CraftBukkit Changes: 38cf676e SPIGOT-4534: CreatureSpawnEvent not being called for CHUNK_GEN b446cb5d SPIGOT-4527: Fix sponges with waterlogged blocks 6ec8ea5c SPIGOT-4526: Add conversion time API for Zombie & subclasses c64fe508 Mappings Update a3c2ec03 Fix missing ServerListPingEvent call for legacy pings Spigot Changes: 1dc156ce Rebuild patches 140f654d Mappings Update
67 lines
3.7 KiB
Diff
67 lines
3.7 KiB
Diff
From 207ee34b2e3af0d3f6ac16d639cccc9857bc16cf Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Tue, 1 Mar 2016 23:52:34 -0600
|
|
Subject: [PATCH] Prevent tile entity and entity crashes
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntity.java b/src/main/java/net/minecraft/server/TileEntity.java
|
|
index 68ac014aa..c5212417c 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntity.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntity.java
|
|
@@ -178,7 +178,12 @@ public abstract class TileEntity implements KeyedObject { // Paper
|
|
return IRegistry.BLOCK_ENTITY_TYPE.getKey(this.C()) + " // " + this.getClass().getCanonicalName();
|
|
});
|
|
if (this.world != null) {
|
|
- CrashReportSystemDetails.a(crashreportsystemdetails, this.position, this.getBlock());
|
|
+ // Paper start - Prevent TileEntity and Entity crashes
|
|
+ IBlockData block = this.getBlock();
|
|
+ if (block != null) {
|
|
+ CrashReportSystemDetails.a(crashreportsystemdetails, this.position, block);
|
|
+ }
|
|
+ // Paper end
|
|
CrashReportSystemDetails.a(crashreportsystemdetails, this.position, this.world.getType(this.position));
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
|
index ab74b1add..5d5a9f0bb 100644
|
|
--- a/src/main/java/net/minecraft/server/World.java
|
|
+++ b/src/main/java/net/minecraft/server/World.java
|
|
@@ -1147,10 +1147,12 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
entity.tickTimer.stopTiming(); // Paper
|
|
} catch (Throwable throwable1) {
|
|
entity.tickTimer.stopTiming();
|
|
- crashreport1 = CrashReport.a(throwable1, "Ticking entity");
|
|
- crashreportsystemdetails1 = crashreport1.a("Entity being ticked");
|
|
- entity.appendEntityCrashDetails(crashreportsystemdetails1);
|
|
- throw new ReportedException(crashreport1);
|
|
+ // Paper start - Prevent tile entity and entity crashes
|
|
+ System.err.println("Entity threw exception at " + entity.world.getWorld().getName() + ":" + entity.locX + "," + entity.locY + "," + entity.locZ);
|
|
+ throwable1.printStackTrace();
|
|
+ entity.dead = true;
|
|
+ continue;
|
|
+ // Paper end
|
|
}
|
|
}
|
|
|
|
@@ -1213,10 +1215,13 @@ public abstract class World implements IEntityAccess, GeneratorAccess, IIBlockAc
|
|
((ITickable) tileentity).tick();
|
|
this.methodProfiler.exit();
|
|
} catch (Throwable throwable2) {
|
|
- crashreport1 = CrashReport.a(throwable2, "Ticking block entity");
|
|
- crashreportsystemdetails1 = crashreport1.a("Block entity being ticked");
|
|
- tileentity.a(crashreportsystemdetails1);
|
|
- throw new ReportedException(crashreport1);
|
|
+ // Paper start - Prevent tile entity and entity crashes
|
|
+ System.err.println("TileEntity threw exception at " + tileentity.world.getWorld().getName() + ":" + tileentity.position.getX() + "," + tileentity.position.getY() + "," + tileentity.position.getZ());
|
|
+ throwable2.printStackTrace();
|
|
+ tilesThisCycle--;
|
|
+ this.tileEntityListTick.remove(tileTickPosition--);
|
|
+ continue;
|
|
+ // Paper end
|
|
}
|
|
// Spigot start
|
|
finally {
|
|
--
|
|
2.20.0
|
|
|