From b9d7c2457c6fcd3e5fd8611338296ad77210dc2f Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 21 Jun 2021 10:13:12 -0500 Subject: [PATCH] more progress --- build-data/dev-imports.txt | 10 +++ build-data/library-imports.txt | 7 -- build-data/mcdev-imports.txt | 4 - gradle.properties | 2 +- ...igurable-permission-message-upgrades.patch | 34 -------- ...022-LivingEntity-broadcastItemBreak.patch} | 0 ...atch => 0023-Item-entity-immunities.patch} | 0 ...t-Improve-output-of-plugins-command.patch} | 0 ...able-zombie-aggressiveness-towards-.patch} | 0 ...-to-recipe-s-ExactChoice-ingredient.patch} | 0 ...check-to-EntityDamagedByEntityEvent.patch} | 0 ...d-API.patch => 0028-Left-handed-API.patch} | 0 ...29-Alphabetize-in-game-plugins-list.patch} | 0 ...lf-API.patch => 0030-Rabid-Wolf-API.patch} | 0 ...c-warnings-missing-param-and-return.patch} | 0 ...tch => 0032-PlayerBookTooLargeEvent.patch} | 0 ...herite-armor-grants-fire-resistance.patch} | 0 ...034-Add-EntityTeleportHinderedEvent.patch} | 0 ... => 0035-Add-StructureGenerateEvent.patch} | 0 ...Add-unsafe-Entity-serialization-API.patch} | 0 ...n-change-for-adventure-deprecations.patch} | 0 ...tment-target-for-bows-and-crossbows.patch} | 0 ...> 0039-Iron-golem-poppy-calms-anger.patch} | 0 ...40-API-for-any-mob-to-burn-daylight.patch} | 0 ...atch => 0041-Flying-Fall-Damage-API.patch} | 0 .../0182-Config-for-skipping-night.patch | 39 --------- ...0183-Add-config-for-villager-trading.patch | 68 --------------- .../0184-Allow-infinity-on-crossbows.patch | 84 ------------------- .../0171-Config-for-skipping-night.patch | 39 +++++++++ ...0172-Add-config-for-villager-trading.patch | 68 +++++++++++++++ .../0173-Allow-infinity-on-crossbows.patch | 80 ++++++++++++++++++ 31 files changed, 198 insertions(+), 237 deletions(-) create mode 100644 build-data/dev-imports.txt delete mode 100644 build-data/library-imports.txt delete mode 100644 build-data/mcdev-imports.txt delete mode 100644 patches/api/0022-Configurable-permission-message-upgrades.patch rename patches/api/{0023-LivingEntity-broadcastItemBreak.patch => 0022-LivingEntity-broadcastItemBreak.patch} (100%) rename patches/api/{0024-Item-entity-immunities.patch => 0023-Item-entity-immunities.patch} (100%) rename patches/api/{0025-Spigot-Improve-output-of-plugins-command.patch => 0024-Spigot-Improve-output-of-plugins-command.patch} (100%) rename patches/api/{0026-Add-option-to-disable-zombie-aggressiveness-towards-.patch => 0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch} (100%) rename patches/api/{0027-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch => 0026-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch} (100%) rename patches/api/{0028-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch => 0027-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch} (100%) rename patches/api/{0029-Left-handed-API.patch => 0028-Left-handed-API.patch} (100%) rename patches/api/{0030-Alphabetize-in-game-plugins-list.patch => 0029-Alphabetize-in-game-plugins-list.patch} (100%) rename patches/api/{0031-Rabid-Wolf-API.patch => 0030-Rabid-Wolf-API.patch} (100%) rename patches/api/{0032-Fix-javadoc-warnings-missing-param-and-return.patch => 0031-Fix-javadoc-warnings-missing-param-and-return.patch} (100%) rename patches/api/{0033-PlayerBookTooLargeEvent.patch => 0032-PlayerBookTooLargeEvent.patch} (100%) rename patches/api/{0034-Full-netherite-armor-grants-fire-resistance.patch => 0033-Full-netherite-armor-grants-fire-resistance.patch} (100%) rename patches/api/{0035-Add-EntityTeleportHinderedEvent.patch => 0034-Add-EntityTeleportHinderedEvent.patch} (100%) rename patches/api/{0036-Add-StructureGenerateEvent.patch => 0035-Add-StructureGenerateEvent.patch} (100%) rename patches/api/{0037-Add-unsafe-Entity-serialization-API.patch => 0036-Add-unsafe-Entity-serialization-API.patch} (100%) rename patches/api/{0038-Conflict-on-change-for-adventure-deprecations.patch => 0037-Conflict-on-change-for-adventure-deprecations.patch} (100%) rename patches/api/{0039-Add-enchantment-target-for-bows-and-crossbows.patch => 0038-Add-enchantment-target-for-bows-and-crossbows.patch} (100%) rename patches/api/{0040-Iron-golem-poppy-calms-anger.patch => 0039-Iron-golem-poppy-calms-anger.patch} (100%) rename patches/api/{0041-API-for-any-mob-to-burn-daylight.patch => 0040-API-for-any-mob-to-burn-daylight.patch} (100%) rename patches/api/{0042-Flying-Fall-Damage-API.patch => 0041-Flying-Fall-Damage-API.patch} (100%) delete mode 100644 patches/server-unmapped/0182-Config-for-skipping-night.patch delete mode 100644 patches/server-unmapped/0183-Add-config-for-villager-trading.patch delete mode 100644 patches/server-unmapped/0184-Allow-infinity-on-crossbows.patch create mode 100644 patches/server/0171-Config-for-skipping-night.patch create mode 100644 patches/server/0172-Add-config-for-villager-trading.patch create mode 100644 patches/server/0173-Allow-infinity-on-crossbows.patch diff --git a/build-data/dev-imports.txt b/build-data/dev-imports.txt new file mode 100644 index 000000000..b818b96e2 --- /dev/null +++ b/build-data/dev-imports.txt @@ -0,0 +1,10 @@ +# You can use this file to import files from minecraft libraries into the project +# format: +# +# both fully qualified and a file based syntax are accepted for : +# authlib com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java +# datafixerupper com.mojang.datafixers.DataFixerBuilder +# datafixerupper com/mojang/datafixers/util/Either.java +# To import classes from the vanilla Minecraft jar use `minecraft` as the artifactId: +# minecraft net.minecraft.world.level.entity.LevelEntityGetterAdapter +# minecraft net/minecraft/world/level/entity/LevelEntityGetter.java diff --git a/build-data/library-imports.txt b/build-data/library-imports.txt deleted file mode 100644 index e6e68fdb6..000000000 --- a/build-data/library-imports.txt +++ /dev/null @@ -1,7 +0,0 @@ -# You can use this file to import files from minecraft libraries into the project -# format: -# -# both fully qualified and a file based syntax are accepted for : -# authlib com/mojang/authlib/yggdrasil/YggdrasilGameProfileRepository.java -# datafixerupper com.mojang.datafixers.DataFixerBuilder -# datafixerupper com/mojang/datafixers/util/Either.java diff --git a/build-data/mcdev-imports.txt b/build-data/mcdev-imports.txt deleted file mode 100644 index 6f0ec2fe8..000000000 --- a/build-data/mcdev-imports.txt +++ /dev/null @@ -1,4 +0,0 @@ -# You can use this file to import files from vanilla into the project -# both fully qualified and a file based syntax are accepted here: -# net.minecraft.world.level.entity.LevelEntityGetterAdapter -# net/minecraft/world/level/entity/LevelEntityGetter.java diff --git a/gradle.properties b/gradle.properties index 7395e30e8..8fcdcc1c8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=net.pl3x.purpur version=1.17-R0.1-SNAPSHOT packageVersion=1_17_R1 -paperCommit=47605b8e6035260be98c8650a736306a0a39258d +paperCommit=961b98f9cb5457a739ab61d4bb31f5867d9d4586 org.gradle.parallel=true org.gradle.jvmargs=-Xmx3G diff --git a/patches/api/0022-Configurable-permission-message-upgrades.patch b/patches/api/0022-Configurable-permission-message-upgrades.patch deleted file mode 100644 index ee34402f5..000000000 --- a/patches/api/0022-Configurable-permission-message-upgrades.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sat, 15 Aug 2020 11:18:27 -0500 -Subject: [PATCH] Configurable permission message upgrades - -This allows the configurable permission message in paper.yml to be blank and also support newlines - -diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java -index 1994f15831de1ca1bb7b4f52c23567825766d3f9..514efc8c79756a4ce7bc854586f9593af1d0180c 100644 ---- a/src/main/java/org/bukkit/command/Command.java -+++ b/src/main/java/org/bukkit/command/Command.java -@@ -184,17 +184,11 @@ public abstract class Command { - return true; - } - -- if (permissionMessage == null) { -- // Paper start -- String bukkitPermissionMessage = Bukkit.getPermissionMessage(); -- if (org.apache.commons.lang.StringUtils.isNotBlank(bukkitPermissionMessage)) { -- target.sendMessage(bukkitPermissionMessage); -- } -- // Paper end -- } else if (permissionMessage.length() != 0) { -- for (String line : permissionMessage.replace("", permission).split("\n")) { -- target.sendMessage(line); -- } -+ // Purpur start -+ String msg = this.permissionMessage != null ? this.permissionMessage : Bukkit.getPermissionMessage(); -+ for (String line : msg.replace("", permission).split("\n")) { -+ if (org.apache.commons.lang.StringUtils.isNotBlank(line)) target.sendMessage(line); -+ //Purpur end - } - - return false; diff --git a/patches/api/0023-LivingEntity-broadcastItemBreak.patch b/patches/api/0022-LivingEntity-broadcastItemBreak.patch similarity index 100% rename from patches/api/0023-LivingEntity-broadcastItemBreak.patch rename to patches/api/0022-LivingEntity-broadcastItemBreak.patch diff --git a/patches/api/0024-Item-entity-immunities.patch b/patches/api/0023-Item-entity-immunities.patch similarity index 100% rename from patches/api/0024-Item-entity-immunities.patch rename to patches/api/0023-Item-entity-immunities.patch diff --git a/patches/api/0025-Spigot-Improve-output-of-plugins-command.patch b/patches/api/0024-Spigot-Improve-output-of-plugins-command.patch similarity index 100% rename from patches/api/0025-Spigot-Improve-output-of-plugins-command.patch rename to patches/api/0024-Spigot-Improve-output-of-plugins-command.patch diff --git a/patches/api/0026-Add-option-to-disable-zombie-aggressiveness-towards-.patch b/patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch similarity index 100% rename from patches/api/0026-Add-option-to-disable-zombie-aggressiveness-towards-.patch rename to patches/api/0025-Add-option-to-disable-zombie-aggressiveness-towards-.patch diff --git a/patches/api/0027-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0026-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch similarity index 100% rename from patches/api/0027-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch rename to patches/api/0026-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0028-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/api/0027-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch similarity index 100% rename from patches/api/0028-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch rename to patches/api/0027-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch diff --git a/patches/api/0029-Left-handed-API.patch b/patches/api/0028-Left-handed-API.patch similarity index 100% rename from patches/api/0029-Left-handed-API.patch rename to patches/api/0028-Left-handed-API.patch diff --git a/patches/api/0030-Alphabetize-in-game-plugins-list.patch b/patches/api/0029-Alphabetize-in-game-plugins-list.patch similarity index 100% rename from patches/api/0030-Alphabetize-in-game-plugins-list.patch rename to patches/api/0029-Alphabetize-in-game-plugins-list.patch diff --git a/patches/api/0031-Rabid-Wolf-API.patch b/patches/api/0030-Rabid-Wolf-API.patch similarity index 100% rename from patches/api/0031-Rabid-Wolf-API.patch rename to patches/api/0030-Rabid-Wolf-API.patch diff --git a/patches/api/0032-Fix-javadoc-warnings-missing-param-and-return.patch b/patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch similarity index 100% rename from patches/api/0032-Fix-javadoc-warnings-missing-param-and-return.patch rename to patches/api/0031-Fix-javadoc-warnings-missing-param-and-return.patch diff --git a/patches/api/0033-PlayerBookTooLargeEvent.patch b/patches/api/0032-PlayerBookTooLargeEvent.patch similarity index 100% rename from patches/api/0033-PlayerBookTooLargeEvent.patch rename to patches/api/0032-PlayerBookTooLargeEvent.patch diff --git a/patches/api/0034-Full-netherite-armor-grants-fire-resistance.patch b/patches/api/0033-Full-netherite-armor-grants-fire-resistance.patch similarity index 100% rename from patches/api/0034-Full-netherite-armor-grants-fire-resistance.patch rename to patches/api/0033-Full-netherite-armor-grants-fire-resistance.patch diff --git a/patches/api/0035-Add-EntityTeleportHinderedEvent.patch b/patches/api/0034-Add-EntityTeleportHinderedEvent.patch similarity index 100% rename from patches/api/0035-Add-EntityTeleportHinderedEvent.patch rename to patches/api/0034-Add-EntityTeleportHinderedEvent.patch diff --git a/patches/api/0036-Add-StructureGenerateEvent.patch b/patches/api/0035-Add-StructureGenerateEvent.patch similarity index 100% rename from patches/api/0036-Add-StructureGenerateEvent.patch rename to patches/api/0035-Add-StructureGenerateEvent.patch diff --git a/patches/api/0037-Add-unsafe-Entity-serialization-API.patch b/patches/api/0036-Add-unsafe-Entity-serialization-API.patch similarity index 100% rename from patches/api/0037-Add-unsafe-Entity-serialization-API.patch rename to patches/api/0036-Add-unsafe-Entity-serialization-API.patch diff --git a/patches/api/0038-Conflict-on-change-for-adventure-deprecations.patch b/patches/api/0037-Conflict-on-change-for-adventure-deprecations.patch similarity index 100% rename from patches/api/0038-Conflict-on-change-for-adventure-deprecations.patch rename to patches/api/0037-Conflict-on-change-for-adventure-deprecations.patch diff --git a/patches/api/0039-Add-enchantment-target-for-bows-and-crossbows.patch b/patches/api/0038-Add-enchantment-target-for-bows-and-crossbows.patch similarity index 100% rename from patches/api/0039-Add-enchantment-target-for-bows-and-crossbows.patch rename to patches/api/0038-Add-enchantment-target-for-bows-and-crossbows.patch diff --git a/patches/api/0040-Iron-golem-poppy-calms-anger.patch b/patches/api/0039-Iron-golem-poppy-calms-anger.patch similarity index 100% rename from patches/api/0040-Iron-golem-poppy-calms-anger.patch rename to patches/api/0039-Iron-golem-poppy-calms-anger.patch diff --git a/patches/api/0041-API-for-any-mob-to-burn-daylight.patch b/patches/api/0040-API-for-any-mob-to-burn-daylight.patch similarity index 100% rename from patches/api/0041-API-for-any-mob-to-burn-daylight.patch rename to patches/api/0040-API-for-any-mob-to-burn-daylight.patch diff --git a/patches/api/0042-Flying-Fall-Damage-API.patch b/patches/api/0041-Flying-Fall-Damage-API.patch similarity index 100% rename from patches/api/0042-Flying-Fall-Damage-API.patch rename to patches/api/0041-Flying-Fall-Damage-API.patch diff --git a/patches/server-unmapped/0182-Config-for-skipping-night.patch b/patches/server-unmapped/0182-Config-for-skipping-night.patch deleted file mode 100644 index 3c915af1b..000000000 --- a/patches/server-unmapped/0182-Config-for-skipping-night.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Thu, 18 Mar 2021 06:22:40 -0400 -Subject: [PATCH] Config for skipping night - - -diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java -index 9276500e4cc2a0d2d374b3f1393410e8295b3b4d..b69e5931c7fe0cc5daf768139e78f4b477180fde 100644 ---- a/src/main/java/net/minecraft/server/level/WorldServer.java -+++ b/src/main/java/net/minecraft/server/level/WorldServer.java -@@ -572,7 +572,7 @@ public class WorldServer extends World implements GeneratorAccessSeed { - } - // CraftBukkit end - -- if (this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { -+ if (this.purpurConfig.playersSkipNight && this.everyoneSleeping && this.players.stream().noneMatch((entityplayer) -> { // Purpur - return !entityplayer.isSpectator() && !entityplayer.isDeeplySleeping() && !entityplayer.fauxSleeping && !(purpurConfig.idleTimeoutCountAsSleeping && entityplayer.isAfk()); // CraftBukkit // Purpur - })) { - // CraftBukkit start -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index bb3c5d34b58ccf9bbaa1102e36b82a56f0dda7e3..c87ce9aed539f382e91fcfae956339068a618b79 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -334,6 +334,7 @@ public class PurpurWorldConfig { - public int animalBreedingCooldownSeconds = 0; - public boolean creativeOnePunch = false; - public boolean playerSleepNearMonsters = false; -+ public boolean playersSkipNight = true; - private void miscGameplayMechanicsSettings() { - useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); - alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -354,6 +355,7 @@ public class PurpurWorldConfig { - animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); - creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); - playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); -+ playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); - } - - public boolean catSpawning; diff --git a/patches/server-unmapped/0183-Add-config-for-villager-trading.patch b/patches/server-unmapped/0183-Add-config-for-villager-trading.patch deleted file mode 100644 index e2aedf6d6..000000000 --- a/patches/server-unmapped/0183-Add-config-for-villager-trading.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Thu, 18 Mar 2021 07:23:27 -0400 -Subject: [PATCH] Add config for villager trading - - -diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java -index b36f62b38888d6eb64d46ac67c89a4189aafcfc4..66863b31687a41f84f722c611064f7ad31e02488 100644 ---- a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java -+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java -@@ -369,7 +369,7 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation - return tryRide(entityhuman, enumhand); // Purpur - } else { - if (world.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(entityhuman, enumhand); // Purpur -- if (!this.world.isClientSide && !this.trades.isEmpty()) { -+ if (!this.world.isClientSide && this.world.purpurConfig.villagerAllowTrading && !this.trades.isEmpty()) { // Purpur - this.h(entityhuman); - } - -diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java -index f6e0a92037d22de102c42cc1953ea90919bd3a34..03e811e854034c6ca9cd11d35ed0a2dbd14c6097 100644 ---- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java -+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerTrader.java -@@ -146,7 +146,7 @@ public class EntityVillagerTrader extends EntityVillagerAbstract { - return tryRide(entityhuman, enumhand); // Purpur - } else { - if (world.purpurConfig.villagerTraderRidable && itemstack.isEmpty()) return tryRide(entityhuman, enumhand); // Purpur -- if (!this.world.isClientSide) { -+ if (!this.world.isClientSide && this.world.purpurConfig.villagerTraderAllowTrading) { - this.setTradingPlayer(entityhuman); - this.openTrade(entityhuman, this.getScoreboardDisplayName(), 1); - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c87ce9aed539f382e91fcfae956339068a618b79..c2314380e7064459dd104b09b900c5a28b592b71 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1772,6 +1772,7 @@ public class PurpurWorldConfig { - public boolean villagerClericsFarmWarts = false; - public boolean villagerClericFarmersThrowWarts = true; - public double villagerMaxHealth = 20.0D; -+ public boolean villagerAllowTrading = true; - private void villagerSettings() { - villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); - villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -1799,6 +1800,7 @@ public class PurpurWorldConfig { - set("mobs.villager.attributes.max_health", oldValue); - } - villagerMaxHealth = getDouble("mobs.villager.attributes.max_health", villagerMaxHealth); -+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); - } - - public boolean villagerTraderRidable = false; -@@ -1806,6 +1808,7 @@ public class PurpurWorldConfig { - public boolean villagerTraderCanBeLeashed = false; - public boolean villagerTraderFollowEmeraldBlock = false; - public double villagerTraderMaxHealth = 20.0D; -+ public boolean villagerTraderAllowTrading = true; - private void villagerTraderSettings() { - villagerTraderRidable = getBoolean("mobs.wandering_trader.ridable", villagerTraderRidable); - villagerTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", villagerTraderRidableInWater); -@@ -1817,6 +1820,7 @@ public class PurpurWorldConfig { - set("mobs.wandering_trader.attributes.max_health", oldValue); - } - villagerTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", villagerTraderMaxHealth); -+ villagerTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", villagerTraderAllowTrading); - } - - public boolean vindicatorRidable = false; diff --git a/patches/server-unmapped/0184-Allow-infinity-on-crossbows.patch b/patches/server-unmapped/0184-Allow-infinity-on-crossbows.patch deleted file mode 100644 index 2887161e6..000000000 --- a/patches/server-unmapped/0184-Allow-infinity-on-crossbows.patch +++ /dev/null @@ -1,84 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Thu, 18 Mar 2021 12:25:29 -0400 -Subject: [PATCH] Allow infinity on crossbows - - -diff --git a/src/main/java/net/minecraft/world/item/ItemCrossbow.java b/src/main/java/net/minecraft/world/item/ItemCrossbow.java -index 4e1e819c8535e8a6b9aa5f76afe568ea171b939f..9cf76f8297c2a44c1df8ce2c4f0813802883a18b 100644 ---- a/src/main/java/net/minecraft/world/item/ItemCrossbow.java -+++ b/src/main/java/net/minecraft/world/item/ItemCrossbow.java -@@ -94,7 +94,7 @@ public class ItemCrossbow extends ItemProjectileWeapon implements ItemVanishable - private static boolean a(EntityLiving entityliving, ItemStack itemstack, boolean consume) { // Paper - add consume - int i = EnchantmentManager.getEnchantmentLevel(Enchantments.MULTISHOT, itemstack); - int j = i == 0 ? 1 : 3; -- boolean flag = !consume || entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild; // Paper - add consme -+ boolean flag = !consume || entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentManager.getEnchantmentLevel(Enchantments.ARROW_INFINITE, itemstack) > 0); // Paper - add consme // Purpur - ItemStack itemstack1 = entityliving.f(itemstack); - ItemStack itemstack2 = itemstack1.cloneItemStack(); - -@@ -285,7 +285,7 @@ public class ItemCrossbow extends ItemProjectileWeapon implements ItemVanishable - - for (int i = 0; i < list.size(); ++i) { - ItemStack itemstack1 = (ItemStack) list.get(i); -- boolean flag = entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild; -+ boolean flag = entityliving instanceof EntityHuman && ((EntityHuman) entityliving).abilities.canInstantlyBuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentManager.getEnchantmentLevel(Enchantments.ARROW_INFINITE, itemstack) > 0); // Purpur - - if (!itemstack1.isEmpty()) { - if (i == 0) { -diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java -index 29bebbccf8dd6ff8976d1bfdb4c2ddcfc9de57dc..07980bf0735aab4aaa379b68d6d9b1dc494a0bab 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentInfiniteArrows.java -@@ -5,7 +5,7 @@ import net.minecraft.world.entity.EnumItemSlot; - public class EnchantmentInfiniteArrows extends Enchantment { - - public EnchantmentInfiniteArrows(Enchantment.Rarity enchantment_rarity, EnumItemSlot... aenumitemslot) { -- super(enchantment_rarity, EnchantmentSlotType.BOW, aenumitemslot); -+ super(enchantment_rarity, net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentSlotType.BOW_AND_CROSSBOW : EnchantmentSlotType.BOW, aenumitemslot); // Purpur - } - - @Override -diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java -index cf41863bc8b0be9f2a73ca2dd02a4d414d4f230e..2b75432d74df4f627d08d32c6553bd1a4ecd4a3d 100644 ---- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java -+++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentSlotType.java -@@ -96,9 +96,17 @@ public enum EnchantmentSlotType { - VANISHABLE { - @Override - public boolean canEnchant(Item item) { -- return item instanceof ItemVanishable || Block.asBlock(item) instanceof ItemVanishable || null.BREAKABLE.canEnchant(item); -+ return item instanceof ItemVanishable || Block.asBlock(item) instanceof ItemVanishable || BREAKABLE.canEnchant(item); // Purpur - decompile fix -+ } -+ // Purpur start -+ }, -+ BOW_AND_CROSSBOW { -+ @Override -+ public boolean canEnchant(Item item) { -+ return item instanceof ItemBow || item instanceof ItemCrossbow; - } - }; -+ // Purpur end - - private EnchantmentSlotType() {} - -diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 36cfcd57fa3c3d33d46be5e3f70f4cf9a84f8b77..b44f82517e1e6e1f77144e50716dfb887bf26f70 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java -@@ -231,6 +231,7 @@ public class PurpurConfig { - } - - public static boolean allowInfinityMending = false; -+ public static boolean allowCrossbowInfinity = false; - private static void enchantmentSettings() { - if (version < 5) { - boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); -@@ -238,6 +239,7 @@ public class PurpurConfig { - set("settings.enchantment.allow-infinite-and-mending-together", null); - } - allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); -+ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); - } - - public static boolean endermanShortHeight = false; diff --git a/patches/server/0171-Config-for-skipping-night.patch b/patches/server/0171-Config-for-skipping-night.patch new file mode 100644 index 000000000..7cb523f20 --- /dev/null +++ b/patches/server/0171-Config-for-skipping-night.patch @@ -0,0 +1,39 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Kerllenevich +Date: Thu, 18 Mar 2021 06:22:40 -0400 +Subject: [PATCH] Config for skipping night + + +diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java +index 97697f2ee49ef1f3b0bfb291b1df99f5681992af..16f5ef16971e2535f5001929925267a08955edb4 100644 +--- a/src/main/java/net/minecraft/server/level/ServerLevel.java ++++ b/src/main/java/net/minecraft/server/level/ServerLevel.java +@@ -580,7 +580,7 @@ public class ServerLevel extends net.minecraft.world.level.Level implements Worl + // CraftBukkit end + + i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); +- if (this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) { ++ if (this.purpurConfig.playersSkipNight && this.sleepStatus.areEnoughSleeping(i) && this.sleepStatus.areEnoughDeepSleeping(i, this.players)) { + // CraftBukkit start + long l = this.levelData.getDayTime() + 24000L; + TimeSkipEvent event = new TimeSkipEvent(this.getWorld(), TimeSkipEvent.SkipReason.NIGHT_SKIP, (l - l % 24000L) - this.getDayTime()); +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index c54fd7f6fce56809ed7cd079ad5e106cad9d909a..b32e285c77ce7d67583339941487a522dbe566dd 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -297,6 +297,7 @@ public class PurpurWorldConfig { + public boolean playerFixStuckPortal = false; + public boolean creativeOnePunch = false; + public boolean playerSleepNearMonsters = false; ++ public boolean playersSkipNight = true; + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); +@@ -311,6 +312,7 @@ public class PurpurWorldConfig { + playerFixStuckPortal = getBoolean("gameplay-mechanics.player.fix-stuck-in-portal", playerFixStuckPortal); + creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); + playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); ++ playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); + } + + public int snowballDamage = -1; diff --git a/patches/server/0172-Add-config-for-villager-trading.patch b/patches/server/0172-Add-config-for-villager-trading.patch new file mode 100644 index 000000000..27644c342 --- /dev/null +++ b/patches/server/0172-Add-config-for-villager-trading.patch @@ -0,0 +1,68 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Kerllenevich +Date: Thu, 18 Mar 2021 07:23:27 -0400 +Subject: [PATCH] Add config for villager trading + + +diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java +index 3b404c12ba12d75caaeb2161eb18abaf3c14ae57..65124562a96e1e1e601b790db7a5c5e128c75e5e 100644 +--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java ++++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java +@@ -375,7 +375,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler + return tryRide(player, hand); // Purpur + } else { + if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur +- if (!this.level.isClientSide && !this.offers.isEmpty()) { ++ if (this.level.purpurConfig.villagerAllowTrading && !this.offers.isEmpty()) { // Purpur + this.startTrading(player); + } + +diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +index c48935d35a6141c41db22e3ec172d5994fd317a2..fa4644c11cbb252734a6f5dc21c861d2c7309ffd 100644 +--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java ++++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +@@ -140,7 +140,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill + return tryRide(player, hand); // Purpur + } else { + if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur +- if (!this.level.isClientSide) { ++ if (this.level.purpurConfig.wanderingTraderAllowTrading) { // Purpur + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); + } +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index b32e285c77ce7d67583339941487a522dbe566dd..8aa27111a1c0e3c70f69b303f00a9c25e321ef12 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -1801,6 +1801,7 @@ public class PurpurWorldConfig { + public boolean villagerClericsFarmWarts = false; + public boolean villagerClericFarmersThrowWarts = true; + public boolean villagerBypassMobGriefing = false; ++ public boolean villagerAllowTrading = true; + private void villagerSettings() { + villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); + villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); +@@ -1828,6 +1829,7 @@ public class PurpurWorldConfig { + villagerClericsFarmWarts = getBoolean("mobs.villager.clerics-farm-warts", villagerClericsFarmWarts); + villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); + villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); ++ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); + } + + public boolean vindicatorRidable = false; +@@ -1851,6 +1853,7 @@ public class PurpurWorldConfig { + public double wanderingTraderMaxHealth = 20.0D; + public boolean wanderingTraderFollowEmeraldBlock = false; + public boolean wanderingTraderCanBeLeashed = false; ++ public boolean wanderingTraderAllowTrading = true; + private void wanderingTraderSettings() { + wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); + wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); +@@ -1862,6 +1865,7 @@ public class PurpurWorldConfig { + wanderingTraderMaxHealth = getDouble("mobs.wandering_trader.attributes.max_health", wanderingTraderMaxHealth); + wanderingTraderFollowEmeraldBlock = getBoolean("mobs.wandering_trader.follow-emerald-blocks", wanderingTraderFollowEmeraldBlock); + wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); ++ wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); + } + + public boolean witchRidable = false; diff --git a/patches/server/0173-Allow-infinity-on-crossbows.patch b/patches/server/0173-Allow-infinity-on-crossbows.patch new file mode 100644 index 000000000..17dd39c7a --- /dev/null +++ b/patches/server/0173-Allow-infinity-on-crossbows.patch @@ -0,0 +1,80 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Ben Kerllenevich +Date: Thu, 18 Mar 2021 12:25:29 -0400 +Subject: [PATCH] Allow infinity on crossbows + + +diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java +index 77562d7c7248835532f2d9582cce6ef6725a12a6..264542304babba94e364811da8d7b51b812a2b47 100644 +--- a/src/main/java/net/minecraft/world/item/CrossbowItem.java ++++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java +@@ -111,7 +111,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { + // Paper end + int i = EnchantmentHelper.getItemEnchantmentLevel(Enchantments.MULTISHOT, projectile); + int j = i == 0 ? 1 : 3; +- boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild; // Paper - add consume ++ boolean flag = !consume || shooter instanceof Player && ((Player) shooter).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, projectile) > 0); // Paper - add consume // Purpur + ItemStack itemstack1 = shooter.getProjectile(projectile); + ItemStack itemstack2 = itemstack1.copy(); + +@@ -302,7 +302,7 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { + + for (int i = 0; i < list.size(); ++i) { + ItemStack itemstack1 = (ItemStack) list.get(i); +- boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild; ++ boolean flag = entity instanceof Player && ((Player) entity).getAbilities().instabuild || (net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, stack) > 0); // Purpur + + if (!itemstack1.isEmpty()) { + if (i == 0) { +diff --git a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +index 6763d0b96c83d1b462999f525bf1f31c30cf705f..bfd7b1d1965cf9da5234c7835affa4e97a6e4bb0 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/ArrowInfiniteEnchantment.java +@@ -4,7 +4,7 @@ import net.minecraft.world.entity.EquipmentSlot; + + public class ArrowInfiniteEnchantment extends Enchantment { + public ArrowInfiniteEnchantment(Enchantment.Rarity weight, EquipmentSlot... slotTypes) { +- super(weight, EnchantmentCategory.BOW, slotTypes); ++ super(weight, net.pl3x.purpur.PurpurConfig.allowCrossbowInfinity ? EnchantmentCategory.BOW_AND_CROSSBOW : EnchantmentCategory.BOW, slotTypes); // Purpur + } + + @Override +diff --git a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java +index 6f6106ca4d74d50a7b74b086adc96c58c7906cb6..d6417c1e77ac8823e18a179dc9f61757a1f339ad 100644 +--- a/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java ++++ b/src/main/java/net/minecraft/world/item/enchantment/EnchantmentCategory.java +@@ -97,6 +97,14 @@ public enum EnchantmentCategory { + public boolean canEnchant(Item item) { + return item instanceof Vanishable || Block.byItem(item) instanceof Vanishable || BREAKABLE.canEnchant(item); + } ++ // Purpur start ++ }, ++ BOW_AND_CROSSBOW { ++ @Override ++ public boolean canEnchant(Item item) { ++ return item instanceof BowItem || item instanceof CrossbowItem; ++ } ++ // Purpur end + }; + + public abstract boolean canEnchant(Item item); +diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java +index 45dd23971204a7a04aca9c271643cada98add9fb..6c5ab2a340abc255f39a48e4cf21459d10f38ee8 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java +@@ -206,6 +206,7 @@ public class PurpurConfig { + } + + public static boolean allowInfinityMending = false; ++ public static boolean allowCrossbowInfinity = false; + private static void enchantmentSettings() { + if (version < 5) { + boolean oldValue = getBoolean("settings.enchantment.allow-infinite-and-mending-together", false); +@@ -213,6 +214,7 @@ public class PurpurConfig { + set("settings.enchantment.allow-infinite-and-mending-together", null); + } + allowInfinityMending = getBoolean("settings.enchantment.allow-infinity-and-mending-together", allowInfinityMending); ++ allowCrossbowInfinity = getBoolean("settings.enchantment.allow-infinity-on-crossbow", allowCrossbowInfinity); + } + + public static boolean endermanShortHeight = false;