mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-21 18:37:42 +01:00
Update silk touch spawners patch to use adventure
Also disables the forced italics for spawner display names and lore
This commit is contained in:
@@ -5,25 +5,28 @@ Subject: [PATCH] Silk touch spawners
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/BlockMobSpawner.java b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
diff --git a/src/main/java/net/minecraft/server/BlockMobSpawner.java b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
||||||
index 81e145ff0759322f74888c81df8d2133fece7144..91b92d95a961ba00ddd7026bb83d021bb1ac51ed 100644
|
index 81e145ff0759322f74888c81df8d2133fece7144..f9c4fe9bec9f0ca32e2de907f8705a5d627e0736 100644
|
||||||
--- a/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
--- a/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
||||||
+++ b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
+++ b/src/main/java/net/minecraft/server/BlockMobSpawner.java
|
||||||
@@ -1,5 +1,14 @@
|
@@ -1,5 +1,17 @@
|
||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
+// Purpur start
|
+// Purpur start
|
||||||
+import net.md_5.bungee.api.ChatColor;
|
+import io.papermc.paper.adventure.PaperAdventure;
|
||||||
+import net.md_5.bungee.api.chat.BaseComponent;
|
+import net.kyori.adventure.text.Component;
|
||||||
+import net.md_5.bungee.api.chat.TextComponent;
|
+import net.kyori.adventure.text.TextReplacementConfig;
|
||||||
+import net.md_5.bungee.chat.ComponentSerializer;
|
+import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
|
||||||
|
+import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||||
+
|
+
|
||||||
+import java.util.List;
|
+import java.util.List;
|
||||||
|
+
|
||||||
|
+import static net.kyori.adventure.text.format.TextDecoration.ITALIC;
|
||||||
+// Purpur end
|
+// Purpur end
|
||||||
+
|
+
|
||||||
public class BlockMobSpawner extends BlockTileEntity {
|
public class BlockMobSpawner extends BlockTileEntity {
|
||||||
|
|
||||||
protected BlockMobSpawner(BlockBase.Info blockbase_info) {
|
protected BlockMobSpawner(BlockBase.Info blockbase_info) {
|
||||||
@@ -11,6 +20,59 @@ public class BlockMobSpawner extends BlockTileEntity {
|
@@ -11,6 +23,59 @@ public class BlockMobSpawner extends BlockTileEntity {
|
||||||
return new TileEntityMobSpawner();
|
return new TileEntityMobSpawner();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,17 +36,19 @@ index 81e145ff0759322f74888c81df8d2133fece7144..91b92d95a961ba00ddd7026bb83d021b
|
|||||||
+ if (world.purpurConfig.silkTouchEnabled && entityhuman.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(world, itemstack)) {
|
+ if (world.purpurConfig.silkTouchEnabled && entityhuman.getBukkitEntity().hasPermission("purpur.drop.spawners") && isSilkTouch(world, itemstack)) {
|
||||||
+ MinecraftKey type = ((TileEntityMobSpawner) tileentity).getSpawner().getMobName();
|
+ MinecraftKey type = ((TileEntityMobSpawner) tileentity).getSpawner().getMobName();
|
||||||
+ if (type != null) {
|
+ if (type != null) {
|
||||||
+ String mobName = EntityTypes.getFromKey(type).getTranslatedName();
|
+ final Component mobName = PaperAdventure.asAdventure(EntityTypes.getFromKey(type).getNameComponent());
|
||||||
|
+ final TextReplacementConfig config = TextReplacementConfig.builder()
|
||||||
|
+ .matchLiteral("{mob}")
|
||||||
|
+ .replacement(mobName)
|
||||||
|
+ .build();
|
||||||
+
|
+
|
||||||
+ NBTTagCompound display = new NBTTagCompound();
|
+ NBTTagCompound display = new NBTTagCompound();
|
||||||
+ boolean customDisplay = false;
|
+ boolean customDisplay = false;
|
||||||
+
|
+
|
||||||
+ String name = world.purpurConfig.silkTouchSpawnerName;
|
+ String name = world.purpurConfig.silkTouchSpawnerName;
|
||||||
+ if (name != null && !name.isEmpty() && !name.equals("Spawner")) {
|
+ if (name != null && !name.isEmpty() && !name.equals("Spawner")) {
|
||||||
+ name = ChatColor.translateAlternateColorCodes('&', name
|
+ final Component displayName = LegacyComponentSerializer.legacyAmpersand().deserialize(name).replaceText(config).decoration(ITALIC, false);
|
||||||
+ .replace("{mob}", mobName));
|
+ display.set("Name", NBTTagString.create(GsonComponentSerializer.gson().serialize(displayName)));
|
||||||
+ BaseComponent[] comp = TextComponent.fromLegacyText(name);
|
|
||||||
+ display.set("Name", NBTTagString.create(ComponentSerializer.toString(comp)));
|
|
||||||
+ customDisplay = true;
|
+ customDisplay = true;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -51,10 +56,8 @@ index 81e145ff0759322f74888c81df8d2133fece7144..91b92d95a961ba00ddd7026bb83d021b
|
|||||||
+ if (lore != null && !lore.isEmpty()) {
|
+ if (lore != null && !lore.isEmpty()) {
|
||||||
+ NBTTagList list = new NBTTagList();
|
+ NBTTagList list = new NBTTagList();
|
||||||
+ for (String line : lore) {
|
+ for (String line : lore) {
|
||||||
+ line = ChatColor.translateAlternateColorCodes('&', line
|
+ final Component lineComponent = LegacyComponentSerializer.legacyAmpersand().deserialize(line).replaceText(config).decoration(ITALIC, false);
|
||||||
+ .replace("{mob}", mobName));
|
+ list.add(NBTTagString.create(GsonComponentSerializer.gson().serialize(lineComponent)));
|
||||||
+ BaseComponent[] comp = TextComponent.fromLegacyText(line);
|
|
||||||
+ list.add(NBTTagString.create(ComponentSerializer.toString(comp)));
|
|
||||||
+ }
|
+ }
|
||||||
+ display.set("Lore", list);
|
+ display.set("Lore", list);
|
||||||
+ customDisplay = true;
|
+ customDisplay = true;
|
||||||
@@ -83,7 +86,7 @@ index 81e145ff0759322f74888c81df8d2133fece7144..91b92d95a961ba00ddd7026bb83d021b
|
|||||||
@Override
|
@Override
|
||||||
public void dropNaturally(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack) {
|
public void dropNaturally(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack) {
|
||||||
super.dropNaturally(iblockdata, worldserver, blockposition, itemstack);
|
super.dropNaturally(iblockdata, worldserver, blockposition, itemstack);
|
||||||
@@ -23,6 +85,7 @@ public class BlockMobSpawner extends BlockTileEntity {
|
@@ -23,6 +88,7 @@ public class BlockMobSpawner extends BlockTileEntity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getExpDrop(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack) {
|
public int getExpDrop(IBlockData iblockdata, WorldServer worldserver, BlockPosition blockposition, ItemStack itemstack) {
|
||||||
|
|||||||
Reference in New Issue
Block a user