mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Drop Airplane patches
This commit is contained in:
@@ -1,147 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sun, 19 Apr 2020 00:17:56 -0500
|
||||
Subject: [PATCH] Anvil API
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/ContainerAnvil.java b/src/main/java/net/minecraft/world/inventory/ContainerAnvil.java
|
||||
index ae5674ae9c539720a657838a640050cd3b4dc5b5..1b2d633f3d5d735039f18f27fb1387bd5a74f0d8 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/ContainerAnvil.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/ContainerAnvil.java
|
||||
@@ -2,8 +2,13 @@ package net.minecraft.world.inventory;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
+
|
||||
+import net.minecraft.nbt.NBTTagInt;
|
||||
import net.minecraft.network.chat.ChatComponentText;
|
||||
import net.minecraft.network.chat.IChatBaseComponent;
|
||||
+import net.minecraft.network.protocol.game.PacketPlayOutSetSlot;
|
||||
+import net.minecraft.network.protocol.game.PacketPlayOutWindowData;
|
||||
+import net.minecraft.server.level.EntityPlayer;
|
||||
import net.minecraft.tags.Tag;
|
||||
import net.minecraft.tags.TagsBlock;
|
||||
import net.minecraft.world.entity.player.EntityHuman;
|
||||
@@ -33,6 +38,8 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
public int maximumRepairCost = 40;
|
||||
private CraftInventoryView bukkitEntity;
|
||||
// CraftBukkit end
|
||||
+ public boolean bypassCost = false; // Purpur
|
||||
+ public boolean canDoUnsafeEnchants = false; // Purpur
|
||||
|
||||
public ContainerAnvil(int i, PlayerInventory playerinventory) {
|
||||
this(i, playerinventory, ContainerAccess.a);
|
||||
@@ -51,12 +58,14 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
|
||||
@Override
|
||||
protected boolean b(EntityHuman entityhuman, boolean flag) {
|
||||
- return (entityhuman.abilities.canInstantlyBuild || entityhuman.expLevel >= this.levelCost.get()) && this.levelCost.get() > 0;
|
||||
+ return (entityhuman.abilities.canInstantlyBuild || entityhuman.expLevel >= this.levelCost.get()) && (bypassCost || this.levelCost.get() > 0); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ItemStack a(EntityHuman entityhuman, ItemStack itemstack) {
|
||||
+ if (net.pl3x.purpur.event.inventory.AnvilTakeResultEvent.getHandlerList().getRegisteredListeners().length > 0) new net.pl3x.purpur.event.inventory.AnvilTakeResultEvent(entityhuman.getBukkitEntity(), getBukkitView(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack)).callEvent(); // Purpur
|
||||
if (!entityhuman.abilities.canInstantlyBuild) {
|
||||
+ if (bypassCost) ((EntityPlayer) entityhuman).lastSentExp = -1; else // Purpur
|
||||
entityhuman.levelDown(-this.levelCost.get());
|
||||
}
|
||||
|
||||
@@ -107,6 +116,12 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
|
||||
@Override
|
||||
public void e() {
|
||||
+ // Purpur start
|
||||
+ bypassCost = false;
|
||||
+ canDoUnsafeEnchants = false;
|
||||
+ if (net.pl3x.purpur.event.inventory.AnvilUpdateResultEvent.getHandlerList().getRegisteredListeners().length > 0) new net.pl3x.purpur.event.inventory.AnvilUpdateResultEvent(getBukkitView()).callEvent();
|
||||
+ // Purpur end
|
||||
+
|
||||
ItemStack itemstack = this.repairInventory.getItem(0);
|
||||
|
||||
this.levelCost.set(1);
|
||||
@@ -183,7 +198,7 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
int i2 = (Integer) map1.get(enchantment);
|
||||
|
||||
i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1);
|
||||
- boolean flag3 = enchantment.canEnchant(itemstack);
|
||||
+ boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur
|
||||
|
||||
if (this.player.abilities.canInstantlyBuild || itemstack.getItem() == Items.ENCHANTED_BOOK) {
|
||||
flag3 = true;
|
||||
@@ -195,7 +210,7 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
Enchantment enchantment1 = (Enchantment) iterator1.next();
|
||||
|
||||
if (enchantment1 != enchantment && !enchantment.isCompatible(enchantment1)) {
|
||||
- flag3 = false;
|
||||
+ flag3 = canDoUnsafeEnchants; // Purpur
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@@ -266,6 +281,13 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
this.levelCost.set(maximumRepairCost - 1); // CraftBukkit
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (bypassCost && levelCost.get() >= maximumRepairCost) {
|
||||
+ itemstack.getOrCreateTagAndSet("Purpur.realCost", NBTTagInt.a(levelCost.get()));
|
||||
+ levelCost.set(maximumRepairCost - 1);
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
if (this.levelCost.get() >= maximumRepairCost && !this.player.abilities.canInstantlyBuild) { // CraftBukkit
|
||||
itemstack1 = ItemStack.b;
|
||||
}
|
||||
@@ -287,6 +309,12 @@ public class ContainerAnvil extends ContainerAnvilAbstract {
|
||||
|
||||
org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(getBukkitView(), itemstack1); // CraftBukkit
|
||||
this.c();
|
||||
+ // Purpur start
|
||||
+ if (canDoUnsafeEnchants && itemstack1 != ItemStack.NULL_ITEM) {
|
||||
+ ((EntityPlayer) player).playerConnection.sendPacket(new PacketPlayOutSetSlot(windowId, 2, itemstack1));
|
||||
+ ((EntityPlayer) player).playerConnection.sendPacket(new PacketPlayOutWindowData(windowId, 0, levelCost.get()));
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
index fd59f77d78a97898657919a77405b39ca24cddc9..151c478c6cb19d88000da46b6fbb952e97e58c95 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
||||
@@ -9,7 +9,7 @@ import org.bukkit.inventory.AnvilInventory;
|
||||
public class CraftInventoryAnvil extends CraftResultInventory implements AnvilInventory {
|
||||
|
||||
private final Location location;
|
||||
- private final ContainerAnvil container;
|
||||
+ public final ContainerAnvil container; // Purpur - private -> public
|
||||
|
||||
public CraftInventoryAnvil(Location location, IInventory inventory, IInventory resultInventory, ContainerAnvil container) {
|
||||
super(inventory, resultInventory);
|
||||
@@ -47,4 +47,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
||||
Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)");
|
||||
container.maximumRepairCost = levels;
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public boolean canBypassCost() {
|
||||
+ return container.bypassCost;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setBypassCost(boolean bypassCost) {
|
||||
+ container.bypassCost = bypassCost;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public boolean canDoUnsafeEnchants() {
|
||||
+ return container.canDoUnsafeEnchants;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) {
|
||||
+ container.canDoUnsafeEnchants = canDoUnsafeEnchants;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
}
|
||||
Reference in New Issue
Block a user