diff --git a/patches/server/0212-Burp-after-eating-food-fills-hunger-bar-completely.patch b/patches/server/0212-Burp-after-eating-food-fills-hunger-bar-completely.patch new file mode 100644 index 000000000..931ae1a0a --- /dev/null +++ b/patches/server/0212-Burp-after-eating-food-fills-hunger-bar-completely.patch @@ -0,0 +1,76 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 24 Jun 2021 21:19:30 -0500 +Subject: [PATCH] Burp after eating food fills hunger bar completely + + +diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java +index 64b6c359c895264baa55d959ce28929712e8b1ee..5782bf409e98305ec3448f2a73663352294a4897 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -196,6 +196,8 @@ public abstract class Player extends LivingEntity { + // CraftBukkit end + + // Purpur start ++ public int burpCooldown = 0; ++ + private javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); + + public abstract void resetLastActionTime(); +@@ -260,6 +262,12 @@ public abstract class Player extends LivingEntity { + + @Override + public void tick() { ++ // Purpur start ++ if (this.burpCooldown > 0 && --this.burpCooldown == 0) { ++ this.level.playSound(null, getX(), getY(), getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 1.0F, this.level.random.nextFloat() * 0.1F + 0.9F); ++ } ++ // Purpur end ++ + this.noPhysics = this.isSpectator(); + if (this.isSpectator()) { + this.onGround = false; +@@ -2349,7 +2357,7 @@ public abstract class Player extends LivingEntity { + public ItemStack eat(Level world, ItemStack stack) { + this.getFoodData().eat(stack.getItem(), stack); + this.awardStat(Stats.ITEM_USED.get(stack.getItem())); +- world.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, world.random.nextFloat() * 0.1F + 0.9F); ++ // world.playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_BURP, SoundSource.PLAYERS, 0.5F, world.random.nextFloat() * 0.1F + 0.9F); // Purpur - moved to tick() + if (this instanceof ServerPlayer) { + CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayer) this, stack); + } +diff --git a/src/main/java/net/minecraft/world/food/FoodData.java b/src/main/java/net/minecraft/world/food/FoodData.java +index 97133bd4af30d0ba92cbf884b83140f3399f92e2..c1130952e3fa22abaa27fcc1c4761c831dc56cc3 100644 +--- a/src/main/java/net/minecraft/world/food/FoodData.java ++++ b/src/main/java/net/minecraft/world/food/FoodData.java +@@ -34,8 +34,10 @@ public class FoodData { + // CraftBukkit end + + public void eat(int food, float saturationModifier) { ++ int oldValue = this.foodLevel; // Purpur + this.foodLevel = Math.min(food + this.foodLevel, 20); + this.saturationLevel = Math.min(this.saturationLevel + (float) food * saturationModifier * 2.0F, (float) this.foodLevel); ++ if (this.entityhuman.level.purpurConfig.playerBurpWhenFull && this.foodLevel == 20 && oldValue < 20) this.entityhuman.burpCooldown = 10; // Purpur + } + + public void eat(Item item, ItemStack stack) { +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index a60b607a454ac56d3e66311444d3db0751c79668..ff7dbc204a30343320cc8941a84039bd1f6358f5 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -327,6 +327,7 @@ public class PurpurWorldConfig { + public boolean playerSleepNearMonsters = false; + public boolean playersSkipNight = true; + public double playerCriticalDamageMultiplier = 1.5D; ++ public boolean playerBurpWhenFull = false; + private void playerSettings() { + idleTimeoutKick = getBoolean("gameplay-mechanics.player.idle-timeout.kick-if-idle", idleTimeoutKick); + idleTimeoutTickNearbyEntities = getBoolean("gameplay-mechanics.player.idle-timeout.tick-nearby-entities", idleTimeoutTickNearbyEntities); +@@ -343,6 +344,7 @@ public class PurpurWorldConfig { + playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); + playersSkipNight = getBoolean("gameplay-mechanics.player.can-skip-night", playersSkipNight); + playerCriticalDamageMultiplier = getDouble("gameplay-mechanics.player.critical-damage-multiplier", playerCriticalDamageMultiplier); ++ playerBurpWhenFull = getBoolean("gameplay-mechanics.player.burp-when-full", playerBurpWhenFull); + } + + public int snowballDamage = -1;