From 57973a9becf73830c0448a6ef4d7b2b73ff0495f Mon Sep 17 00:00:00 2001 From: Beaness Date: Wed, 13 Jul 2022 20:29:37 +0200 Subject: [PATCH] Spigot fixes --- .../command/defaults/VersionCommand.java | 4 ++-- .../spigot/config/eSpigotConfig.java | 6 ++++++ .../net/minecraft/server/EntityLiving.java | 19 ++++++++++++++++++- .../net/minecraft/server/EntityPlayer.java | 5 +++++ .../minecraft/server/PlayerConnection.java | 6 ++---- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java index f708c81..440c8a7 100644 --- a/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java +++ b/eSpigot-API/src/main/java/org/bukkit/command/defaults/VersionCommand.java @@ -69,8 +69,8 @@ public class VersionCommand extends BukkitCommand { private void describeToSender(Plugin plugin, CommandSender sender) { PluginDescriptionFile desc = plugin.getDescription(); - sender.sendMessage(ChatColor.AQUA + desc.getName() + ChatColor.DARK_AQUA + " version " + ChatColor.AQUA + desc.getVersion()); - + sender.sendMessage(ChatColor.DARK_AQUA + "Name: " + ChatColor.AQUA + desc.getName()); + sender.sendMessage(ChatColor.DARK_AQUA + "Version: " + ChatColor.AQUA + desc.getVersion()); if (desc.getDescription() != null) { sender.sendMessage(ChatColor.DARK_AQUA + "Description: " + ChatColor.AQUA + desc.getDescription()); } diff --git a/eSpigot-Server/src/main/java/com/elevatemc/spigot/config/eSpigotConfig.java b/eSpigot-Server/src/main/java/com/elevatemc/spigot/config/eSpigotConfig.java index 54dd45c..7dad96c 100644 --- a/eSpigot-Server/src/main/java/com/elevatemc/spigot/config/eSpigotConfig.java +++ b/eSpigot-Server/src/main/java/com/elevatemc/spigot/config/eSpigotConfig.java @@ -101,6 +101,12 @@ public class eSpigotConfig fixSprintEatExploit = getBoolean( "settings.fix-sprint-eat-exploit", true ); } + public static boolean fixBouncingArrows; + private static void fixBouncingArrows() + { + mobAI = getBoolean( "settings.fix-bouncing-arrows", true ); + } + public static boolean obfuscatePlayerHealth; private static void obfuscatePlayerHealth() { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java index 88de95e..81e60e5 100644 --- a/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityLiving.java @@ -19,6 +19,7 @@ import com.google.common.base.Function; import com.google.common.collect.Lists; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.util.CraftPotionUtil; +import org.bukkit.entity.Arrow; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Vehicle; @@ -775,7 +776,23 @@ public abstract class EntityLiving extends Entity { this.aB = 1.5F; boolean flag = true; - if ((float) this.noDamageTicks > (float) this.maxNoDamageTicks / 2.0F) { + // Beanes start + boolean isArrow = false; + if (eSpigotConfig.fixBouncingArrows && damagesource instanceof EntityDamageSourceIndirect) { + EntityDamageSourceIndirect indirectDamage = (EntityDamageSourceIndirect) damagesource; + Entity dmgSource = indirectDamage.getProximateDamageSource(); + if (dmgSource.getBukkitEntity() instanceof Arrow) { + isArrow = true; + // If the player had the no damage ticks activated we set the arrow knockback to 0 to prevent it from giving double knockback + if (((float) this.noDamageTicks > (float) this.maxNoDamageTicks / 2.0F)) { + Arrow arrow = (Arrow) dmgSource.getBukkitEntity(); + arrow.setKnockbackStrength(0); + } + } + } + // Beanes end + + if ((float) this.noDamageTicks > (float) this.maxNoDamageTicks / 2.0F || isArrow) { if (f <= this.lastDamage) { this.forceExplosionKnockback = true; // CraftBukkit - SPIGOT-949 - for vanilla consistency, cooldown does not prevent explosion knockback return false; diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java index 7ed3ded..7c7782e 100644 --- a/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/EntityPlayer.java @@ -1,5 +1,6 @@ package net.minecraft.server; +import com.elevatemc.spigot.config.eSpigotConfig; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import com.mojang.authlib.GameProfile; @@ -14,14 +15,18 @@ import org.apache.logging.log4j.Logger; // CraftBukkit start import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.WeatherType; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.craftbukkit.event.CraftEventFactory; import org.bukkit.craftbukkit.inventory.CraftItemStack; +import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryType; +import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import com.elevatemc.spigot.knockback.KnockbackProfile; +import org.spigotmc.SpigotConfig; // CraftBukkit end public class EntityPlayer extends EntityHuman implements ICrafting { diff --git a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java index 80a9a2e..a62772e 100644 --- a/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/eSpigot-Server/src/main/java/net/minecraft/server/PlayerConnection.java @@ -636,10 +636,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList return; case 3: // RELEASE_USE_ITEM - if (eSpigotConfig.fixSprintEatExploit) - this.player.bU(); // eSpigot - Patch eat while running glitch - - this.player.setSprinting(true); + this.player.bU(); return; case 4: // START_DESTROY_BLOCK @@ -1317,6 +1314,7 @@ public class PlayerConnection implements PacketListenerPlayIn, IUpdatePlayerList case 3: this.player.setSprinting(true); + if (eSpigotConfig.fixSprintEatExploit) this.player.bU(); break; case 4: