From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Legitimoose 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 3a80b0e9c0e12a84034aadebd0ff6f6b51d0d2ea..922592f2073eaea8ca361a3a1efcda8b18bea21c 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 @@ -137,7 +137,12 @@ 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 registry = world.registryAccess().registryOrThrow(Registries.TEMPLATE_POOL); - Holder holder = registry.getHolderOrThrow(this.pool); + // Paper start - Replace getHolderOrThrow with a null check + Holder holder = registry.getHolder(this.pool).orElse(null); + if (holder == null) { + return; + } + // Paper end - Replace getHolderOrThrow with a null check 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 23ac340661cf0f5940c0d6333c74a9c7b36dca26..7ba11f734bd73dde165d155a633b47dac979a8e9 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 @@ -97,7 +97,13 @@ 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 getShuffledTemplates(RandomSource random) {