diff --git a/build-data/mcdev-imports.txt b/build-data/mcdev-imports.txt index 6f0ec2fe8..103006860 100644 --- a/build-data/mcdev-imports.txt +++ b/build-data/mcdev-imports.txt @@ -2,3 +2,5 @@ # both fully qualified and a file based syntax are accepted here: # net.minecraft.world.level.entity.LevelEntityGetterAdapter # net/minecraft/world/level/entity/LevelEntityGetter.java +net.minecraft.advancements.DisplayInfo +net.minecraft.advancements.FrameType diff --git a/patches/api/0005-Advancement-API.patch b/patches/api/0005-Advancement-API.patch index 20af6e99a..ac71201f6 100644 --- a/patches/api/0005-Advancement-API.patch +++ b/patches/api/0005-Advancement-API.patch @@ -31,7 +31,7 @@ index 7c5009974ac8d64d0e738e60cec45acb0d4ca89a..432caadba1b08bb94cdb4ccf552e4240 } diff --git a/src/main/java/org/bukkit/advancement/AdvancementDisplay.java b/src/main/java/org/bukkit/advancement/AdvancementDisplay.java new file mode 100644 -index 0000000000000000000000000000000000000000..bca3d112e2397b26ba6ccb6cd41e406caae27c5c +index 0000000000000000000000000000000000000000..c2e161e8e14d9949165055b6051708c048e68338 --- /dev/null +++ b/src/main/java/org/bukkit/advancement/AdvancementDisplay.java @@ -0,0 +1,53 @@ @@ -69,15 +69,15 @@ index 0000000000000000000000000000000000000000..bca3d112e2397b26ba6ccb6cd41e406c + * + * @return True if should announce when completed + */ -+ boolean shouldAnnounceToChat(); ++ boolean shouldAnnounceChat(); + + /** + * Set if this advancement should be announced in chat when completed + * -+ * @param announce True or false ++ * @param announceChat True or false + * + */ -+ void setShouldAnnounceToChat(boolean announce); ++ void shouldAnnounceChat(boolean announceChat); + + /** + * Get if this advancement (and all it's children) is hidden from the advancement screen until it has been completed diff --git a/patches/server-unmapped/0006-Advancement-API.patch b/patches/server-unmapped/0006-Advancement-API.patch deleted file mode 100644 index 40477e4e7..000000000 --- a/patches/server-unmapped/0006-Advancement-API.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Fri, 31 May 2019 21:24:33 -0500 -Subject: [PATCH] Advancement API - - -diff --git a/src/main/java/net/minecraft/advancements/Advancement.java b/src/main/java/net/minecraft/advancements/Advancement.java -index 2f3d9e5b849093027d3c2ef434494cd600f52a31..23567430901284ab9d4d4873e53a1c8a06da6862 100644 ---- a/src/main/java/net/minecraft/advancements/Advancement.java -+++ b/src/main/java/net/minecraft/advancements/Advancement.java -@@ -78,7 +78,7 @@ public class Advancement { - - public final @Nullable AdvancementDisplay getAdvancementDisplay() { return this.c(); } // Paper - OBFHELPER - @Nullable -- public AdvancementDisplay c() { -+ public AdvancementDisplay c() { return getDisplay(); } public AdvancementDisplay getDisplay() { // Purpur - return this.display; - } - -diff --git a/src/main/java/net/minecraft/advancements/AdvancementDisplay.java b/src/main/java/net/minecraft/advancements/AdvancementDisplay.java -index adc6779e53e7b2ee04a80e2ea714e3378b8e6f39..3335c96ec15eb8d8f0b67f51846038f728f6f9fc 100644 ---- a/src/main/java/net/minecraft/advancements/AdvancementDisplay.java -+++ b/src/main/java/net/minecraft/advancements/AdvancementDisplay.java -@@ -25,10 +25,11 @@ public class AdvancementDisplay { - private final MinecraftKey d; - private final AdvancementFrameType e; - private final boolean f; -- private final boolean g; -- private final boolean h; -+ private boolean g; // Purpur - un-finalize -+ private boolean h; // Purpur - un-finalize - private float i; - private float j; -+ public final org.bukkit.advancement.AdvancementDisplay bukkit = new org.bukkit.craftbukkit.advancement.CraftAdvancementDisplay(this); // Purpur - - public AdvancementDisplay(ItemStack itemstack, IChatBaseComponent ichatbasecomponent, IChatBaseComponent ichatbasecomponent1, @Nullable MinecraftKey minecraftkey, AdvancementFrameType advancementframetype, boolean flag, boolean flag1, boolean flag2) { - this.a = ichatbasecomponent; -@@ -46,10 +47,12 @@ public class AdvancementDisplay { - this.j = f1; - } - -+ public IChatBaseComponent getTitle() { return a(); } // Purpur - OBFHELPER - public IChatBaseComponent a() { - return this.a; - } - -+ public IChatBaseComponent getDescription() { return b(); } // Purpur - OBFHELPER - public IChatBaseComponent b() { - return this.b; - } -@@ -59,11 +62,14 @@ public class AdvancementDisplay { - return this.e; - } - -+ public final void setShouldAnnounceToChat(boolean announce) { this.g = announce; } // Purpur - OBFHELPER - public final boolean shouldAnnounceToChat() { return this.i(); } // Paper - OBFHELPER - public boolean i() { - return this.g; - } - -+ public void setHidden(boolean hidden) { this.h = hidden; } // Purpur - OBFHELPER -+ public boolean isHidden() { return j(); } // Purpur - OBFHELPER - public boolean j() { - return this.h; - } -diff --git a/src/main/java/net/minecraft/advancements/AdvancementFrameType.java b/src/main/java/net/minecraft/advancements/AdvancementFrameType.java -index 32380346555e194227423999a79f1ebcbbe38d3b..173266c81be66f85db06dd28d9c9d720e21f8bc4 100644 ---- a/src/main/java/net/minecraft/advancements/AdvancementFrameType.java -+++ b/src/main/java/net/minecraft/advancements/AdvancementFrameType.java -@@ -4,16 +4,27 @@ import net.minecraft.EnumChatFormat; - import net.minecraft.network.chat.ChatMessage; - import net.minecraft.network.chat.IChatBaseComponent; - -+import org.bukkit.advancement.FrameType; // Purpur -+ - public enum AdvancementFrameType { - -- TASK("task", 0, EnumChatFormat.GREEN), CHALLENGE("challenge", 26, EnumChatFormat.DARK_PURPLE), GOAL("goal", 52, EnumChatFormat.GREEN); -+ // Purpur start -+ TASK("task", 0, EnumChatFormat.GREEN, FrameType.TASK), -+ CHALLENGE("challenge", 26, EnumChatFormat.DARK_PURPLE, FrameType.CHALLENGE), -+ GOAL("goal", 52, EnumChatFormat.GREEN, FrameType.GOAL); -+ // Purpur end - - private final String d; - private final int e; - private final EnumChatFormat f; - private final IChatBaseComponent g; - -- private AdvancementFrameType(String s, int i, EnumChatFormat enumchatformat) { -+ // Purpur start -+ public final FrameType bukkit; -+ -+ AdvancementFrameType(String s, int i, EnumChatFormat enumchatformat, FrameType bukkit) { -+ this.bukkit = bukkit; -+ // Purpur end - this.d = s; - this.e = i; - this.f = enumchatformat; -diff --git a/src/main/java/net/minecraft/advancements/CriterionTrigger.java b/src/main/java/net/minecraft/advancements/CriterionTrigger.java -index f2d74473caf96ca6e871311ef87afa128cd4d0bf..851e69a2f5155d9fa2e5652abdea9aee59e4b20a 100644 ---- a/src/main/java/net/minecraft/advancements/CriterionTrigger.java -+++ b/src/main/java/net/minecraft/advancements/CriterionTrigger.java -@@ -29,6 +29,7 @@ public interface CriterionTrigger { - this.c = s; - } - -+ public T getInstance() { return a(); } // Purpur - OBFHELPER - public T a() { - return this.a; - } -diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java -index 77abcd6de43302985cdbb2085abece4f621068d4..c859fc16c263e0c50cb01fc722b6f6723d682481 100644 ---- a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java -+++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java -@@ -27,4 +27,11 @@ public class CraftAdvancement implements org.bukkit.advancement.Advancement { - public Collection getCriteria() { - return Collections.unmodifiableCollection(handle.getCriteria().keySet()); - } -+ -+ // Purpur start -+ @Override -+ public org.bukkit.advancement.AdvancementDisplay getDisplay() { -+ return getHandle().getDisplay() == null ? null : getHandle().getDisplay().bukkit; -+ } -+ // Purpur end - } -diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0b4ff544e04ec314e78a7a48b5bf90ee699b2ad6 ---- /dev/null -+++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java -@@ -0,0 +1,47 @@ -+package org.bukkit.craftbukkit.advancement; -+ -+import net.minecraft.advancements.AdvancementDisplay; -+import org.bukkit.advancement.FrameType; -+import org.bukkit.craftbukkit.util.CraftChatMessage; -+ -+public class CraftAdvancementDisplay implements org.bukkit.advancement.AdvancementDisplay { -+ private final AdvancementDisplay handle; -+ -+ public CraftAdvancementDisplay(AdvancementDisplay handle) { -+ this.handle = handle; -+ } -+ -+ public AdvancementDisplay getHandle() { -+ return handle; -+ } -+ -+ @Override -+ public String getTitle() { -+ return CraftChatMessage.fromComponent(handle.getTitle()); -+ } -+ -+ @Override -+ public String getDescription() { -+ return CraftChatMessage.fromComponent(handle.getDescription()); -+ } -+ -+ @Override -+ public FrameType getFrameType() { -+ return handle.getFrameType().bukkit; -+ } -+ -+ @Override -+ public boolean shouldAnnounceToChat() { -+ return handle.shouldAnnounceToChat(); -+ } -+ -+ @Override -+ public void setShouldAnnounceToChat(boolean announce) { -+ handle.setShouldAnnounceToChat(announce); -+ } -+ -+ @Override -+ public boolean isHidden() { -+ return handle.isHidden(); -+ } -+} diff --git a/patches/server/0003-Timings-stuff.patch b/patches/server/0003-Timings-stuff.patch index 89b599a8d..87f1390bc 100644 --- a/patches/server/0003-Timings-stuff.patch +++ b/patches/server/0003-Timings-stuff.patch @@ -54,7 +54,7 @@ index 2ff4d4921e2076abf415bd3c8f5173ecd6222168..279cf6a1f9ee6e5ed099eedbf68ee72a String hostName = "BrokenHost"; try { diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 74fc4fc2216cf82e1546ef3d567f2750b1240df1..108be36fc37c04eece6ccb93d19e58a31326ceb0 100644 +index 74fc4fc2216cf82e1546ef3d567f2750b1240df1..6660e8ad9084b4ea0b7433eed41c63e24d93a963 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -127,4 +127,10 @@ public class PurpurConfig { @@ -65,6 +65,6 @@ index 74fc4fc2216cf82e1546ef3d567f2750b1240df1..108be36fc37c04eece6ccb93d19e58a3 + public static String timingsUrl = "https://timings.pl3x.net"; + private static void timingsSettings() { + timingsUrl = getString("settings.timings.url", timingsUrl); -+ if (!TimingsManager.hiddenConfigs.contains("server-ip")) TimingsManager.hiddenConfigs.add("server-ip"); ++ if (!co.aikar.timings.TimingsManager.hiddenConfigs.contains("server-ip")) co.aikar.timings.TimingsManager.hiddenConfigs.add("server-ip"); + } } diff --git a/patches/server-unmapped/0005-Barrels-and-enderchests-6-rows.patch b/patches/server/0004-Barrels-and-enderchests-6-rows.patch similarity index 61% rename from patches/server-unmapped/0005-Barrels-and-enderchests-6-rows.patch rename to patches/server/0004-Barrels-and-enderchests-6-rows.patch index 6ea2a518f..7d8a00e85 100644 --- a/patches/server-unmapped/0005-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0004-Barrels-and-enderchests-6-rows.patch @@ -4,6 +4,41 @@ Date: Thu, 23 May 2019 21:50:37 -0500 Subject: [PATCH] Barrels and enderchests 6 rows +diff --git a/src/main/java/net/minecraft/world/inventory/ChestMenu.java b/src/main/java/net/minecraft/world/inventory/ChestMenu.java +index 5d0ed6fb993253672b937c286f493515f2315bd6..0f2e099da820b51e41d7b2e0a4129aca8580aafc 100644 +--- a/src/main/java/net/minecraft/world/inventory/ChestMenu.java ++++ b/src/main/java/net/minecraft/world/inventory/ChestMenu.java +@@ -67,10 +67,30 @@ public class ChestMenu extends AbstractContainerMenu { + return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, 6); + } + ++ // Purpur start ++ public static ChestMenu oneRow(int syncId, Inventory playerInventory, Container inventory) { ++ return new ChestMenu(MenuType.GENERIC_9x1, syncId, playerInventory, inventory, 1); ++ } ++ ++ public static ChestMenu twoRows(int syncId, Inventory playerInventory, Container inventory) { ++ return new ChestMenu(MenuType.GENERIC_9x2, syncId, playerInventory, inventory, 2); ++ } ++ // Purpur end ++ + public static ChestMenu threeRows(int syncId, Inventory playerInventory, Container inventory) { + return new ChestMenu(MenuType.GENERIC_9x3, syncId, playerInventory, inventory, 3); + } + ++ // Purpur start ++ public static ChestMenu fourRows(int syncId, Inventory playerInventory, Container inventory) { ++ return new ChestMenu(MenuType.GENERIC_9x4, syncId, playerInventory, inventory, 4); ++ } ++ ++ public static ChestMenu fiveRows(int syncId, Inventory playerInventory, Container inventory) { ++ return new ChestMenu(MenuType.GENERIC_9x5, syncId, playerInventory, inventory, 5); ++ } ++ // Purpur end ++ + public static ChestMenu sixRows(int syncId, Inventory playerInventory, Container inventory) { + return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); + } diff --git a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c1060108708568 100644 --- a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java @@ -45,37 +80,37 @@ index 59acb1aab21e2dce0f046942f124b50ac1cb8d0f..a26cb4e4e4e23a06c970ea3c42c10601 this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index 70d10c492b6ba893d56a463c0e71ac6aa8707f81..34ea9d2aeb9d606d487be796283c9d5ed614a6af 100644 +index 7e45c97acce83a9fe8ada486e9fcdafe58769736..e3c84ad3fad4ee479bb00b7dc02a2502f2088984 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -81,6 +82,27 @@ public class EnderChestBlock extends AbstractChestBlock i - - inventoryenderchest.a(tileentityenderchest); - entityhuman.openContainer(new TileInventory((i, playerinventory, entityhuman1) -> { +@@ -86,6 +86,27 @@ public class EnderChestBlock extends AbstractChestBlock i + EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; + playerEnderChestContainer.setActiveChest(enderChestBlockEntity); + player.openMenu(new SimpleMenuProvider((syncId, inventory, playerx) -> { + // Purpur start + if (net.pl3x.purpur.PurpurConfig.enderChestSixRows) { + if (net.pl3x.purpur.PurpurConfig.enderChestPermissionRows) { -+ org.bukkit.craftbukkit.entity.CraftHumanEntity player = entityhuman.getBukkitEntity(); -+ if (player.hasPermission("purpur.enderchest.rows.six")) { -+ return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, inventoryenderchest, 6); -+ } else if (player.hasPermission("purpur.enderchest.rows.five")) { -+ return new ContainerChest(Containers.GENERIC_9X5, i, playerinventory, inventoryenderchest, 5); -+ } else if (player.hasPermission("purpur.enderchest.rows.four")) { -+ return new ContainerChest(Containers.GENERIC_9X4, i, playerinventory, inventoryenderchest, 4); -+ } else if (player.hasPermission("purpur.enderchest.rows.three")) { -+ return new ContainerChest(Containers.GENERIC_9X3, i, playerinventory, inventoryenderchest, 3); -+ } else if (player.hasPermission("purpur.enderchest.rows.two")) { -+ return new ContainerChest(Containers.GENERIC_9X2, i, playerinventory, inventoryenderchest, 2); -+ } else if (player.hasPermission("purpur.enderchest.rows.one")) { -+ return new ContainerChest(Containers.GENERIC_9X1, i, playerinventory, inventoryenderchest, 1); ++ org.bukkit.craftbukkit.entity.CraftHumanEntity bukkitPlayer = player.getBukkitEntity(); ++ if (bukkitPlayer.hasPermission("purpur.enderchest.rows.six")) { ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.five")) { ++ return ChestMenu.fiveRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.four")) { ++ return ChestMenu.fourRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.three")) { ++ return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.two")) { ++ return ChestMenu.twoRows(syncId, inventory, playerEnderChestContainer); ++ } else if (bukkitPlayer.hasPermission("purpur.enderchest.rows.one")) { ++ return ChestMenu.oneRow(syncId, inventory, playerEnderChestContainer); + } + } -+ return new ContainerChest(Containers.GENERIC_9X6, i, playerinventory, inventoryenderchest, 6); ++ return ChestMenu.sixRows(syncId, inventory, playerEnderChestContainer); + } + // Purpur end - return ContainerChest.a(i, playerinventory, inventoryenderchest); - }, BlockEnderChest.e)); - entityhuman.a(StatisticList.OPEN_ENDERCHEST); + return ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer); + }, CONTAINER_TITLE)); + player.awardStat(Stats.OPEN_ENDERCHEST); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java index f494063ead9c6303fb3ca880aba2a877ae8d83ab..3b027111ed933856ae86ad5f62aac744021f8880 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java @@ -107,20 +142,12 @@ index f494063ead9c6303fb3ca880aba2a877ae8d83ab..3b027111ed933856ae86ad5f62aac744 } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 108be36fc37c04eece6ccb93d19e58a31326ceb0..2f329bae9f09d0ed21a4538fba6b95919ec35887 100644 +index 6660e8ad9084b4ea0b7433eed41c63e24d93a963..7e0c9505427f58df767ab44f18bec66212b7dd57 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -7,6 +7,7 @@ import org.bukkit.Bukkit; - import org.bukkit.command.Command; - import org.bukkit.configuration.InvalidConfigurationException; - import org.bukkit.configuration.file.YamlConfiguration; -+import org.bukkit.event.inventory.InventoryType; - - import java.io.File; - import java.io.IOException; -@@ -133,4 +134,23 @@ public class PurpurConfig { +@@ -133,4 +133,23 @@ public class PurpurConfig { timingsUrl = getString("settings.timings.url", timingsUrl); - if (!TimingsManager.hiddenConfigs.contains("server-ip")) TimingsManager.hiddenConfigs.add("server-ip"); + if (!co.aikar.timings.TimingsManager.hiddenConfigs.contains("server-ip")) co.aikar.timings.TimingsManager.hiddenConfigs.add("server-ip"); } + + public static boolean barrelSixRows = false; @@ -136,25 +163,27 @@ index 108be36fc37c04eece6ccb93d19e58a31326ceb0..2f329bae9f09d0ed21a4538fba6b9591 + set("settings.large-ender-chests", null); + } + barrelSixRows = getBoolean("settings.blocks.barrel.six-rows", barrelSixRows); -+ InventoryType.BARREL.setDefaultSize(barrelSixRows ? 54 : 27); ++ org.bukkit.event.inventory.InventoryType.BARREL.setDefaultSize(barrelSixRows ? 54 : 27); + enderChestSixRows = getBoolean("settings.blocks.ender_chest.six-rows", enderChestSixRows); -+ InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); ++ org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); + enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); + } } diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -index 99d52dc4a3619200e8eb864e8ed8f4a6e469b443..dc8b034bbb50789d707968fa5a05434a31696a33 100644 +index 99d52dc4a3619200e8eb864e8ed8f4a6e469b443..613a0bcb4268f5d3256a871d47ae079ba5d92525 100644 --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftContainer.java -@@ -165,8 +165,10 @@ public class CraftContainer extends AbstractContainerMenu { +@@ -165,8 +165,12 @@ public class CraftContainer extends AbstractContainerMenu { case PLAYER: case CHEST: case ENDER_CHEST: -+ this.delegate = new ChestMenu(net.pl3x.purpur.PurpurConfig.enderChestSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); // Purpur -+ break; // Purpur ++ // Purpur start ++ this.delegate = new ChestMenu(net.pl3x.purpur.PurpurConfig.enderChestSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); ++ break; case BARREL: - this.delegate = new ChestMenu(MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); -+ this.delegate = new ChestMenu(net.pl3x.purpur.PurpurConfig.barrelSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); // Purpur ++ this.delegate = new ChestMenu(net.pl3x.purpur.PurpurConfig.barrelSixRows ? MenuType.GENERIC_9x6 : MenuType.GENERIC_9x3, windowId, bottom, top, top.getContainerSize() / 9); ++ // Purpur end break; case DISPENSER: case DROPPER: diff --git a/patches/server/0005-Advancement-API.patch b/patches/server/0005-Advancement-API.patch new file mode 100644 index 000000000..6f1fd1b39 --- /dev/null +++ b/patches/server/0005-Advancement-API.patch @@ -0,0 +1,142 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 31 May 2019 21:24:33 -0500 +Subject: [PATCH] Advancement API + + +diff --git a/src/main/java/net/minecraft/advancements/DisplayInfo.java b/src/main/java/net/minecraft/advancements/DisplayInfo.java +index dea17bc7a6e4db470afaaad3c98940297a50e4e4..fcce31f9d575cc7388d8ec4bc2e088c9f4781833 100644 +--- a/src/main/java/net/minecraft/advancements/DisplayInfo.java ++++ b/src/main/java/net/minecraft/advancements/DisplayInfo.java +@@ -23,10 +23,11 @@ public class DisplayInfo { + private final ResourceLocation background; + private final FrameType frame; + private final boolean showToast; +- private final boolean announceChat; +- private final boolean hidden; ++ private boolean announceChat; // Purpur - un-finalize ++ private boolean hidden; // Purpur - un-finalize + private float x; + private float y; ++ public final org.bukkit.advancement.AdvancementDisplay bukkit = new org.bukkit.craftbukkit.advancement.CraftAdvancementDisplay(this); // Purpur + + public DisplayInfo(ItemStack icon, Component title, Component description, @Nullable ResourceLocation background, FrameType frame, boolean showToast, boolean announceToChat, boolean hidden) { + this.title = title; +@@ -85,6 +86,16 @@ public class DisplayInfo { + return this.hidden; + } + ++ // Purpur start ++ public final void shouldAnnounceChat(boolean announceChat) { ++ this.announceChat = announceChat; ++ } ++ ++ public final void hidden(boolean hidden) { ++ this.hidden = hidden; ++ } ++ // Purpur end ++ + public static DisplayInfo fromJson(JsonObject obj) { + Component component = Component.Serializer.fromJson(obj.get("title")); + Component component2 = Component.Serializer.fromJson(obj.get("description")); +diff --git a/src/main/java/net/minecraft/advancements/FrameType.java b/src/main/java/net/minecraft/advancements/FrameType.java +index 2f90574158e0c742548ef2930a787821bb0ffcd3..28803f5d14e266f7cde3385e3782a7f0646eaadc 100644 +--- a/src/main/java/net/minecraft/advancements/FrameType.java ++++ b/src/main/java/net/minecraft/advancements/FrameType.java +@@ -5,16 +5,23 @@ import net.minecraft.network.chat.Component; + import net.minecraft.network.chat.TranslatableComponent; + + public enum FrameType { +- TASK("task", 0, ChatFormatting.GREEN), +- CHALLENGE("challenge", 26, ChatFormatting.DARK_PURPLE), +- GOAL("goal", 52, ChatFormatting.GREEN); ++ // Purpur start ++ TASK("task", 0, ChatFormatting.GREEN, org.bukkit.advancement.FrameType.TASK), ++ CHALLENGE("challenge", 26, ChatFormatting.DARK_PURPLE, org.bukkit.advancement.FrameType.CHALLENGE), ++ GOAL("goal", 52, ChatFormatting.GREEN, org.bukkit.advancement.FrameType.GOAL); ++ // Purpur end + + private final String name; + private final int texture; + private final ChatFormatting chatColor; + private final Component displayName; + +- private FrameType(String id, int texV, ChatFormatting titleFormat) { ++ // Purpur start ++ public final org.bukkit.advancement.FrameType bukkit; ++ ++ FrameType(String id, int texV, ChatFormatting titleFormat, org.bukkit.advancement.FrameType bukkit) { ++ this.bukkit = bukkit; ++ // Purpur end + this.name = id; + this.texture = texV; + this.chatColor = titleFormat; +diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java +index 20d51358b4b47cbf43c3d172765243e96aa1966c..5ab7896621911f56ab857e81e11816e1f36d3817 100644 +--- a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java ++++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancement.java +@@ -27,4 +27,11 @@ public class CraftAdvancement implements org.bukkit.advancement.Advancement { + public Collection getCriteria() { + return Collections.unmodifiableCollection(this.handle.getCriteria().keySet()); + } ++ ++ // Purpur start ++ @Override ++ public org.bukkit.advancement.AdvancementDisplay getDisplay() { ++ return getHandle().getDisplay() == null ? null : getHandle().getDisplay().bukkit; ++ } ++ // Purpur end + } +diff --git a/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java +new file mode 100644 +index 0000000000000000000000000000000000000000..504c815759c8a515b68b8ddbe9ba5a7941830202 +--- /dev/null ++++ b/src/main/java/org/bukkit/craftbukkit/advancement/CraftAdvancementDisplay.java +@@ -0,0 +1,47 @@ ++package org.bukkit.craftbukkit.advancement; ++ ++import net.minecraft.advancements.DisplayInfo; ++import org.bukkit.advancement.FrameType; ++import org.bukkit.craftbukkit.util.CraftChatMessage; ++ ++public class CraftAdvancementDisplay implements org.bukkit.advancement.AdvancementDisplay { ++ private final DisplayInfo handle; ++ ++ public CraftAdvancementDisplay(DisplayInfo handle) { ++ this.handle = handle; ++ } ++ ++ public DisplayInfo getHandle() { ++ return handle; ++ } ++ ++ @Override ++ public String getTitle() { ++ return CraftChatMessage.fromComponent(handle.getTitle()); ++ } ++ ++ @Override ++ public String getDescription() { ++ return CraftChatMessage.fromComponent(handle.getDescription()); ++ } ++ ++ @Override ++ public FrameType getFrameType() { ++ return handle.getFrame().bukkit; ++ } ++ ++ @Override ++ public boolean shouldAnnounceChat() { ++ return handle.shouldAnnounceChat(); ++ } ++ ++ @Override ++ public void shouldAnnounceChat(boolean announceChat) { ++ handle.shouldAnnounceChat(announceChat); ++ } ++ ++ @Override ++ public boolean isHidden() { ++ return handle.isHidden(); ++ } ++}