diff --git a/patches/server/0123-Config-to-always-tame-in-Creative.patch b/patches/server/0123-Config-to-always-tame-in-Creative.patch deleted file mode 100644 index 8ef3c6f7a..000000000 --- a/patches/server/0123-Config-to-always-tame-in-Creative.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Tue, 9 Feb 2021 21:23:37 -0500 -Subject: [PATCH] Config to always tame in Creative - -Adds a configuration option that ensures a player in Creative always tames a tameable entity. -This essentially allows Creative mode players to tame animals on their first try. - -diff --git a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -index b0944fa1f3849dd24cd010fa0a6638f5fd7179d1..d409ae987088df3d47192128401d7491aaabc87c 100644 ---- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -+++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java -@@ -67,7 +67,7 @@ public class RunAroundLikeCrazyGoal extends Goal { - int i = this.horse.getTemper(); - int j = this.horse.getMaxTemper(); - -- if (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent -+ if ((this.horse.level().purpurConfig.alwaysTameInCreative && entityhuman.hasInfiniteMaterials()) || (j > 0 && this.horse.getRandom().nextInt(j) < i && !CraftEventFactory.callEntityTameEvent(this.horse, ((CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled())) { // CraftBukkit - fire EntityTameEvent // Purpur - this.horse.tameWithName(entityhuman); - return; - } -diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 75a961906658ff271bc0acf849648ce877c9e1be..9bf07130a86ac8ab153eb7547c451d35eb2bb016 100644 ---- a/net/minecraft/world/entity/animal/Cat.java -+++ b/net/minecraft/world/entity/animal/Cat.java -@@ -524,7 +524,7 @@ public class Cat extends TamableAnimal implements VariantHolder 0 && this.horse.getRandom().nextInt(maxTemper) < temper && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent ++ if (this.horse.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || maxTemper > 0 && this.horse.getRandom().nextInt(maxTemper) < temper && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this.horse, ((org.bukkit.craftbukkit.entity.CraftHumanEntity) this.horse.getBukkitEntity().getPassenger()).getHandle()).isCancelled()) { // CraftBukkit - fire EntityTameEvent // Purpur - Config to always tame in Creative + this.horse.tameWithName(player); + return; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch index bf55e6b50..e2dcf1d10 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Cat.java.patch @@ -15,3 +15,12 @@ @Nullable @Override public SpawnGroupData finalizeSpawn( +@@ -438,7 +_,7 @@ + } + + private void tryToTame(Player player) { +- if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit ++ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit // Purpur - Config to always tame in Creative + this.tame(player); + this.setOrderedToSit(true); + this.level().broadcastEntityEvent(this, (byte)7); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch new file mode 100644 index 000000000..10e41b399 --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -0,0 +1,11 @@ +--- a/net/minecraft/world/entity/animal/Parrot.java ++++ b/net/minecraft/world/entity/animal/Parrot.java +@@ -257,7 +_,7 @@ + } + + if (!this.level().isClientSide) { +- if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit ++ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled())) { // CraftBukkit // Purpur - Config to always tame in Creative + this.tame(player); + this.level().broadcastEntityEvent(this, (byte)7); + } else { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch index 9ea9971e7..4c48e990c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Wolf.java.patch @@ -137,7 +137,7 @@ this.interestedAngleO = this.interestedAngle; if (this.isInterested()) { this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F; -@@ -481,6 +_,20 @@ +@@ -481,13 +_,27 @@ itemInHand.consume(1, player); this.tryToTame(player); return InteractionResult.SUCCESS_SERVER; @@ -158,3 +158,11 @@ } return super.mobInteract(player, hand); + } + + private void tryToTame(Player player) { +- if (this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - added event call and isCancelled check. ++ if (this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials() || this.random.nextInt(3) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit - added event call and isCancelled check. // Purpur - Config to always tame in Creative + this.tame(player); + this.navigation.stop(); + this.setTarget(null); diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index c31d96369..9a0ea4e0a 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -110,6 +110,7 @@ public class PurpurWorldConfig { } public boolean useBetterMending = false; + public boolean alwaysTameInCreative = false; public boolean boatEjectPlayersOnLand = false; public boolean boatsDoFallDamage = false; public boolean disableDropsOnCrammingDeath = false; @@ -128,6 +129,7 @@ public class PurpurWorldConfig { public boolean imposeTeleportRestrictionsOnEndPortals = false; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); + alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage); disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);