mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
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.
This commit is contained in:
@@ -1,80 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Encode42 <me@encode42.dev>
|
|
||||||
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<Holder<CatVarian
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
this.tame(player);
|
|
||||||
this.setOrderedToSit(true);
|
|
||||||
this.level().broadcastEntityEvent(this, (byte) 7);
|
|
||||||
diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java
|
|
||||||
index 9c6385183bc93d84386577dd4d775b2b42138925..3305a49fed395c134cf099253ea0558b6bd27bd4 100644
|
|
||||||
--- a/net/minecraft/world/entity/animal/Parrot.java
|
|
||||||
+++ b/net/minecraft/world/entity/animal/Parrot.java
|
|
||||||
@@ -325,7 +325,7 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
this.tame(player);
|
|
||||||
this.level().broadcastEntityEvent(this, (byte) 7);
|
|
||||||
} else {
|
|
||||||
diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java
|
|
||||||
index 95b24da0de519363d67e0bcb4fcdeaa2a2c17060..615a0de7b2d6fb69ca86f1fa27e9dc7d4368bd24 100644
|
|
||||||
--- a/net/minecraft/world/entity/animal/Wolf.java
|
|
||||||
+++ b/net/minecraft/world/entity/animal/Wolf.java
|
|
||||||
@@ -640,7 +640,7 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
|
|
||||||
|
|
||||||
private void tryToTame(Player player) {
|
|
||||||
// CraftBukkit - added event call and isCancelled check.
|
|
||||||
- if (this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) {
|
|
||||||
+ if ((this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || this.random.nextInt(3) == 0 && !CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) {
|
|
||||||
this.tame(player);
|
|
||||||
this.navigation.stop();
|
|
||||||
this.setTarget((LivingEntity) null);
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index 9ab4dfe8cccbb8e4cc200930059acde1fb0341a6..54ca30f1d621a2b5124f3ec090a55857e4705ddd 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -118,6 +118,7 @@ public class PurpurWorldConfig {
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean useBetterMending = false;
|
|
||||||
+ public boolean alwaysTameInCreative = false;
|
|
||||||
public boolean boatEjectPlayersOnLand = false;
|
|
||||||
public boolean boatsDoFallDamage = false;
|
|
||||||
public boolean disableDropsOnCrammingDeath = false;
|
|
||||||
@@ -136,6 +137,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);
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
--- a/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
|
||||||
|
+++ b/net/minecraft/world/entity/ai/goal/RunAroundLikeCrazyGoal.java
|
||||||
|
@@ -58,7 +_,7 @@
|
||||||
|
if (firstPassenger instanceof Player player) {
|
||||||
|
int temper = this.horse.getTemper();
|
||||||
|
int maxTemper = this.horse.getMaxTemper();
|
||||||
|
- if (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
|
||||||
|
+ 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;
|
||||||
|
}
|
||||||
@@ -15,3 +15,12 @@
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public SpawnGroupData finalizeSpawn(
|
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);
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
this.interestedAngleO = this.interestedAngle;
|
this.interestedAngleO = this.interestedAngle;
|
||||||
if (this.isInterested()) {
|
if (this.isInterested()) {
|
||||||
this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F;
|
this.interestedAngle = this.interestedAngle + (1.0F - this.interestedAngle) * 0.4F;
|
||||||
@@ -481,6 +_,20 @@
|
@@ -481,13 +_,27 @@
|
||||||
itemInHand.consume(1, player);
|
itemInHand.consume(1, player);
|
||||||
this.tryToTame(player);
|
this.tryToTame(player);
|
||||||
return InteractionResult.SUCCESS_SERVER;
|
return InteractionResult.SUCCESS_SERVER;
|
||||||
@@ -158,3 +158,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
return super.mobInteract(player, hand);
|
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);
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ public class PurpurWorldConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean useBetterMending = false;
|
public boolean useBetterMending = false;
|
||||||
|
public boolean alwaysTameInCreative = false;
|
||||||
public boolean boatEjectPlayersOnLand = false;
|
public boolean boatEjectPlayersOnLand = false;
|
||||||
public boolean boatsDoFallDamage = false;
|
public boolean boatsDoFallDamage = false;
|
||||||
public boolean disableDropsOnCrammingDeath = false;
|
public boolean disableDropsOnCrammingDeath = false;
|
||||||
@@ -128,6 +129,7 @@ public class PurpurWorldConfig {
|
|||||||
public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
public boolean imposeTeleportRestrictionsOnEndPortals = false;
|
||||||
private void miscGameplayMechanicsSettings() {
|
private void miscGameplayMechanicsSettings() {
|
||||||
useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending);
|
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);
|
boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand);
|
||||||
boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage);
|
boatsDoFallDamage = getBoolean("gameplay-mechanics.boat.do-fall-damage", boatsDoFallDamage);
|
||||||
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
disableDropsOnCrammingDeath = getBoolean("gameplay-mechanics.disable-drops-on-cramming-death", disableDropsOnCrammingDeath);
|
||||||
|
|||||||
Reference in New Issue
Block a user