|
|
|
@@ -8,7 +8,7 @@ TODO - Dreeam: Check Fix-pufferfish-issues.patch
|
|
|
|
Original license: MIT
|
|
|
|
Original license: MIT
|
|
|
|
Original project: https://github.com/PurpurMC/Purpur
|
|
|
|
Original project: https://github.com/PurpurMC/Purpur
|
|
|
|
|
|
|
|
|
|
|
|
Commit: 930003b1d1826c083f3cee4db79621e6a7d726f1
|
|
|
|
Commit: 4e55e26f4dcd046f68c977b6348ad3ae265aa896
|
|
|
|
|
|
|
|
|
|
|
|
Patches below are removed in this patch:
|
|
|
|
Patches below are removed in this patch:
|
|
|
|
Brand changes in Rebrand.patch
|
|
|
|
Brand changes in Rebrand.patch
|
|
|
|
@@ -2529,7 +2529,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..b69d924fa8034eabbf4aab8d3434f4f4
|
|
|
|
protected ParticleOptions getInkParticle() {
|
|
|
|
protected ParticleOptions getInkParticle() {
|
|
|
|
return ParticleTypes.GLOW_SQUID_INK;
|
|
|
|
return ParticleTypes.GLOW_SQUID_INK;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
index da8c5d45f50091946309afa4130f410e40c69a50..65d475803716ea30453ec2397403581def8939fb 100644
|
|
|
|
index 8191eda135b71d0515c918e88b35aaeec21c59de..cb2d6bb3ab2d07dc0756591be0be76a3f6f8a5d6 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
|
|
|
@@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
|
|
@@ -236,9 +236,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
|
|
|
@@ -12628,10 +12628,10 @@ index 8575941fd238750c5d56843989a48bcbde2d8a88..b4ed2df8d0795409808df0205edce6da
|
|
|
|
protected double getDefaultGravity() {
|
|
|
|
protected double getDefaultGravity() {
|
|
|
|
return 0.06D;
|
|
|
|
return 0.06D;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
index 3e4f72012f07863b6dfc14a36d07b66c4641c560..85983dd81dbc9f2d187a224298b56613dab18f8a 100644
|
|
|
|
index e312002f8afc6b77d9923381169cfe498206f5a0..617043b24fbf073038ffc5252da75c4cfaf85d38 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
|
|
|
@@ -400,7 +400,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
|
|
|
@@ -406,7 +406,7 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
|
|
|
public boolean mayInteract(Level world, BlockPos pos) {
|
|
|
|
public boolean mayInteract(Level world, BlockPos pos) {
|
|
|
|
Entity entity = this.getOwner();
|
|
|
|
Entity entity = this.getOwner();
|
|
|
|
|
|
|
|
|
|
|
|
@@ -12996,7 +12996,7 @@ index 32910f677b0522ac8ec513fa0d00b714b52cfae4..c491291b522aebf34c7d990d2b485d1a
|
|
|
|
// CraftBukkit start
|
|
|
|
// CraftBukkit start
|
|
|
|
public boolean checkReachable = true;
|
|
|
|
public boolean checkReachable = true;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
index 6474b6063992d2c643c21187663de499f37b32d6..c374962128a37307093218a9ec46386cc860c376 100644
|
|
|
|
index 58a5338e73aedaa3744dced128ac3eb6f5f6f87e..f032a3e76e2af3ebd67d202066f3bcac8e52d29e 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AbstractFurnaceMenu.java
|
|
|
|
@@ -147,7 +147,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu<SingleRecipeInp
|
|
|
|
@@ -147,7 +147,13 @@ public abstract class AbstractFurnaceMenu extends RecipeBookMenu<SingleRecipeInp
|
|
|
|
@@ -13015,11 +13015,11 @@ index 6474b6063992d2c643c21187663de499f37b32d6..c374962128a37307093218a9ec46386c
|
|
|
|
} else if (this.isFuel(itemstack1)) {
|
|
|
|
} else if (this.isFuel(itemstack1)) {
|
|
|
|
if (!this.moveItemStackTo(itemstack1, 1, 2, false)) {
|
|
|
|
if (!this.moveItemStackTo(itemstack1, 1, 2, false)) {
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..60260bcb568613b4a076385e9329a06f3e0fb885 100644
|
|
|
|
index d685511104ac552dfc9ae2111e1bfb60fa812102..eaef4f26901c9db4b24b003e2c90161e8ea53f9e 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java
|
|
|
|
@@ -25,6 +25,12 @@ import org.slf4j.Logger;
|
|
|
|
@@ -25,6 +25,12 @@ import org.slf4j.Logger;
|
|
|
|
import org.bukkit.craftbukkit.inventory.CraftInventoryView;
|
|
|
|
import org.bukkit.craftbukkit.inventory.view.CraftAnvilView;
|
|
|
|
// CraftBukkit end
|
|
|
|
// CraftBukkit end
|
|
|
|
|
|
|
|
|
|
|
|
+// Purpur start - Anvil API
|
|
|
|
+// Purpur start - Anvil API
|
|
|
|
@@ -13033,7 +13033,7 @@ index 7198dc9ffc9a37dab3654e12aa497c442a9993c5..60260bcb568613b4a076385e9329a06f
|
|
|
|
public static final int INPUT_SLOT = 0;
|
|
|
|
public static final int INPUT_SLOT = 0;
|
|
|
|
@@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu {
|
|
|
|
@@ -53,6 +59,10 @@ public class AnvilMenu extends ItemCombinerMenu {
|
|
|
|
public int maximumRepairCost = 40;
|
|
|
|
public int maximumRepairCost = 40;
|
|
|
|
private CraftInventoryView bukkitEntity;
|
|
|
|
private CraftAnvilView bukkitEntity;
|
|
|
|
// CraftBukkit end
|
|
|
|
// CraftBukkit end
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
+ public boolean bypassCost = false;
|
|
|
|
+ public boolean bypassCost = false;
|
|
|
|
@@ -13261,10 +13261,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216
|
|
|
|
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6);
|
|
|
|
return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc3da7121c 100644
|
|
|
|
index 1ef014b29645ed09ccffb898f1819428c3dc6259..859deb56915dba0e9189103708060cafd196c58e 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/inventory/EnchantmentMenu.java
|
|
|
|
@@ -45,6 +45,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
|
|
|
|
@@ -42,6 +42,12 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
// CraftBukkit end
|
|
|
|
// CraftBukkit end
|
|
|
|
|
|
|
|
|
|
|
|
@@ -13277,7 +13277,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc
|
|
|
|
public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
|
|
|
|
|
|
|
|
static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = ResourceLocation.withDefaultNamespace("item/empty_slot_lapis_lazuli");
|
|
|
|
static final ResourceLocation EMPTY_SLOT_LAPIS_LAZULI = ResourceLocation.withDefaultNamespace("item/empty_slot_lapis_lazuli");
|
|
|
|
@@ -79,6 +85,22 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
@@ -76,6 +82,22 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
return context.getLocation();
|
|
|
|
return context.getLocation();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// CraftBukkit end
|
|
|
|
// CraftBukkit end
|
|
|
|
@@ -13300,7 +13300,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc
|
|
|
|
};
|
|
|
|
};
|
|
|
|
this.random = RandomSource.create();
|
|
|
|
this.random = RandomSource.create();
|
|
|
|
this.enchantmentSeed = DataSlot.standalone();
|
|
|
|
this.enchantmentSeed = DataSlot.standalone();
|
|
|
|
@@ -104,6 +126,17 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
@@ -101,6 +123,17 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@@ -13318,7 +13318,7 @@ index 07223046761cb2186d75de8edc03a91d2e8e8b2f..4e5d497b966a04d42b988d26039cbbcc
|
|
|
|
int j;
|
|
|
|
int j;
|
|
|
|
|
|
|
|
|
|
|
|
for (j = 0; j < 3; ++j) {
|
|
|
|
for (j = 0; j < 3; ++j) {
|
|
|
|
@@ -344,6 +377,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
@@ -341,6 +374,7 @@ public class EnchantmentMenu extends AbstractContainerMenu {
|
|
|
|
public void removed(net.minecraft.world.entity.player.Player player) {
|
|
|
|
public void removed(net.minecraft.world.entity.player.Player player) {
|
|
|
|
super.removed(player);
|
|
|
|
super.removed(player);
|
|
|
|
this.access.execute((world, blockposition) -> {
|
|
|
|
this.access.execute((world, blockposition) -> {
|
|
|
|
@@ -13881,7 +13881,7 @@ index 06497b5141e611cc7a1b6030a7b9c54b5c4eda06..28df1b3230762e52b5458ac93a85c9a5
|
|
|
|
return InteractionResult.PASS;
|
|
|
|
return InteractionResult.PASS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/item/ItemStack.java b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
index fd939864da9f79c56c8cbfa3c521e2d12e6e33cd..cbb97a6f3d8b003e4b90431bbe4ac4c633d50203 100644
|
|
|
|
index 804297a04988b3e21092a42df6584b7fc3cff1bb..b341ce21de28b2ee829dcba64b7dd6952fc1c17d 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/item/ItemStack.java
|
|
|
|
@@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder {
|
|
|
|
@@ -497,6 +497,7 @@ public final class ItemStack implements DataComponentHolder {
|
|
|
|
@@ -13894,7 +13894,7 @@ index fd939864da9f79c56c8cbfa3c521e2d12e6e33cd..cbb97a6f3d8b003e4b90431bbe4ac4c6
|
|
|
|
world.preventPoiUpdated = false;
|
|
|
|
world.preventPoiUpdated = false;
|
|
|
|
@@ -529,6 +530,7 @@ public final class ItemStack implements DataComponentHolder {
|
|
|
|
@@ -529,6 +530,7 @@ public final class ItemStack implements DataComponentHolder {
|
|
|
|
if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically
|
|
|
|
if (!(block.getBlock() instanceof BaseEntityBlock)) { // Containers get placed automatically
|
|
|
|
block.onPlace(world, newblockposition, oldBlock, true, context); // Paper - pass context
|
|
|
|
block.onPlace(world, newblockposition, oldBlock, true, context);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+ block.getBlock().forgetPlacer(); // Purpur
|
|
|
|
+ block.getBlock().forgetPlacer(); // Purpur
|
|
|
|
|
|
|
|
|
|
|
|
@@ -14333,7 +14333,7 @@ index 141b748abe80402731cdaf14a3d36aa7cef4f4bd..d5d2a6467b48bcf8e5322dd5938f6e4f
|
|
|
|
if (range < 0.0 || d < range * range) {
|
|
|
|
if (range < 0.0 || d < range * range) {
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
index 0c9c75e3c094e22aad926977545d2ae7075e33ad..ff36324eb2d34ca414d7b7f3a91a9ef52eaf10d0 100644
|
|
|
|
index e895eb8049268560031e8483635668aa3f83dbe0..23e3d75286b98f23816417b48bb1fbe6be68b6bd 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/Explosion.java
|
|
|
|
@@ -340,7 +340,7 @@ public class Explosion {
|
|
|
|
@@ -340,7 +340,7 @@ public class Explosion {
|
|
|
|
@@ -16401,10 +16401,10 @@ index 205e223c356634bd6bc6bd58c6f0b7fda61a6f5f..bea05cb928d540a2f19b51bb7352d032
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
index ded6d148110fe3fbb6272ce44582a28472dd49a6..80d68b91ea4e4eb97e31d1df0c430740fb56bd74 100644
|
|
|
|
index d0109633e8bdf109cfc9178963d7b6cf92f8b189..40f15a30b1a0dd2040e75045f32f33082e70aaeb 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java
|
|
|
|
@@ -85,7 +85,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
|
|
@@ -86,7 +86,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
|
|
|
|
|
|
|
|
|
|
protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP};
|
|
|
|
protected static final Direction[] UPDATE_SHAPE_ORDER = new Direction[]{Direction.WEST, Direction.EAST, Direction.NORTH, Direction.SOUTH, Direction.DOWN, Direction.UP};
|
|
|
|
public final boolean hasCollision;
|
|
|
|
public final boolean hasCollision;
|
|
|
|
@@ -16413,7 +16413,7 @@ index ded6d148110fe3fbb6272ce44582a28472dd49a6..80d68b91ea4e4eb97e31d1df0c430740
|
|
|
|
protected final boolean isRandomlyTicking;
|
|
|
|
protected final boolean isRandomlyTicking;
|
|
|
|
protected final SoundType soundType;
|
|
|
|
protected final SoundType soundType;
|
|
|
|
protected final float friction;
|
|
|
|
protected final float friction;
|
|
|
|
@@ -93,7 +93,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
|
|
@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement {
|
|
|
|
protected final float jumpFactor;
|
|
|
|
protected final float jumpFactor;
|
|
|
|
protected final boolean dynamicShape;
|
|
|
|
protected final boolean dynamicShape;
|
|
|
|
protected final FeatureFlagSet requiredFeatures;
|
|
|
|
protected final FeatureFlagSet requiredFeatures;
|
|
|
|
@@ -16563,10 +16563,10 @@ index d5004290e40a1ff5e0fcfe75f8da34ae15962359..f26383cf896785333dbd6f86348d5a5f
|
|
|
|
} else if (blockState.is(Blocks.HONEY_BLOCK)) {
|
|
|
|
} else if (blockState.is(Blocks.HONEY_BLOCK)) {
|
|
|
|
return PathType.STICKY_HONEY;
|
|
|
|
return PathType.STICKY_HONEY;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/portal/PortalShape.java b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
index 57139a0b8adcd1ea25cd100be78402681856ee75..e8793e11e94eea41ea9be615f0d46c7add836919 100644
|
|
|
|
index 86d95edc7dd1e42b4b38eba1177cd508e72e4fc4..6c07fc507df6070854f5950a8616d2949c040656 100644
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
--- a/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
+++ b/src/main/java/net/minecraft/world/level/portal/PortalShape.java
|
|
|
|
@@ -32,7 +32,7 @@ public class PortalShape {
|
|
|
|
@@ -31,7 +31,7 @@ public class PortalShape {
|
|
|
|
private static final int MIN_HEIGHT = 3;
|
|
|
|
private static final int MIN_HEIGHT = 3;
|
|
|
|
public static final int MAX_HEIGHT = 21;
|
|
|
|
public static final int MAX_HEIGHT = 21;
|
|
|
|
private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> {
|
|
|
|
private static final BlockBehaviour.StatePredicate FRAME = (iblockdata, iblockaccess, blockposition) -> {
|
|
|
|
@@ -17050,7 +17050,7 @@ index 1f354c6c09bc49e57a69db7cfa4f2a331dd02bdb..b251b057ec6e0bb90d140be8f4d24a6c
|
|
|
|
public Collection<GeneratedStructure> getStructures(int x, int z) {
|
|
|
|
public Collection<GeneratedStructure> getStructures(int x, int z) {
|
|
|
|
return this.getStructures(x, z, struct -> true);
|
|
|
|
return this.getStructures(x, z, struct -> true);
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
index e45a2a0c9e461486d3a70f75630ffbc7443ce04e..9f6027268903c81da4cd1e94cf4ac9fa238440e0 100644
|
|
|
|
index c63dfc0b740ce2e544ad920188d7d7dfc2ae3e04..95dc6e535b1e8ef6d58a64df814286ce5df8dc08 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
|
|
|
@@ -176,6 +176,14 @@ public class Main {
|
|
|
|
@@ -176,6 +176,14 @@ public class Main {
|
|
|
|
@@ -17068,7 +17068,7 @@ index e45a2a0c9e461486d3a70f75630ffbc7443ce04e..9f6027268903c81da4cd1e94cf4ac9fa
|
|
|
|
// Paper start
|
|
|
|
// Paper start
|
|
|
|
acceptsAll(asList("server-name"), "Name of the server")
|
|
|
|
acceptsAll(asList("server-name"), "Name of the server")
|
|
|
|
.withRequiredArg()
|
|
|
|
.withRequiredArg()
|
|
|
|
@@ -265,7 +273,7 @@ public class Main {
|
|
|
|
@@ -259,7 +267,7 @@ public class Main {
|
|
|
|
System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper
|
|
|
|
System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -17645,10 +17645,10 @@ index 86574da257731de7646a712ed73384955fe35aa3..e223234dd64b0e41441c3b9f649f0b64
|
|
|
|
+ // Purpur end
|
|
|
|
+ // Purpur end
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
index 0ab53d46f0b8f3f3791dd01766738522c86932e8..98891112f992978c97b21ab0d7d54228819b7536 100644
|
|
|
|
index 8dd85b9ca3b3e3429de4d0ec0654982589c6e93e..198a86fc9b8c4dba8c8de27bccc4de65690b84de 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
|
|
|
@@ -597,6 +597,15 @@ public class CraftEventFactory {
|
|
|
|
@@ -601,6 +601,15 @@ public class CraftEventFactory {
|
|
|
|
// Paper end
|
|
|
|
// Paper end
|
|
|
|
craftServer.getPluginManager().callEvent(event);
|
|
|
|
craftServer.getPluginManager().callEvent(event);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -17664,7 +17664,7 @@ index 0ab53d46f0b8f3f3791dd01766738522c86932e8..98891112f992978c97b21ab0d7d54228
|
|
|
|
return event;
|
|
|
|
return event;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1127,7 +1136,7 @@ public class CraftEventFactory {
|
|
|
|
@@ -1131,7 +1140,7 @@ public class CraftEventFactory {
|
|
|
|
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
|
|
|
|
return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), source.getDirectBlockState(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled);
|
|
|
|
} else if (source.getDirectBlock() != null) {
|
|
|
|
} else if (source.getDirectBlock() != null) {
|
|
|
|
DamageCause cause;
|
|
|
|
DamageCause cause;
|
|
|
|
@@ -17673,7 +17673,7 @@ index 0ab53d46f0b8f3f3791dd01766738522c86932e8..98891112f992978c97b21ab0d7d54228
|
|
|
|
cause = DamageCause.CONTACT;
|
|
|
|
cause = DamageCause.CONTACT;
|
|
|
|
} else if (source.is(DamageTypes.HOT_FLOOR)) {
|
|
|
|
} else if (source.is(DamageTypes.HOT_FLOOR)) {
|
|
|
|
cause = DamageCause.HOT_FLOOR;
|
|
|
|
cause = DamageCause.HOT_FLOOR;
|
|
|
|
@@ -1187,6 +1196,7 @@ public class CraftEventFactory {
|
|
|
|
@@ -1191,6 +1200,7 @@ public class CraftEventFactory {
|
|
|
|
EntityDamageEvent event;
|
|
|
|
EntityDamageEvent event;
|
|
|
|
if (damager != null) {
|
|
|
|
if (damager != null) {
|
|
|
|
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
|
|
|
|
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
|
|
|
|
@@ -17720,21 +17720,81 @@ index af1ae3dacb628da23f7d2988c6e76d3fb2d64103..4ee2d501f882279b48edb4b8bf082458
|
|
|
|
for (int i = 0; i < this.getSize(); i++) {
|
|
|
|
for (int i = 0; i < this.getSize(); i++) {
|
|
|
|
if (i >= items.length) {
|
|
|
|
if (i >= items.length) {
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
|
|
index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9a55c6011 100644
|
|
|
|
index 792cb6adf0c7a6335cc5985fce8bed2e0f1149af..4e8dc7d638009a24f2d64647f8ef56fbe12c52db 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftInventoryAnvil.java
|
|
|
|
+++ b/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;
|
|
|
|
@@ -19,6 +19,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
|
|
|
public class CraftInventoryAnvil extends CraftResultInventory implements AnvilInventory {
|
|
|
|
private int repairCost;
|
|
|
|
|
|
|
|
private int repairCostAmount;
|
|
|
|
|
|
|
|
private int maximumRepairCost;
|
|
|
|
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
|
|
|
|
+ private boolean bypassCost;
|
|
|
|
|
|
|
|
+ private boolean canDoUnsafeEnchants;
|
|
|
|
|
|
|
|
+ // Purpur end - Anvil API
|
|
|
|
|
|
|
|
|
|
|
|
private final Location location;
|
|
|
|
public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory) {
|
|
|
|
- private final AnvilMenu container;
|
|
|
|
|
|
|
|
+ public final AnvilMenu container; // Purpur - private -> public - Anvil API
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public CraftInventoryAnvil(Location location, Container inventory, Container resultInventory, AnvilMenu container) {
|
|
|
|
|
|
|
|
super(inventory, resultInventory);
|
|
|
|
super(inventory, resultInventory);
|
|
|
|
@@ -57,4 +57,26 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
|
|
|
@@ -27,6 +31,10 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
|
|
|
Preconditions.checkArgument(levels >= 0, "Maximum repair cost must be positive (or 0)");
|
|
|
|
this.repairCost = CraftInventoryAnvil.DEFAULT_REPAIR_COST;
|
|
|
|
this.container.maximumRepairCost = levels;
|
|
|
|
this.repairCostAmount = CraftInventoryAnvil.DEFAULT_REPAIR_COST_AMOUNT;
|
|
|
|
|
|
|
|
this.maximumRepairCost = CraftInventoryAnvil.DEFAULT_MAXIMUM_REPAIR_COST;
|
|
|
|
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
|
|
|
|
+ this.bypassCost = false;
|
|
|
|
|
|
|
|
+ this.canDoUnsafeEnchants = false;
|
|
|
|
|
|
|
|
+ // Purpur end - Anvil API
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
@@ -113,4 +121,30 @@ public class CraftInventoryAnvil extends CraftResultInventory implements AnvilIn
|
|
|
|
|
|
|
|
consumer.accept(cav);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
+ /// Purpur start - Anvil API
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
|
|
|
+ public boolean canBypassCost() {
|
|
|
|
|
|
|
|
+ this.syncWithArbitraryViewValue((cav) -> this.bypassCost = cav.canBypassCost());
|
|
|
|
|
|
|
|
+ return this.bypassCost;
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
|
|
|
+ public void setBypassCost(boolean bypassCost) {
|
|
|
|
|
|
|
|
+ this.bypassCost = bypassCost;
|
|
|
|
|
|
|
|
+ this.syncViews((cav) -> cav.setBypassCost(bypassCost));
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
|
|
|
+ public boolean canDoUnsafeEnchants() {
|
|
|
|
|
|
|
|
+ this.syncWithArbitraryViewValue((cav) -> this.canDoUnsafeEnchants = cav.canDoUnsafeEnchants());
|
|
|
|
|
|
|
|
+ return this.canDoUnsafeEnchants;
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
|
|
|
+ public void setDoUnsafeEnchants(boolean canDoUnsafeEnchants) {
|
|
|
|
|
|
|
|
+ this.canDoUnsafeEnchants = canDoUnsafeEnchants;
|
|
|
|
|
|
|
|
+ this.syncViews((cav) -> cav.setDoUnsafeEnchants(canDoUnsafeEnchants));
|
|
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ // Purpur end - Anvil API
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
index c76c78bb7757d407102271463e14716a1b012deb..458b91582a22fb1e6deb1551c38d2a10e33e24f1 100644
|
|
|
|
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
@@ -29,6 +29,7 @@ public interface CraftRecipe extends Recipe {
|
|
|
|
|
|
|
|
} else if (bukkit instanceof RecipeChoice.ExactChoice) {
|
|
|
|
|
|
|
|
stack = new Ingredient(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> new net.minecraft.world.item.crafting.Ingredient.ItemValue(CraftItemStack.asNMSCopy(mat))));
|
|
|
|
|
|
|
|
stack.exact = true;
|
|
|
|
|
|
|
|
+ stack.predicate = ((RecipeChoice.ExactChoice) bukkit).getPredicate(); // Purpur
|
|
|
|
|
|
|
|
// Paper start - support "empty" choices
|
|
|
|
|
|
|
|
} else if (bukkit == RecipeChoice.empty()) {
|
|
|
|
|
|
|
|
stack = Ingredient.EMPTY;
|
|
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
|
|
|
|
|
|
|
|
index e2d8d69c5ae8feb6840462ba8332344972658d83..d1505efcf861224f0b3c9837072690155b36ae32 100644
|
|
|
|
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
|
|
|
|
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/view/CraftAnvilView.java
|
|
|
|
|
|
|
|
@@ -63,4 +63,26 @@ public class CraftAnvilView extends CraftInventoryView<AnvilMenu> implements Anv
|
|
|
|
|
|
|
|
this.setMaximumRepairCost(legacy.getMaximumRepairCost());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
+ // Purpur start - Anvil API
|
|
|
|
@@ -17759,18 +17819,6 @@ index 9ee14589d63bbfc0880f2eee5e924fe946ee0035..062783f30f41761c34d7679844e443e9
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // Purpur end - Anvil API
|
|
|
|
+ // Purpur end - Anvil API
|
|
|
|
}
|
|
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
index c76c78bb7757d407102271463e14716a1b012deb..458b91582a22fb1e6deb1551c38d2a10e33e24f1 100644
|
|
|
|
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftRecipe.java
|
|
|
|
|
|
|
|
@@ -29,6 +29,7 @@ public interface CraftRecipe extends Recipe {
|
|
|
|
|
|
|
|
} else if (bukkit instanceof RecipeChoice.ExactChoice) {
|
|
|
|
|
|
|
|
stack = new Ingredient(((RecipeChoice.ExactChoice) bukkit).getChoices().stream().map((mat) -> new net.minecraft.world.item.crafting.Ingredient.ItemValue(CraftItemStack.asNMSCopy(mat))));
|
|
|
|
|
|
|
|
stack.exact = true;
|
|
|
|
|
|
|
|
+ stack.predicate = ((RecipeChoice.ExactChoice) bukkit).getPredicate(); // Purpur
|
|
|
|
|
|
|
|
// Paper start - support "empty" choices
|
|
|
|
|
|
|
|
} else if (bukkit == RecipeChoice.empty()) {
|
|
|
|
|
|
|
|
stack = Ingredient.EMPTY;
|
|
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java
|
|
|
|
index d7c8f26b21276d9ff1d5c7c9738cc1126ce7d4b9..f0471f92044612e3a2fd12a575b8b1f844790d3a 100644
|
|
|
|
index d7c8f26b21276d9ff1d5c7c9738cc1126ce7d4b9..f0471f92044612e3a2fd12a575b8b1f844790d3a 100644
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java
|
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java
|
|
|
|
|