mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-10 12:50:28 +01:00
Activation Range Improvements
Fixes and adds new Immunities to improve gameplay behavior
This commit is contained in:
parent
373e390735
commit
4bf7275588
159
Spigot-Server-Patches/0195-Activation-Range-Improvements.patch
Normal file
159
Spigot-Server-Patches/0195-Activation-Range-Improvements.patch
Normal file
@ -0,0 +1,159 @@
|
|||||||
|
From b95753f18647c5c5a8b753fbba6d57361a9448ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aikar <aikar@aikar.co>
|
||||||
|
Date: Tue, 27 Dec 2016 22:38:06 -0500
|
||||||
|
Subject: [PATCH] Activation Range Improvements
|
||||||
|
|
||||||
|
Fixes and adds new Immunities to improve gameplay behavior
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
|
||||||
|
index fdfe5b9ed..ce3907438 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityCreature.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
|
||||||
|
@@ -10,6 +10,7 @@ public abstract class EntityCreature extends EntityInsentient {
|
||||||
|
|
||||||
|
public static final UUID bu = UUID.fromString("E199AD21-BA8A-4C53-8D13-6182D5C69D3A");
|
||||||
|
public static final AttributeModifier bv = (new AttributeModifier(EntityCreature.bu, "Fleeing speed bonus", 2.0D, 2)).a(false);
|
||||||
|
+ public BlockPosition movingTarget = null; public BlockPosition getMovingTarget() { return movingTarget; } // Paper
|
||||||
|
private BlockPosition a;
|
||||||
|
private float b;
|
||||||
|
private float c;
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
|
index 132e03f40..f7b005938 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||||
|
@@ -73,7 +73,7 @@ public abstract class EntityLiving extends Entity {
|
||||||
|
public float aQ;
|
||||||
|
public float aR;
|
||||||
|
public EntityHuman killer;
|
||||||
|
- protected int lastDamageByPlayerTime;
|
||||||
|
+ public int lastDamageByPlayerTime; // Paper - public
|
||||||
|
protected boolean aU;
|
||||||
|
protected int ticksFarFromPlayer;
|
||||||
|
protected float aW;
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
|
||||||
|
index 13ae7a030..7e3aa6ee6 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityLlama.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
|
||||||
|
@@ -363,7 +363,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
|
||||||
|
return this.bL != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
- public boolean dR() {
|
||||||
|
+ public boolean inCaravan() { return dR(); } public boolean dR() { // Paper - OBFHELPER
|
||||||
|
return this.bK != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
|
||||||
|
index ac6e2a9aa..e6c190d43 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityVillager.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
|
||||||
|
@@ -20,7 +20,7 @@ public class EntityVillager extends EntityAgeable implements NPC, IMerchant {
|
||||||
|
private static final Logger bx = LogManager.getLogger();
|
||||||
|
private static final DataWatcherObject<Integer> by = DataWatcher.a(EntityVillager.class, DataWatcherRegistry.b);
|
||||||
|
private int profession;
|
||||||
|
- private boolean bA;
|
||||||
|
+ private boolean bA;public boolean isMating() { return bA; } // Paper - OBFHELPER
|
||||||
|
private boolean bB;
|
||||||
|
Village village;
|
||||||
|
private EntityHuman tradingPlayer;
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||||
|
index 83d9c43f3..1cb6652c2 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||||
|
@@ -18,7 +18,10 @@ public abstract class PathfinderGoal {
|
||||||
|
|
||||||
|
public void c() {}
|
||||||
|
|
||||||
|
- public void d() {}
|
||||||
|
+ public void d() {
|
||||||
|
+ onTaskReset(); // Paper
|
||||||
|
+ }
|
||||||
|
+ public void onTaskReset() {} // Paper
|
||||||
|
|
||||||
|
public void e() {}
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
|
||||||
|
index e5b5e9887..e3781f3a8 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
|
||||||
|
@@ -2,12 +2,21 @@ package net.minecraft.server;
|
||||||
|
|
||||||
|
public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||||
|
|
||||||
|
- private final EntityCreature c;
|
||||||
|
+ private final EntityCreature c; public EntityCreature getEntity() { return c; } // Paper - OBFHELPER
|
||||||
|
private final double d;
|
||||||
|
protected int a;
|
||||||
|
private int e;
|
||||||
|
private int f;
|
||||||
|
- protected BlockPosition b;
|
||||||
|
+ protected BlockPosition b; public BlockPosition getTarget() { return b; } public void setTarget(BlockPosition pos) { this.b = pos; getEntity().movingTarget = pos != BlockPosition.ZERO ? pos : null; } // Paper - OBFHELPER
|
||||||
|
+
|
||||||
|
+ // Paper start
|
||||||
|
+ @Override
|
||||||
|
+ public void onTaskReset() {
|
||||||
|
+ super.onTaskReset();
|
||||||
|
+ setTarget(BlockPosition.ZERO);
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
private boolean g;
|
||||||
|
private final int h;
|
||||||
|
|
||||||
|
@@ -69,7 +78,7 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||||
|
BlockPosition blockposition1 = blockposition.a(l, j - 1, i1);
|
||||||
|
|
||||||
|
if (this.c.f(blockposition1) && this.a(this.c.world, blockposition1)) {
|
||||||
|
- this.b = blockposition1;
|
||||||
|
+ setTarget(blockposition1); // Paper
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
index c8a6ff3d4..428912cbc 100644
|
||||||
|
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||||
|
@@ -20,6 +20,7 @@ import net.minecraft.server.EntityFireball;
|
||||||
|
import net.minecraft.server.EntityFireworks;
|
||||||
|
import net.minecraft.server.EntityHuman;
|
||||||
|
import net.minecraft.server.EntityLiving;
|
||||||
|
+import net.minecraft.server.EntityLlama;
|
||||||
|
import net.minecraft.server.EntityMonster;
|
||||||
|
import net.minecraft.server.EntityProjectile;
|
||||||
|
import net.minecraft.server.EntitySheep;
|
||||||
|
@@ -210,18 +211,29 @@ public class ActivationRange
|
||||||
|
if ( entity instanceof EntityLiving )
|
||||||
|
{
|
||||||
|
EntityLiving living = (EntityLiving) entity;
|
||||||
|
- if ( /*TODO: Missed mapping? living.attackTicks > 0 || */ living.hurtTicks > 0 || living.effects.size() > 0 )
|
||||||
|
+ if ( living.lastDamageByPlayerTime > 0 || living.hurtTicks > 0 || living.effects.size() > 0 ) // Paper
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
- if ( entity instanceof EntityCreature && ( (EntityCreature) entity ).getGoalTarget() != null )
|
||||||
|
+ if ( entity instanceof EntityCreature )
|
||||||
|
+ {
|
||||||
|
+ // Paper start
|
||||||
|
+ EntityCreature creature = (EntityCreature) entity;
|
||||||
|
+ if (creature.getGoalTarget() != null || creature.getMovingTarget() != null) {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+ }
|
||||||
|
+ if ( entity instanceof EntityVillager && ( (EntityVillager) entity ).isMating() ) // Paper
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
- if ( entity instanceof EntityVillager && ( (EntityVillager) entity ).df()/* Getter for first boolean */ )
|
||||||
|
+ // Paper start
|
||||||
|
+ if ( entity instanceof EntityLlama && ( (EntityLlama ) entity ).inCaravan() )
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
+ // Paper end
|
||||||
|
if ( entity instanceof EntityAnimal )
|
||||||
|
{
|
||||||
|
EntityAnimal animal = (EntityAnimal) entity;
|
||||||
|
--
|
||||||
|
2.11.0
|
||||||
|
|
@ -75,7 +75,9 @@ import PacketPlayOutScoreboardTeam
|
|||||||
import PacketPlayOutTitle
|
import PacketPlayOutTitle
|
||||||
import PacketPlayOutUpdateTime
|
import PacketPlayOutUpdateTime
|
||||||
import PathfinderAbstract
|
import PathfinderAbstract
|
||||||
|
import PathfinderGoal
|
||||||
import PathfinderGoalFloat
|
import PathfinderGoalFloat
|
||||||
|
import PathfinderGoalGotoTarget
|
||||||
import PathfinderWater
|
import PathfinderWater
|
||||||
import PersistentVillage
|
import PersistentVillage
|
||||||
import RemoteControlListener
|
import RemoteControlListener
|
||||||
|
Loading…
Reference in New Issue
Block a user