aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0482-Add-ignore-discounts-API.patch
diff options
context:
space:
mode:
authorBjarne Koll <[email protected]>2023-06-08 11:18:51 +0200
committerBjarne Koll <[email protected]>2023-06-08 11:18:51 +0200
commit1c1270169172e85588980eeb93dab9633b4e9af4 (patch)
treedd9c16f2a832d833af54a1450bae14fbb9c2ed26 /patches/server/0482-Add-ignore-discounts-API.patch
parentd5682d77c3651e1543a9c978e896dc90bdb77996 (diff)
downloadPaper-1c1270169172e85588980eeb93dab9633b4e9af4.tar.gz
Paper-1c1270169172e85588980eeb93dab9633b4e9af4.zip
Update fluid chunk loading patch
Diffstat (limited to 'patches/server/0482-Add-ignore-discounts-API.patch')
-rw-r--r--patches/server/0482-Add-ignore-discounts-API.patch154
1 files changed, 154 insertions, 0 deletions
diff --git a/patches/server/0482-Add-ignore-discounts-API.patch b/patches/server/0482-Add-ignore-discounts-API.patch
new file mode 100644
index 0000000000..74bbe0572c
--- /dev/null
+++ b/patches/server/0482-Add-ignore-discounts-API.patch
@@ -0,0 +1,154 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Mariell Hoversholm <[email protected]>
+Date: Mon, 9 Nov 2020 20:44:51 +0100
+Subject: [PATCH] Add ignore discounts API
+
+
+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 1e775178f346ef3d2f121e539ba81a75c8a37c36..24434b66d158b10d21579b2db6efb0bdcc788a5c 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
++++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+@@ -507,6 +507,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+
+ while (iterator.hasNext()) {
+ MerchantOffer merchantrecipe = (MerchantOffer) iterator.next();
++ if (merchantrecipe.ignoreDiscounts) continue; // Paper
+
+ merchantrecipe.addToSpecialPriceDiff(-Mth.floor((float) i * merchantrecipe.getPriceMultiplier()));
+ }
+@@ -519,6 +520,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+
+ while (iterator1.hasNext()) {
+ MerchantOffer merchantrecipe1 = (MerchantOffer) iterator1.next();
++ if (merchantrecipe1.ignoreDiscounts) continue; // Paper
+ double d0 = 0.3D + 0.0625D * (double) j;
+ int k = (int) Math.floor(d0 * (double) merchantrecipe1.getBaseCostA().getCount());
+
+diff --git a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
+index dc5908374565dd3080679779cbfe7620a4810015..28bdcb14cb5b458d3c990fcf343ef97f08e4f3c6 100644
+--- a/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
++++ b/src/main/java/net/minecraft/world/item/trading/MerchantOffer.java
+@@ -19,6 +19,7 @@ public class MerchantOffer {
+ public int demand;
+ public float priceMultiplier;
+ public int xp;
++ public boolean ignoreDiscounts; // Paper
+ // CraftBukkit start
+ private CraftMerchantRecipe bukkitHandle;
+
+@@ -31,7 +32,15 @@ public class MerchantOffer {
+ }
+
+ public MerchantOffer(ItemStack itemstack, ItemStack itemstack1, ItemStack itemstack2, int uses, int maxUses, int experience, float priceMultiplier, int demand, CraftMerchantRecipe bukkit) {
+- this(itemstack, itemstack1, itemstack2, uses, maxUses, experience, priceMultiplier, demand);
++ // Paper start - add ignoreDiscounts param
++ this(itemstack, itemstack1, itemstack2, uses, maxUses, experience, priceMultiplier, demand, false, bukkit);
++ }
++ public MerchantOffer(ItemStack itemstack, ItemStack itemstack1, ItemStack itemstack2, int uses, int maxUses, int experience, float priceMultiplier, boolean ignoreDiscounts, CraftMerchantRecipe bukkit) {
++ this(itemstack, itemstack1, itemstack2, uses, maxUses, experience, priceMultiplier, 0, ignoreDiscounts, bukkit);
++ }
++ public MerchantOffer(ItemStack itemstack, ItemStack itemstack1, ItemStack itemstack2, int uses, int maxUses, int experience, float priceMultiplier, int demand, boolean ignoreDiscounts, CraftMerchantRecipe bukkit) {
++ this(itemstack, itemstack1, itemstack2, uses, maxUses, experience, priceMultiplier, demand, ignoreDiscounts);
++ // Paper end
+ this.bukkitHandle = bukkit;
+ }
+ // CraftBukkit end
+@@ -63,6 +72,7 @@ public class MerchantOffer {
+
+ this.specialPriceDiff = nbt.getInt("specialPrice");
+ this.demand = nbt.getInt("demand");
++ this.ignoreDiscounts = nbt.getBoolean("Paper.IgnoreDiscounts"); // Paper
+ }
+
+ public MerchantOffer(ItemStack buyItem, ItemStack sellItem, int maxUses, int merchantExperience, float priceMultiplier) {
+@@ -74,10 +84,19 @@ public class MerchantOffer {
+ }
+
+ public MerchantOffer(ItemStack firstBuyItem, ItemStack secondBuyItem, ItemStack sellItem, int uses, int maxUses, int merchantExperience, float priceMultiplier) {
+- this(firstBuyItem, secondBuyItem, sellItem, uses, maxUses, merchantExperience, priceMultiplier, 0);
++ // Paper start - add ignoreDiscounts param
++ this(firstBuyItem, secondBuyItem, sellItem, uses, maxUses, merchantExperience, priceMultiplier, false);
++ }
++ public MerchantOffer(ItemStack firstBuyItem, ItemStack secondBuyItem, ItemStack sellItem, int uses, int maxUses, int merchantExperience, float priceMultiplier, boolean ignoreDiscounts) {
++ this(firstBuyItem, secondBuyItem, sellItem, uses, maxUses, merchantExperience, priceMultiplier, 0, ignoreDiscounts);
+ }
+
+ public MerchantOffer(ItemStack firstBuyItem, ItemStack secondBuyItem, ItemStack sellItem, int uses, int maxUses, int merchantExperience, float priceMultiplier, int demandBonus) {
++ this(firstBuyItem, secondBuyItem, sellItem, uses, maxUses, merchantExperience, priceMultiplier, demandBonus, false);
++ }
++ public MerchantOffer(ItemStack firstBuyItem, ItemStack secondBuyItem, ItemStack sellItem, int uses, int maxUses, int merchantExperience, float priceMultiplier, int demandBonus, boolean ignoreDiscounts) {
++ this.ignoreDiscounts = ignoreDiscounts;
++ // Paper end
+ this.rewardExp = true;
+ this.xp = 1;
+ this.baseCostA = firstBuyItem;
+@@ -195,6 +214,7 @@ public class MerchantOffer {
+ nbttagcompound.putFloat("priceMultiplier", this.priceMultiplier);
+ nbttagcompound.putInt("specialPrice", this.specialPriceDiff);
+ nbttagcompound.putInt("demand", this.demand);
++ nbttagcompound.putBoolean("Paper.IgnoreDiscounts", this.ignoreDiscounts); // Paper
+ return nbttagcompound;
+ }
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java
+index 335d65c22efc2b8fd53476e3efd6e74fce5609cf..c48f67f4202e32d9793b462609bd3b95c9765bbd 100644
+--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java
++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftMerchantRecipe.java
+@@ -18,11 +18,19 @@ public class CraftMerchantRecipe extends MerchantRecipe {
+
+ @Deprecated
+ public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward, int experience, float priceMultiplier) {
+- this(result, uses, maxUses, experienceReward, experience, priceMultiplier, 0, 0);
++ // Paper start - add ignoreDiscounts param
++ this(result, uses, maxUses, experienceReward, experience, priceMultiplier, 0, 0, false);
++ }
++ public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward, int experience, float priceMultiplier, boolean ignoreDiscounts) {
++ this(result, uses, maxUses, experienceReward, experience, priceMultiplier, 0, 0, ignoreDiscounts);
+ }
+
+ public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward, int experience, float priceMultiplier, int demand, int specialPrice) {
+- super(result, uses, maxUses, experienceReward, experience, priceMultiplier, demand, specialPrice);
++ this(result, uses, maxUses, experienceReward, experience, priceMultiplier, demand, specialPrice, false);
++ }
++ public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward, int experience, float priceMultiplier, int demand, int specialPrice, boolean ignoreDiscounts) {
++ super(result, uses, maxUses, experienceReward, experience, priceMultiplier, demand, specialPrice, ignoreDiscounts);
++ // Paper end
+ this.handle = new net.minecraft.world.item.trading.MerchantOffer(
+ net.minecraft.world.item.ItemStack.EMPTY,
+ net.minecraft.world.item.ItemStack.EMPTY,
+@@ -32,6 +40,7 @@ public class CraftMerchantRecipe extends MerchantRecipe {
+ experience,
+ priceMultiplier,
+ demand,
++ ignoreDiscounts, // Paper - add ignoreDiscounts param
+ this
+ );
+ this.setSpecialPrice(specialPrice);
+@@ -108,6 +117,18 @@ public class CraftMerchantRecipe extends MerchantRecipe {
+ handle.priceMultiplier = priceMultiplier;
+ }
+
++ // Paper start
++ @Override
++ public boolean shouldIgnoreDiscounts() {
++ return this.handle.ignoreDiscounts;
++ }
++
++ @Override
++ public void setIgnoreDiscounts(boolean ignoreDiscounts) {
++ this.handle.ignoreDiscounts = ignoreDiscounts;
++ }
++ // Paper end
++
+ public net.minecraft.world.item.trading.MerchantOffer toMinecraft() {
+ List<ItemStack> ingredients = getIngredients();
+ Preconditions.checkState(!ingredients.isEmpty(), "No offered ingredients");
+@@ -122,7 +143,7 @@ public class CraftMerchantRecipe extends MerchantRecipe {
+ if (recipe instanceof CraftMerchantRecipe) {
+ return (CraftMerchantRecipe) recipe;
+ } else {
+- CraftMerchantRecipe craft = new CraftMerchantRecipe(recipe.getResult(), recipe.getUses(), recipe.getMaxUses(), recipe.hasExperienceReward(), recipe.getVillagerExperience(), recipe.getPriceMultiplier(), recipe.getDemand(), recipe.getSpecialPrice());
++ CraftMerchantRecipe craft = new CraftMerchantRecipe(recipe.getResult(), recipe.getUses(), recipe.getMaxUses(), recipe.hasExperienceReward(), recipe.getVillagerExperience(), recipe.getPriceMultiplier(), recipe.getDemand(), recipe.getSpecialPrice(), recipe.shouldIgnoreDiscounts()); // Paper - shouldIgnoreDiscounts
+ craft.setIngredients(recipe.getIngredients());
+
+ return craft;