mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Configurable Ender Pearl cooldown, damage, and Endermite RNG
- Survival and Creative Cooldown speed - Damage dealt on pearl usage - Endermite spawn chance
This commit is contained in:
@@ -1,69 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Encode42 <me@encode42.dev>
|
|
||||||
Date: Sun, 7 Mar 2021 19:08:16 -0500
|
|
||||||
Subject: [PATCH] Configurable Ender Pearl cooldown, damage, and Endermite RNG
|
|
||||||
|
|
||||||
- Survival and Creative Cooldown speed
|
|
||||||
- Damage dealt on pearl usage
|
|
||||||
- Endermite spawn chance
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
||||||
index bd2684528157f928460f2143dd71a48e11983123..a044a5242ce1d1f6e34ecd5b4568553428d2f0b8 100644
|
|
||||||
--- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
||||||
+++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
|
||||||
@@ -152,7 +152,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// CraftBukkit end
|
|
||||||
- if (this.random.nextFloat() < 0.05F && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
|
|
||||||
+ if (this.random.nextFloat() < worldserver.purpurConfig.enderPearlEndermiteChance && worldserver.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur
|
|
||||||
Endermite entityendermite = (Endermite) EntityType.ENDERMITE.create(worldserver, EntitySpawnReason.TRIGGERED);
|
|
||||||
|
|
||||||
if (entityendermite != null) {
|
|
||||||
@@ -170,7 +170,7 @@ public class ThrownEnderpearl extends ThrowableItemProjectile {
|
|
||||||
if (entityplayer1 != null) {
|
|
||||||
entityplayer1.resetFallDistance();
|
|
||||||
entityplayer1.resetCurrentImpulseContext();
|
|
||||||
- entityplayer1.hurtServer(entityplayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API
|
|
||||||
+ entityplayer1.hurtServer(entityplayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
this.playSound(worldserver, vec3d);
|
|
||||||
diff --git a/net/minecraft/world/item/EnderpearlItem.java b/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
index eaee34054233c8f0296b65a09f1287ba515496f2..83bd9b1eff5b7f581c3f0af6f0f15bdf4b9de201 100644
|
|
||||||
--- a/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
+++ b/net/minecraft/world/item/EnderpearlItem.java
|
|
||||||
@@ -37,6 +37,7 @@ public class EnderpearlItem extends Item {
|
|
||||||
|
|
||||||
world.playSound((Player) null, user.getX(), user.getY(), user.getZ(), SoundEvents.ENDER_PEARL_THROW, SoundSource.NEUTRAL, 0.5F, 0.4F / (world.getRandom().nextFloat() * 0.4F + 0.8F));
|
|
||||||
user.awardStat(Stats.ITEM_USED.get(this));
|
|
||||||
+ user.getCooldowns().addCooldown(itemstack, user.getAbilities().instabuild ? world.purpurConfig.enderPearlCooldownCreative : world.purpurConfig.enderPearlCooldown); // Purpur
|
|
||||||
} else {
|
|
||||||
// Paper end - PlayerLaunchProjectileEvent
|
|
||||||
if (user instanceof net.minecraft.server.level.ServerPlayer) {
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index e6c9b43eea433abb1a01d4bf591541b754beeebf..e196d391b4c1a02211f221ef10dda9df05c5ab5c 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -196,6 +196,10 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean ignoreScissorsInWater = false;
|
|
||||||
public boolean ignoreScissorsInLava = false;
|
|
||||||
public double scissorsRunningDamage = 1D;
|
|
||||||
+ public float enderPearlDamage = 5.0F;
|
|
||||||
+ public int enderPearlCooldown = 20;
|
|
||||||
+ public int enderPearlCooldownCreative = 20;
|
|
||||||
+ public float enderPearlEndermiteChance = 0.05F;
|
|
||||||
private void itemSettings() {
|
|
||||||
itemImmuneToCactus.clear();
|
|
||||||
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
|
|
||||||
@@ -238,6 +242,10 @@ public class PurpurWorldConfig {
|
|
||||||
ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
|
|
||||||
ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
|
|
||||||
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
|
|
||||||
+ enderPearlDamage = (float) getDouble("gameplay-mechanics.item.ender-pearl.damage", enderPearlDamage);
|
|
||||||
+ enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown);
|
|
||||||
+ enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative);
|
|
||||||
+ enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance);
|
|
||||||
}
|
|
||||||
|
|
||||||
public double minecartMaxSpeed = 0.4D;
|
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
--- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||||
|
+++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
|
||||||
|
@@ -133,7 +_,7 @@
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
- if (this.random.nextFloat() < 0.05F && serverLevel.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
|
||||||
|
+ if (this.random.nextFloat() < serverLevel.purpurConfig.enderPearlEndermiteChance && serverLevel.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) { // Purpur - Configurable Ender Pearl RNG
|
||||||
|
Endermite endermite = EntityType.ENDERMITE.create(serverLevel, EntitySpawnReason.TRIGGERED);
|
||||||
|
if (endermite != null) {
|
||||||
|
endermite.moveTo(owner.getX(), owner.getY(), owner.getZ(), owner.getYRot(), owner.getXRot());
|
||||||
|
@@ -155,7 +_,7 @@
|
||||||
|
if (serverPlayer1 != null) {
|
||||||
|
serverPlayer1.resetFallDistance();
|
||||||
|
serverPlayer1.resetCurrentImpulseContext();
|
||||||
|
- serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API
|
||||||
|
+ serverPlayer1.hurtServer(serverPlayer.serverLevel(), this.damageSources().enderPearl().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur - Configurable Ender Pearl damage
|
||||||
|
}
|
||||||
|
|
||||||
|
this.playSound(serverLevel, vec3);
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
--- a/net/minecraft/world/item/EnderpearlItem.java
|
||||||
|
+++ b/net/minecraft/world/item/EnderpearlItem.java
|
||||||
|
@@ -44,6 +_,7 @@
|
||||||
|
0.4F / (level.getRandom().nextFloat() * 0.4F + 0.8F)
|
||||||
|
);
|
||||||
|
player.awardStat(Stats.ITEM_USED.get(this));
|
||||||
|
+ player.getCooldowns().addCooldown(itemInHand, player.getAbilities().instabuild ? level.purpurConfig.enderPearlCooldownCreative : level.purpurConfig.enderPearlCooldown); // Purpur - Configurable Ender Pearl cooldown
|
||||||
|
} else {
|
||||||
|
// Paper end - PlayerLaunchProjectileEvent
|
||||||
|
player.containerMenu.sendAllDataToRemote();
|
||||||
@@ -188,6 +188,10 @@ public class PurpurWorldConfig {
|
|||||||
public boolean ignoreScissorsInWater = false;
|
public boolean ignoreScissorsInWater = false;
|
||||||
public boolean ignoreScissorsInLava = false;
|
public boolean ignoreScissorsInLava = false;
|
||||||
public double scissorsRunningDamage = 1D;
|
public double scissorsRunningDamage = 1D;
|
||||||
|
public float enderPearlDamage = 5.0F;
|
||||||
|
public int enderPearlCooldown = 20;
|
||||||
|
public int enderPearlCooldownCreative = 20;
|
||||||
|
public float enderPearlEndermiteChance = 0.05F;
|
||||||
private void itemSettings() {
|
private void itemSettings() {
|
||||||
itemImmuneToCactus.clear();
|
itemImmuneToCactus.clear();
|
||||||
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
|
getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> {
|
||||||
@@ -230,6 +234,10 @@ public class PurpurWorldConfig {
|
|||||||
ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
|
ignoreScissorsInWater = getBoolean("gameplay-mechanics.item.shears.ignore-in-water", ignoreScissorsInWater);
|
||||||
ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
|
ignoreScissorsInLava = getBoolean("gameplay-mechanics.item.shears.ignore-in-lava", ignoreScissorsInLava);
|
||||||
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
|
scissorsRunningDamage = getDouble("gameplay-mechanics.item.shears.sprinting-damage", scissorsRunningDamage);
|
||||||
|
enderPearlDamage = (float) getDouble("gameplay-mechanics.item.ender-pearl.damage", enderPearlDamage);
|
||||||
|
enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown);
|
||||||
|
enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative);
|
||||||
|
enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double minecartMaxSpeed = 0.4D;
|
public double minecartMaxSpeed = 0.4D;
|
||||||
|
|||||||
Reference in New Issue
Block a user