summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThinkofdeath <thinkofdeath@spigotmc.org>2015-04-14 10:28:18 +0100
committerThinkofdeath <thinkofdeath@spigotmc.org>2015-04-14 10:28:34 +0100
commite4ca2af9c46471723d804c7745159964f01d369a (patch)
tree9dbc501e796a6c13c5669b49a9aa1548b9287288 /src
parent815922ab1a1b3b7c373fba9f9fe56a0ebc909c45 (diff)
downloadcraftbukkit-e4ca2af9c46471723d804c7745159964f01d369a.tar
craftbukkit-e4ca2af9c46471723d804c7745159964f01d369a.tar.gz
craftbukkit-e4ca2af9c46471723d804c7745159964f01d369a.tar.lz
craftbukkit-e4ca2af9c46471723d804c7745159964f01d369a.tar.xz
craftbukkit-e4ca2af9c46471723d804c7745159964f01d369a.zip
Strip events from book pages on signing
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java34
-rw-r--r--src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java4
2 files changed, 35 insertions, 3 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index 7da317c8..10ac9590 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -28,6 +28,7 @@ import org.bukkit.craftbukkit.entity.CraftLivingEntity;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.craftbukkit.inventory.CraftInventoryCrafting;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
+import org.bukkit.craftbukkit.inventory.CraftMetaBook;
import org.bukkit.craftbukkit.util.CraftDamageSource;
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.entity.Arrow;
@@ -834,7 +835,12 @@ public class CraftEventFactory {
if (editBookEvent.isSigning()) {
itemInHand.setItem(Items.WRITTEN_BOOK);
}
- CraftItemStack.setItemMeta(itemInHand, editBookEvent.getNewBookMeta());
+ CraftMetaBook meta = (CraftMetaBook) editBookEvent.getNewBookMeta();
+ List<IChatBaseComponent> pages = meta.pages;
+ for (int i = 0; i < pages.size(); i++) {
+ pages.set(i, stripEvents(pages.get(i)));
+ }
+ CraftItemStack.setItemMeta(itemInHand, meta);
}
// Client will have updated its idea of the book item; we need to overwrite that
@@ -843,6 +849,32 @@ public class CraftEventFactory {
}
}
+ private static IChatBaseComponent stripEvents(IChatBaseComponent c) {
+ ChatModifier modi = c.getChatModifier();
+ if (modi != null) {
+ modi.setChatClickable(null);
+ modi.setChatHoverable(null);
+ }
+ c.setChatModifier(modi);
+ if (c instanceof ChatMessage) {
+ ChatMessage cm = (ChatMessage) c;
+ Object[] oo = cm.j();
+ for (int i = 0; i < oo.length; i++) {
+ Object o = oo[i];
+ if (o instanceof IChatBaseComponent) {
+ oo[i] = stripEvents((IChatBaseComponent) o);
+ }
+ }
+ }
+ List<IChatBaseComponent> ls = c.a();
+ if (ls != null) {
+ for (int i = 0; i < ls.size(); i++) {
+ ls.set(i, stripEvents(ls.get(i)));
+ }
+ }
+ return c;
+ }
+
public static PlayerUnleashEntityEvent callPlayerUnleashEntityEvent(EntityInsentient entity, EntityHuman player) {
PlayerUnleashEntityEvent event = new PlayerUnleashEntityEvent(entity.getBukkitEntity(), (Player) player.getBukkitEntity());
entity.world.getServer().getPluginManager().callEvent(event);
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
index f23decd3..03189588 100644
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMetaBook.java
@@ -23,7 +23,7 @@ import net.minecraft.server.NBTTagString;
import org.bukkit.craftbukkit.util.CraftChatMessage;
@DelegateDeserialization(SerializableMeta.class)
-class CraftMetaBook extends CraftMetaItem implements BookMeta {
+public class CraftMetaBook extends CraftMetaItem implements BookMeta {
static final ItemMetaKey BOOK_TITLE = new ItemMetaKey("title");
static final ItemMetaKey BOOK_AUTHOR = new ItemMetaKey("author");
static final ItemMetaKey BOOK_PAGES = new ItemMetaKey("pages");
@@ -34,7 +34,7 @@ class CraftMetaBook extends CraftMetaItem implements BookMeta {
protected String title;
protected String author;
- protected List<IChatBaseComponent> pages = new ArrayList<IChatBaseComponent>();
+ public List<IChatBaseComponent> pages = new ArrayList<IChatBaseComponent>();
protected Integer generation;
CraftMetaBook(CraftMetaItem meta) {