From 9a82fa7785843e56b8799ca2b495b0ce115d79d6 Mon Sep 17 00:00:00 2001 From: md_5 Date: Wed, 19 Jul 2017 09:56:35 +1000 Subject: [PATCH] SPIGOT-3428: Recover from invalid firework data --- .../craftbukkit/inventory/CraftMetaFirework.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java index 8bcc476e21..8a668e9e1b 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java @@ -103,7 +103,15 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta { .trail(explosion.getBoolean(EXPLOSION_TRAIL.NBT)) .with(getEffectType(0xff & explosion.getByte(EXPLOSION_TYPE.NBT))); - for (int color : explosion.getIntArray(EXPLOSION_COLORS.NBT)) { + int[] colors = explosion.getIntArray(EXPLOSION_COLORS.NBT); + // People using buggy command generators specify a list rather than an int here, so recover with dummy data. + // Wrong: Colors: [1234] + // Right: Colors: [I;1234] + if (colors.length == 0) { + effect.withColor(Color.WHITE); + } + + for (int color : colors) { effect.withColor(Color.fromRGB(color)); }