Updated Upstream (Paper)

Upstream has released updates that appears to apply and compile correctly

Paper Changes:
df0d7b0d Update upstream CB
6ea3c2cf [CI-SKIP] Rebuild patches
d7bed4cb Heavily optimise random block ticking (#2914)
b66d9ff8 Update upstream CB
ba71c5d6 Stop stripping private use block Unicode from signs
28d9dcfc Entity Jump API (#1587)
9976a768 Fix PlayerNaturallySpawnCreaturesEvent boolean inversion
054e20da Clean up imports on ThrownEggHatchEvent
a8984ccb Add ThrownEggHatchEvent (#1982)
9f24d495 Allow nerfed blazes, endermen to take water damage (#2847)
This commit is contained in:
William Blake Galbreath
2020-02-12 21:21:34 -06:00
parent e52e23265f
commit 4757060211
159 changed files with 6166 additions and 4642 deletions

View File

@@ -1,143 +0,0 @@
From a52816cca0ca3cb8aa341675d4a23a4287b2bd3a Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 25 Jul 2019 18:07:37 -0500
Subject: [PATCH] Implement elytra settings
---
.../java/net/minecraft/server/EntityLiving.java | 13 ++++++++++---
.../java/net/minecraft/server/ItemFireworks.java | 8 ++++++++
src/main/java/net/minecraft/server/ItemStack.java | 8 +++++++-
src/main/java/net/minecraft/server/ItemTrident.java | 10 ++++++++++
src/main/java/net/minecraft/server/Vec3D.java | 1 +
.../java/net/pl3x/purpur/PurpurWorldConfig.java | 13 +++++++++++++
6 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 31cfac0c8..d4fb8e4a6 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2654,9 +2654,16 @@ public abstract class EntityLiving extends Entity {
if (itemstack.getItem() == Items.ELYTRA && ItemElytra.e(itemstack)) {
flag = true;
if (!this.world.isClientSide && (this.bm + 1) % 20 == 0) {
- itemstack.damage(1, this, (entityliving) -> {
- entityliving.broadcastItemBreak(EnumItemSlot.CHEST);
- });
+ // Purpur start
+ int damage = world.purpurConfig.elytraDamagePerSecond;
+ if (world.purpurConfig.elytraDamageMultiplyBySpeed > 0) {
+ double speed = getMot().length();
+ if (speed > world.purpurConfig.elytraDamageMultiplyBySpeed) {
+ damage *= (int) speed;
+ }
+ }
+ itemstack.damage(damage, this, (entityliving) -> entityliving.broadcastItemBreak(EnumItemSlot.CHEST));
+ // Purpur end
}
} else {
flag = false;
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
index bd524a35b..c0e8cd0cd 100644
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
@@ -39,6 +39,14 @@ public class ItemFireworks extends Item {
// Paper start
com.destroystokyo.paper.event.player.PlayerElytraBoostEvent event = new com.destroystokyo.paper.event.player.PlayerElytraBoostEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Firework) entityfireworks.getBukkitEntity());
if (event.callEvent() && world.addEntity(entityfireworks)) {
+ // Purpur start
+ if (world.purpurConfig.elytraDamagePerFireworkBoost > 0) {
+ ItemStack chestItem = entityhuman.getEquipment(EnumItemSlot.CHEST);
+ if (chestItem.getItem() == Items.ELYTRA) {
+ chestItem.damage(world.purpurConfig.elytraDamagePerFireworkBoost, entityhuman, (entityliving) -> entityliving.broadcastItemBreak(EnumItemSlot.CHEST));
+ }
+ }
+ // Purpur end
if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
itemstack.subtract(1);
} else ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 1108aa085..2b39d5ca2 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -401,7 +401,7 @@ public final class ItemStack {
int j;
if (i > 0) {
- j = EnchantmentManager.getEnchantmentLevel(Enchantments.DURABILITY, this);
+ j = (getItem() == Items.ELYTRA && entityplayer != null && entityplayer.world.purpurConfig.elytraIgnoreUnbreaking) ? 0 : EnchantmentManager.getEnchantmentLevel(Enchantments.DURABILITY, this); // Purpur
int k = 0;
for (int l = 0; j > 0 && l < i; ++l) {
@@ -447,6 +447,12 @@ public final class ItemStack {
if (this.isDamaged(i, t0.getRandom(), t0 instanceof EntityPlayer ? (EntityPlayer) t0 : null)) {
consumer.accept(t0);
Item item = this.getItem();
+ // Purpur start
+ if (item == Items.ELYTRA) {
+ setDamage(item.getMaxDurability() - 1);
+ return;
+ }
+ // Purpur end
// CraftBukkit start - Check for item breaking
if (this.count == 1 && t0 instanceof EntityHuman) {
org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent((EntityHuman) t0, this);
diff --git a/src/main/java/net/minecraft/server/ItemTrident.java b/src/main/java/net/minecraft/server/ItemTrident.java
index f571a1586..c26300eac 100644
--- a/src/main/java/net/minecraft/server/ItemTrident.java
+++ b/src/main/java/net/minecraft/server/ItemTrident.java
@@ -100,6 +100,16 @@ public class ItemTrident extends Item {
f2 *= f6 / f5;
f3 *= f6 / f5;
f4 *= f6 / f5;
+
+ // Purpur start
+ ItemStack chestItem = entityhuman.getEquipment(EnumItemSlot.CHEST);
+ if (chestItem.getItem() == Items.ELYTRA) {
+ if (world.purpurConfig.elytraDamagePerTridentBoost > 0) {
+ chestItem.damage(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, (entity) -> entity.broadcastItemBreak(EnumItemSlot.CHEST));
+ }
+ }
+ // Purpur end
+
entityhuman.h((double) f2, (double) f3, (double) f4);
entityhuman.r(20);
if (entityhuman.onGround) {
diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java
index 212af252b..fbc30e6ec 100644
--- a/src/main/java/net/minecraft/server/Vec3D.java
+++ b/src/main/java/net/minecraft/server/Vec3D.java
@@ -98,6 +98,7 @@ public class Vec3D implements IPosition {
return (double) MathHelper.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
}
+ public double length() { return this.g(); } // Purpur - OBFHELPER
public double g() {
return this.x * this.x + this.y * this.y + this.z * this.z;
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index 6cc6d8015..6d875b78b 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -116,6 +116,19 @@ public class PurpurWorldConfig {
milkCuresBadOmen = getBoolean("milk-cures-bad-omen", milkCuresBadOmen);
}
+ public int elytraDamagePerSecond = 1;
+ public double elytraDamageMultiplyBySpeed = 0;
+ public boolean elytraIgnoreUnbreaking = false;
+ public int elytraDamagePerFireworkBoost = 0;
+ public int elytraDamagePerTridentBoost = 0;
+ private void elytraSettings() {
+ elytraDamagePerSecond = getInt("elytra.damage-per-second", elytraDamagePerSecond);
+ elytraDamageMultiplyBySpeed = getDouble("elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed);
+ elytraIgnoreUnbreaking = getBoolean("elytra.ignore-unbreaking", elytraIgnoreUnbreaking);
+ elytraDamagePerFireworkBoost = getInt("elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost);
+ elytraDamagePerTridentBoost = getInt("elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
+ }
+
public boolean enderDragonAlwaysDropsEggBlock = false;
private void enderDragonSettings() {
enderDragonAlwaysDropsEggBlock = getBoolean("mobs.ender-dragon.always-drop-egg-block", enderDragonAlwaysDropsEggBlock);
--
2.24.0