From b4a099c16328995b33f920e4bba92ab71c014f5c Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Wed, 19 Jul 2017 09:56:35 +1000 Subject: [PATCH] SPIGOT-3428: Recover from invalid firework data By: md_5 --- .../craftbukkit/inventory/CraftMetaFirework.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java index 8bcc476e2..8a668e9e1 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java +++ b/paper-server/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)); }