From 43eb8f312cdeb7ba8016d17cd6184e6b8aae1ba2 Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Mon, 16 Jul 2018 09:01:23 +1000
Subject: [PATCH] SPIGOT-4011: Clear error for plugin misusing ChunkData

---
 .../bukkit/craftbukkit/generator/CustomChunkGenerator.java  | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
index 4280be5ae7..774a5e3443 100644
--- a/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
+++ b/src/main/java/org/bukkit/craftbukkit/generator/CustomChunkGenerator.java
@@ -1,5 +1,6 @@
 package org.bukkit.craftbukkit.generator;
 
+import com.google.common.base.Preconditions;
 import com.google.common.collect.Maps;
 import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
 import it.unimi.dsi.fastutil.longs.Long2ObjectMaps;
@@ -57,8 +58,9 @@ public class CustomChunkGenerator extends InternalChunkGenerator<GeneratorSettin
         CustomBiomeGrid biomegrid = new CustomBiomeGrid();
         biomegrid.biome = chunkManager.getBiomeBlock(x << 4, z << 4, 16, 16);
 
-        CraftChunkData data = (CraftChunkData) generator.generateChunkData(this.world.getWorld(), random, x, z, biomegrid);
-        ChunkSection[] sections = data.getRawChunkData();
+        ChunkData data = generator.generateChunkData(this.world.getWorld(), random, x, z, biomegrid);
+        Preconditions.checkArgument(data instanceof CraftChunkData, "Plugins must use createChunkData(World) rather than implementing ChunkData: %s", data);
+        ChunkSection[] sections = ((CraftChunkData) data).getRawChunkData();
 
         ChunkSection[] csect = ichunkaccess.getSections();
         int scnt = Math.min(csect.length, sections.length);