Prepare for updating server patches
This commit is contained in:
		
					parent
					
						
							
								cb95469f99
							
						
					
				
			
			
				commit
				
					
						ed6d43ddb0
					
				
			
		
					 1192 changed files with 248 additions and 309 deletions
				
			
		| 
						 | 
				
			
			@ -1,66 +0,0 @@
 | 
			
		|||
From 0000000000000000000000000000000000000000 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/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/world/level/Level.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
 | 
			
		||||
         try {
 | 
			
		||||
             tickConsumer.accept(entity);
 | 
			
		||||
         } catch (Throwable throwable) {
 | 
			
		||||
-            CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking entity");
 | 
			
		||||
-            CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Entity being ticked");
 | 
			
		||||
-
 | 
			
		||||
-            entity.fillCrashReportCategory(crashreportsystemdetails);
 | 
			
		||||
-            throw new ReportedException(crashreport);
 | 
			
		||||
+            // Paper start - Prevent tile entity and entity crashes
 | 
			
		||||
+            final String msg = String.format("Entity threw exception at %s:%s,%s,%s", entity.level.getWorld().getName(), entity.getX(), entity.getY(), entity.getZ());
 | 
			
		||||
+            MinecraftServer.LOGGER.error(msg, throwable);
 | 
			
		||||
+            entity.discard();
 | 
			
		||||
+            // Paper end
 | 
			
		||||
         }
 | 
			
		||||
     }
 | 
			
		||||
 
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/BlockEntity.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public abstract class BlockEntity implements net.minecraft.server.KeyedObject {
 | 
			
		||||
             return minecraftkey + " // " + this.getClass().getCanonicalName();
 | 
			
		||||
         });
 | 
			
		||||
         if (this.level != null) {
 | 
			
		||||
-            CrashReportCategory.populateBlockDetails(crashReportSection, this.level, this.worldPosition, this.getBlockState());
 | 
			
		||||
+            // Paper start - Prevent TileEntity and Entity crashes
 | 
			
		||||
+            BlockState block = this.getBlockState();
 | 
			
		||||
+            if (block != null) {
 | 
			
		||||
+                CrashReportCategory.populateBlockDetails(crashReportSection, this.level, this.worldPosition, block);
 | 
			
		||||
+            }
 | 
			
		||||
+            // Paper end
 | 
			
		||||
             CrashReportCategory.populateBlockDetails(crashReportSection, this.level, this.worldPosition, this.level.getBlockState(this.worldPosition));
 | 
			
		||||
         }
 | 
			
		||||
     }
 | 
			
		||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
 | 
			
		||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
			
		||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
 | 
			
		||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
 | 
			
		||||
@@ -0,0 +0,0 @@ public class LevelChunk implements ChunkAccess {
 | 
			
		||||
 
 | 
			
		||||
                         gameprofilerfiller.pop();
 | 
			
		||||
                     } catch (Throwable throwable) {
 | 
			
		||||
-                        CrashReport crashreport = CrashReport.forThrowable(throwable, "Ticking block entity");
 | 
			
		||||
-                        CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Block entity being ticked");
 | 
			
		||||
-
 | 
			
		||||
-                        this.blockEntity.fillCrashReportCategory(crashreportsystemdetails);
 | 
			
		||||
-                        throw new ReportedException(crashreport);
 | 
			
		||||
+                        // Paper start - Prevent tile entity and entity crashes
 | 
			
		||||
+                        final String msg = String.format("BlockEntity threw exception at %s:%s,%s,%s", LevelChunk.this.getLevel().getWorld().getName(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ());
 | 
			
		||||
+                        net.minecraft.server.MinecraftServer.LOGGER.error(msg, throwable);
 | 
			
		||||
+                        LevelChunk.this.removeBlockEntity(this.getPos());
 | 
			
		||||
+                        // Paper end
 | 
			
		||||
                         // Spigot start
 | 
			
		||||
                     } finally {
 | 
			
		||||
                         this.blockEntity.tickTimer.stopTiming();
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue