respect the sidedSuccess InteractionResult, fixes #611

This commit is contained in:
granny
2023-01-20 04:48:10 -08:00
parent 15a76c78b1
commit e56d3681fb
2 changed files with 18 additions and 14 deletions

View File

@@ -66,7 +66,7 @@ index f3024b03ff7709893d6e39f54504597bb59f5315..f6360f2973c03e0105361f9e001360ec
public void doTick() {
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
index f79ca89b430636bf5c0e140499ac20f743f22f33..ebc2707fa3eeec4c80d7f186fce39ddcbd8eb414 100644
index 6ca749d957ff04f9c6e48271da0046a353508c10..132c3e1ab9e65c778d3f1a7527a9f9c49337d8b4 100644
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
@@ -716,7 +716,6 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
@@ -202,7 +202,7 @@ index c1e9b40a4a0f9cdc650caa88b5ea132e06ee2496..882ab40c8cdea8c214cb8344b3ccecdd
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
index 120c0804010fd5b38a5f806ca580962ff8b47339..518c4cadf549d045d17f7c0eab548bde221a5442 100644
index 413652284e229a51e3eefe47f239e8fa9a09ccb2..1f9f59f4ec936e365ad6428717a7d92983a66222 100644
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
@@ -221,9 +221,9 @@ public abstract class LivingEntity extends Entity {
@@ -280,7 +280,7 @@ index 120c0804010fd5b38a5f806ca580962ff8b47339..518c4cadf549d045d17f7c0eab548bde
// Paper end
if (!this.level.isClientSide && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) {
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
index 94b45579dc371ee980565aed2f5dee78ebd44427..286f6a7ebc38378bb730db5d8ffef226f6a94e3d 100644
index 94b45579dc371ee980565aed2f5dee78ebd44427..4072a189813cc1a89b64b2997df0938288fab743 100644
--- a/src/main/java/net/minecraft/world/entity/Mob.java
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
@@ -146,8 +146,8 @@ public abstract class Mob extends LivingEntity {
@@ -303,7 +303,7 @@ index 94b45579dc371ee980565aed2f5dee78ebd44427..286f6a7ebc38378bb730db5d8ffef226
}
public boolean isWithinRestriction() {
@@ -1728,4 +1728,52 @@ public abstract class Mob extends LivingEntity {
@@ -1728,4 +1728,56 @@ public abstract class Mob extends LivingEntity {
return itemmonsteregg == null ? null : new ItemStack(itemmonsteregg);
}
@@ -314,8 +314,12 @@ index 94b45579dc371ee980565aed2f5dee78ebd44427..286f6a7ebc38378bb730db5d8ffef226
+ }
+
+ public InteractionResult tryRide(Player player, InteractionHand hand) {
+ return tryRide(player, hand, InteractionResult.PASS);
+ }
+
+ public InteractionResult tryRide(Player player, InteractionHand hand, InteractionResult result) {
+ if (!isRidable()) {
+ return InteractionResult.PASS;
+ return result;
+ }
+ if (hand != InteractionHand.MAIN_HAND) {
+ return InteractionResult.PASS;
@@ -5010,7 +5014,7 @@ index 904826ea563bd2eb469f403df459def62cc1b5e6..456ebb0829d19d13abe05d83035c4abe
public static void applyDarknessAround(ServerLevel world, Vec3 pos, @Nullable Entity entity, int range) {
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 76a9da8209d557b913c49ccd281bf147b9ac4fa4..2bbfa9a7d0fe71597e4e9a1e883be68018caadd7 100644
index 76a9da8209d557b913c49ccd281bf147b9ac4fa4..4d0426dbbc3d87d7450acf983c45f3b8636e11e2 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -155,6 +155,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -5056,7 +5060,7 @@ index 76a9da8209d557b913c49ccd281bf147b9ac4fa4..2bbfa9a7d0fe71597e4e9a1e883be680
if (this.isBaby()) {
this.setUnhappy();
- return InteractionResult.sidedSuccess(this.level.isClientSide);
+ return tryRide(player, hand); // Purpur
+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
} else {
boolean flag = this.getOffers().isEmpty();
@@ -5065,14 +5069,14 @@ index 76a9da8209d557b913c49ccd281bf147b9ac4fa4..2bbfa9a7d0fe71597e4e9a1e883be680
if (flag) {
- return InteractionResult.sidedSuccess(this.level.isClientSide);
+ return tryRide(player, hand); // Purpur
+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
} else {
+ if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
if (!this.level.isClientSide && !this.offers.isEmpty()) {
this.startTrading(player);
}
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index e92e6fb4cf97f4d5406b5b5d5786bfa5fb55f536..0e7d5540763d56020cd59d9aef09f7a7d2cde1b1 100644
index e92e6fb4cf97f4d5406b5b5d5786bfa5fb55f536..64fb6f2ea7b792d131feca7278034336056c49b9 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -66,6 +66,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -5104,7 +5108,7 @@ index e92e6fb4cf97f4d5406b5b5d5786bfa5fb55f536..0e7d5540763d56020cd59d9aef09f7a7
if (this.getOffers().isEmpty()) {
- return InteractionResult.sidedSuccess(this.level.isClientSide);
+ return tryRide(player, hand); // Purpur
+ return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
} else {
+ if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
if (!this.level.isClientSide) {

View File

@@ -5,11 +5,11 @@ Subject: [PATCH] Add config for villager trading
diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 304c7e23fd38aa3e869918cbabf77d835ac5a8cd..873bc6c7ec79b713fcb9ac9a5a5c421c00d2cd79 100644
index 78efd0c4a3350602757a54950cabdccbda8c5d18..7b324a9b971ed263e8e8f0724de68ec9180de8ad 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -366,7 +366,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return tryRide(player, hand); // Purpur
return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
} else {
if (level.purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
- if (!this.level.isClientSide && !this.offers.isEmpty()) {
@@ -18,11 +18,11 @@ index 304c7e23fd38aa3e869918cbabf77d835ac5a8cd..873bc6c7ec79b713fcb9ac9a5a5c421c
}
diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
index a028732368cdc6b249135742b4a86920d95fa76e..eed9fed34fde4d27e424507f2f05510d46f64601 100644
index 264e9372118dcf95840fef2dfa5db3be96e46c6a..0f347989aa776c3adeae51bf299ccf5707342aba 100644
--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -149,7 +149,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
return tryRide(player, hand); // Purpur
return tryRide(player, hand, InteractionResult.sidedSuccess(this.level.isClientSide)); // Purpur
} else {
if (level.purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur
- if (!this.level.isClientSide) {