-
Notifications
You must be signed in to change notification settings - Fork 80
/
Copy path0063-Backport-SPIGOT-5428-Better-handling-of-some-ItemMet.patch
64 lines (58 loc) · 3.46 KB
/
0063-Backport-SPIGOT-5428-Better-handling-of-some-ItemMet.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Mathias <[email protected]>
Date: Mon, 16 Dec 2019 19:11:10 +0200
Subject: [PATCH] Backport SPIGOT-5428: Better handling of some ItemMeta
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
index 80f9ffa9bb5c1acfa52019ca5c3e261580a1e148..d6fd5bf82d9c8ef34eb4af014399ef36177991b6 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBanner.java
@@ -52,7 +52,14 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta {
NBTTagList patterns = entityTag.getList(PATTERNS.NBT, 10);
for (int i = 0; i < Math.min(patterns.size(), 20); i++) {
NBTTagCompound p = patterns.get(i);
- this.patterns.add(new Pattern(DyeColor.getByDyeData((byte) p.getInt(COLOR.NBT)), PatternType.getByIdentifier(p.getString(PATTERN.NBT))));
+ // PandaSpigot start - Backport SPIGOT-5428
+ DyeColor color = DyeColor.getByDyeData((byte) p.getInt(COLOR.NBT));
+ PatternType pattern = PatternType.getByIdentifier(p.getString(PATTERN.NBT));
+
+ if (color != null && pattern != null) {
+ this.patterns.add(new Pattern(color, pattern));
+ }
+ // PandaSpigot end
}
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java
index 6c6fde739d9d96117a33adb266c5ed14bcdd91d1..9e188d9a07edaadee42eec564889702752abfb35 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaCharge.java
@@ -36,7 +36,13 @@ class CraftMetaCharge extends CraftMetaItem implements FireworkEffectMeta {
super(tag);
if (tag.hasKey(EXPLOSION.NBT)) {
- effect = CraftMetaFirework.getEffect(tag.getCompound(EXPLOSION.NBT));
+ // PandaSpigot start - Backport SPIGOT-5428
+ try {
+ effect = CraftMetaFirework.getEffect(tag.getCompound(EXPLOSION.NBT));
+ } catch (IllegalArgumentException ex) {
+ // Ignore invalid effects
+ }
+ // PandaSpigot end
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
index 5a409aebbb483c3327c2517ba1ee1a05a8f696fa..62d43088a02f019c7b2c9607478451857080995d 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaFirework.java
@@ -92,7 +92,13 @@ class CraftMetaFirework extends CraftMetaItem implements FireworkMeta {
List<FireworkEffect> effects = this.effects = new ArrayList<FireworkEffect>(fireworkEffects.size());
for (int i = 0; i < fireworkEffects.size(); i++) {
- effects.add(getEffect((NBTTagCompound) fireworkEffects.get(i)));
+ // PandaSpigot start - Backport SPIGOT-5428
+ try {
+ effects.add(getEffect((NBTTagCompound) fireworkEffects.get(i)));
+ } catch (IllegalArgumentException ex) {
+ // Ignore invalid effects
+ }
+ // PandaSpigot end
}
}