mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly Paper Changes: cc001a73b Climbing should not bypass cramming gamerule b9930b39d Add legacy plugin count to metrics 4729e6b90 Add more lightning API 5e220bcb5 [ci skip] add stale bot configuration 2a44498a5 Add PlayerItemCooldownEvent fd33bcee1 Add LivingEntity#clearActiveItem a99e0ca05 Fix Player spawnParticle x/y/z precision loss
This commit is contained in:
118
patches/server/0082-Implement-elytra-settings.patch
Normal file
118
patches/server/0082-Implement-elytra-settings.patch
Normal file
@@ -0,0 +1,118 @@
|
||||
From 0000000000000000000000000000000000000000 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
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 048690b788..27838680a2 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -2836,7 +2836,16 @@ public abstract class EntityLiving extends Entity {
|
||||
if (itemstack.getItem() == Items.ELYTRA && ItemElytra.d(itemstack)) {
|
||||
flag = true;
|
||||
if (!this.world.isClientSide && (this.be + 1) % 20 == 0) {
|
||||
- itemstack.damage(1, this, (entityliving) -> {
|
||||
+ // Purpur start
|
||||
+ int damage = world.purpurConfig.elytraDamagePerSecond;
|
||||
+ if (world.purpurConfig.elytraDamageMultiplyBySpeed > 0) {
|
||||
+ double speed = getMot().magnitudeSquared();
|
||||
+ if (speed > world.purpurConfig.elytraDamageMultiplyBySpeed) {
|
||||
+ damage *= (int) speed;
|
||||
+ }
|
||||
+ }
|
||||
+ itemstack.damage(damage, this, (entityliving) -> {
|
||||
+ // Purpur end
|
||||
entityliving.broadcastItemBreak(EnumItemSlot.CHEST);
|
||||
});
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
|
||||
index e775fe69ee..990eb65669 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
|
||||
@@ -43,6 +43,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 6a9b7e6094..40f553e395 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemStack.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemStack.java
|
||||
@@ -450,7 +450,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) {
|
||||
@@ -496,6 +496,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 3663b70173..18f767dc57 100644
|
||||
--- a/src/main/java/net/minecraft/server/ItemTrident.java
|
||||
+++ b/src/main/java/net/minecraft/server/ItemTrident.java
|
||||
@@ -102,6 +102,16 @@ public class ItemTrident extends Item implements ItemVanishable {
|
||||
f2 *= f6 / f5;
|
||||
f3 *= f6 / f5;
|
||||
f4 *= f6 / f5;
|
||||
+
|
||||
+ // Purpur start
|
||||
+ ItemStack chestItem = entityhuman.getEquipment(EnumItemSlot.CHEST);
|
||||
+ if (chestItem.getItem() == Items.ELYTRA && world.purpurConfig.elytraDamagePerTridentBoost > 0) {
|
||||
+ chestItem.damage(world.purpurConfig.elytraDamagePerTridentBoost, entityhuman, (entity) -> {
|
||||
+ entity.broadcastItemBreak(EnumItemSlot.CHEST);
|
||||
+ });
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
entityhuman.i((double) f2, (double) f3, (double) f4);
|
||||
entityhuman.r(20);
|
||||
if (entityhuman.isOnGround()) {
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 33eac638f4..44dda36a5d 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -129,6 +129,19 @@ public class PurpurWorldConfig {
|
||||
voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight);
|
||||
}
|
||||
|
||||
+ 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("gameplay-mechanics.elytra.damage-per-second", elytraDamagePerSecond);
|
||||
+ elytraDamageMultiplyBySpeed = getDouble("gameplay-mechanics.elytra.damage-multiplied-by-speed", elytraDamageMultiplyBySpeed);
|
||||
+ elytraIgnoreUnbreaking = getBoolean("gameplay-mechanics.elytra.ignore-unbreaking", elytraIgnoreUnbreaking);
|
||||
+ elytraDamagePerFireworkBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.firework", elytraDamagePerFireworkBoost);
|
||||
+ elytraDamagePerTridentBoost = getInt("gameplay-mechanics.elytra.damage-per-boost.trident", elytraDamagePerTridentBoost);
|
||||
+ }
|
||||
+
|
||||
public String playerDeathExpDropEquation = "expLevel * 7";
|
||||
public int playerDeathExpDropMax = 100;
|
||||
private void playerDeathExpSettings() {
|
||||
Reference in New Issue
Block a user