42 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			2.4 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 | 
						|
From: Legitimoose <legitimoose@gmail.com>
 | 
						|
Date: Wed, 28 Sep 2022 22:45:49 -0700
 | 
						|
Subject: [PATCH] fix Jigsaw block kicking user
 | 
						|
 | 
						|
 | 
						|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/JigsawBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/JigsawBlockEntity.java
 | 
						|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
						|
--- a/src/main/java/net/minecraft/world/level/block/entity/JigsawBlockEntity.java
 | 
						|
+++ b/src/main/java/net/minecraft/world/level/block/entity/JigsawBlockEntity.java
 | 
						|
@@ -0,0 +0,0 @@ public class JigsawBlockEntity extends BlockEntity {
 | 
						|
     public void generate(ServerLevel world, int maxDepth, boolean keepJigsaws) {
 | 
						|
         BlockPos blockPos = this.getBlockPos().relative(this.getBlockState().getValue(JigsawBlock.ORIENTATION).front());
 | 
						|
         Registry<StructureTemplatePool> registry = world.registryAccess().registryOrThrow(Registries.TEMPLATE_POOL);
 | 
						|
-        Holder<StructureTemplatePool> holder = registry.getHolderOrThrow(this.pool);
 | 
						|
+        // Paper start - Replace getHolderOrThrow with a null check
 | 
						|
+        Holder<StructureTemplatePool> holder = registry.getHolder(this.pool).orElse(null);
 | 
						|
+        if (holder == null) {
 | 
						|
+            return;
 | 
						|
+        }
 | 
						|
+        // Paper end
 | 
						|
         JigsawPlacement.generateJigsaw(world, holder, this.target, maxDepth, blockPos, keepJigsaws);
 | 
						|
     }
 | 
						|
 
 | 
						|
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool.java b/src/main/java/net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool.java
 | 
						|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
 | 
						|
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool.java
 | 
						|
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/pools/StructureTemplatePool.java
 | 
						|
@@ -0,0 +0,0 @@ public class StructureTemplatePool {
 | 
						|
     }
 | 
						|
 
 | 
						|
     public StructurePoolElement getRandomTemplate(RandomSource random) {
 | 
						|
+        //Paper start - Prevent random.nextInt throwing an IllegalArgumentException
 | 
						|
+        if (this.templates.size() == 0) {
 | 
						|
+            return EmptyPoolElement.INSTANCE;
 | 
						|
+        } else {
 | 
						|
         return this.templates.get(random.nextInt(this.templates.size()));
 | 
						|
+        }
 | 
						|
+        // Paper end
 | 
						|
     }
 | 
						|
 
 | 
						|
     public List<StructurePoolElement> getShuffledTemplates(RandomSource random) {
 |