Updated Upstream (CraftBukkit/Spigot)
Doesn't compile yet. CraftBukkit Changes: 90d6905b Repackage NMS 69cf961d Repackage patches Spigot Changes: 79d53c28 Repackage NMS
This commit is contained in:
@@ -13,345 +13,10 @@ Adds water Mobs to activation range config and nerfs fish
|
||||
Adds flying monsters to control ghast and phantoms
|
||||
Adds villagers as separate config
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
diff --git a/src/main/java/net/minecraft/server/level/WorldServer.java b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
public boolean Y;
|
||||
public boolean impulse;
|
||||
public int portalCooldown;
|
||||
- protected boolean inPortal;
|
||||
+ public boolean inPortal; // Paper - public
|
||||
protected int portalTicks;
|
||||
protected BlockPosition ac;
|
||||
private boolean invulnerable;
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
|
||||
public final boolean defaultActivationState;
|
||||
public long activatedTick = Integer.MIN_VALUE;
|
||||
+ public boolean isTemporarilyActive = false; // Paper
|
||||
public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one
|
||||
protected int numCollisions = 0; // Paper
|
||||
public void inactiveTick() { }
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.recalcPosition();
|
||||
} else {
|
||||
if (enummovetype == EnumMoveType.PISTON) {
|
||||
+ this.activatedTick = MinecraftServer.currentTick + 20; // Paper
|
||||
vec3d = this.b(vec3d);
|
||||
if (vec3d.equals(Vec3D.ORIGIN)) {
|
||||
return;
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.x = Vec3D.ORIGIN;
|
||||
this.setMot(Vec3D.ORIGIN);
|
||||
}
|
||||
+ // Paper start - ignore movement changes while inactive.
|
||||
+ if (isTemporarilyActive && !(this instanceof EntityItem || this instanceof EntityMinecartAbstract) && vec3d == getMot() && enummovetype == EnumMoveType.SELF) {
|
||||
+ setMot(Vec3D.ORIGIN);
|
||||
+ this.world.getMethodProfiler().exit();
|
||||
+ return;
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
vec3d = this.a(vec3d, enummovetype);
|
||||
Vec3D vec3d1 = this.g(vec3d);
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
}
|
||||
}
|
||||
|
||||
+ public void syncPositionOf(Entity entity) { k(entity); } // Paper - OBFHELPER
|
||||
public void k(Entity entity) {
|
||||
this.a(entity, Entity::setPosition);
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return this.ae;
|
||||
}
|
||||
|
||||
+ public final boolean isPushedByWater() { return this.bV(); } // Paper - OBFHELPER - the below is not an obfhelper, don't use it!
|
||||
public boolean bV() {
|
||||
// Paper start
|
||||
return this.pushedByWater();
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityCreature.java b/src/main/java/net/minecraft/server/EntityCreature.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityCreature.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityCreature.java
|
||||
@@ -0,0 +0,0 @@ import org.bukkit.event.entity.EntityUnleashEvent;
|
||||
public abstract class EntityCreature extends EntityInsentient {
|
||||
|
||||
public org.bukkit.craftbukkit.entity.CraftCreature getBukkitCreature() { return (org.bukkit.craftbukkit.entity.CraftCreature) super.getBukkitEntity(); } // Paper
|
||||
+ public BlockPosition movingTarget = null; public BlockPosition getMovingTarget() { return movingTarget; } // Paper
|
||||
|
||||
protected EntityCreature(EntityTypes<? extends EntityCreature> entitytypes, World world) {
|
||||
super(entitytypes, world);
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
public MinecraftKey lootTableKey;
|
||||
public long lootTableSeed;
|
||||
@Nullable
|
||||
- private Entity leashHolder;
|
||||
+ public Entity leashHolder; // Paper - private -> public
|
||||
private int bx;
|
||||
@Nullable
|
||||
private NBTTagCompound by;
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
return this.lookController;
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public void inactiveTick() {
|
||||
+ super.inactiveTick();
|
||||
+ if (this.goalSelector.inactiveTick()) {
|
||||
+ this.goalSelector.doTick();
|
||||
+ }
|
||||
+ if (this.targetSelector.inactiveTick()) {
|
||||
+ this.targetSelector.doTick();
|
||||
+ }
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public ControllerMove getControllerMove() {
|
||||
if (this.isPassenger() && this.getVehicle() instanceof EntityInsentient) {
|
||||
EntityInsentient entityinsentient = (EntityInsentient) this.getVehicle();
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
protected float aN;
|
||||
protected int aO;protected int getKillCount() { return this.aO; } // Paper - OBFHELPER
|
||||
public float lastDamage;
|
||||
- protected boolean jumping;
|
||||
+ public boolean jumping; // Paper protected -> public
|
||||
public float aR;
|
||||
public float aS;
|
||||
public float aT;
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLlama.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
|
||||
@@ -0,0 +0,0 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
|
||||
return this.bC != null;
|
||||
}
|
||||
|
||||
+ public final boolean inCaravan() { return this.fC(); } // Paper - OBFHELPER
|
||||
public boolean fC() {
|
||||
return this.bB != null;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityVillager.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
@Override
|
||||
public void inactiveTick() {
|
||||
// SPIGOT-3874, SPIGOT-3894, SPIGOT-3846, SPIGOT-5286 :(
|
||||
- if (world.spigotConfig.tickInactiveVillagers && this.doAITick()) {
|
||||
- this.mobTick();
|
||||
+ // Paper start
|
||||
+ if (this.getUnhappy() > 0) {
|
||||
+ this.setUnhappy(this.getUnhappy() - 1);
|
||||
}
|
||||
+ if (this.doAITick()) {
|
||||
+ if (world.spigotConfig.tickInactiveVillagers) {
|
||||
+ this.mobTick();
|
||||
+ } else {
|
||||
+ this.mobTick(true);
|
||||
+ }
|
||||
+ }
|
||||
+ doReputationTick();
|
||||
+ // Paper end
|
||||
+
|
||||
super.inactiveTick();
|
||||
}
|
||||
// Spigot End
|
||||
|
||||
@Override
|
||||
- protected void mobTick() {
|
||||
+ protected void mobTick() { mobTick(false); }
|
||||
+ protected void mobTick(boolean inactive) {
|
||||
this.world.getMethodProfiler().enter("villagerBrain");
|
||||
- this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error
|
||||
+ if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper
|
||||
this.world.getMethodProfiler().exit();
|
||||
if (this.bF) {
|
||||
this.bF = false;
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
this.bv = null;
|
||||
}
|
||||
|
||||
- if (!this.isNoAI() && this.random.nextInt(100) == 0) {
|
||||
+ if (!inactive && !this.isNoAI() && this.random.nextInt(100) == 0) { // Paper
|
||||
Raid raid = ((WorldServer) this.world).b_(this.getChunkCoordinates());
|
||||
|
||||
if (raid != null && raid.v() && !raid.a()) {
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
if (this.getVillagerData().getProfession() == VillagerProfession.NONE && this.eN()) {
|
||||
this.eT();
|
||||
}
|
||||
+ if (inactive) return; // Paper
|
||||
|
||||
super.mobTick();
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
}
|
||||
}
|
||||
|
||||
+ private void doReputationTick() { fw(); } // Paper - OBFHELPER
|
||||
private void fw() {
|
||||
long i = this.world.getTime();
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityVillagerAbstract.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityVillagerAbstract extends EntityAgeable implements NP
|
||||
return super.prepare(worldaccess, difficultydamagescaler, enummobspawn, (GroupDataEntity) groupdataentity, nbttagcompound);
|
||||
}
|
||||
|
||||
+ public final int getUnhappy() { return eK(); } // Paper - OBFHELPER
|
||||
public int eK() {
|
||||
return (Integer) this.datawatcher.get(EntityVillagerAbstract.bp);
|
||||
}
|
||||
|
||||
+ public final void setUnhappy(int i) { s(i); } // Paper - OBFHELPER
|
||||
public void s(int i) {
|
||||
this.datawatcher.set(EntityVillagerAbstract.bp, i);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java
|
||||
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderGoalGotoTarget.java
|
||||
@@ -0,0 +0,0 @@ import java.util.EnumSet;
|
||||
|
||||
public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
|
||||
- protected final EntityCreature a;
|
||||
+ protected final EntityCreature a;public EntityCreature getEntity() { return a; } // Paper - OBFHELPER
|
||||
public final double b;
|
||||
protected int c;
|
||||
protected int d;
|
||||
private int g;
|
||||
- protected BlockPosition e;public final BlockPosition getTargetPosition() { return this.e; } // Paper - OBFHELPER
|
||||
+ protected BlockPosition e; public final BlockPosition getTargetPosition() { return this.e; } public void setTargetPosition(BlockPosition pos) { this.e = pos; getEntity().movingTarget = pos != BlockPosition.ZERO ? pos : null; } // Paper - OBFHELPER
|
||||
private boolean h;
|
||||
private final int i;
|
||||
private final int j;
|
||||
@@ -0,0 +0,0 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i) {
|
||||
this(entitycreature, d0, i, 1);
|
||||
}
|
||||
+ // Paper start - activation range improvements
|
||||
+ @Override
|
||||
+ public void onTaskReset() {
|
||||
+ super.onTaskReset();
|
||||
+ setTargetPosition(BlockPosition.ZERO);
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i, int j) {
|
||||
this.e = BlockPosition.ZERO;
|
||||
@@ -0,0 +0,0 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
blockposition_mutableblockposition.a((BaseBlockPosition) blockposition, i1, k - 1, j1);
|
||||
if (this.a.a((BlockPosition) blockposition_mutableblockposition) && this.a(this.a.world, blockposition_mutableblockposition)) {
|
||||
this.e = blockposition_mutableblockposition;
|
||||
+ setTargetPosition(blockposition_mutableblockposition.immutableCopy()); // Paper
|
||||
return true;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
};
|
||||
private final Map<PathfinderGoal.Type, PathfinderGoalWrapped> c = new EnumMap(PathfinderGoal.Type.class);
|
||||
- private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet();
|
||||
+ private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet(); private Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER
|
||||
private final Supplier<GameProfilerFiller> e;
|
||||
private final EnumSet<PathfinderGoal.Type> f = EnumSet.noneOf(PathfinderGoal.Type.class);
|
||||
- private int g = 3;
|
||||
+ private int g = 3;private int getTickRate() { return g; } // Paper - OBFHELPER
|
||||
+ private int curRate;private int getCurRate() { return curRate; } private void incRate() { this.curRate++; } // Paper TODO
|
||||
|
||||
public PathfinderGoalSelector(Supplier<GameProfilerFiller> supplier) {
|
||||
this.e = supplier;
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalSelector {
|
||||
this.d.add(new PathfinderGoalWrapped(i, pathfindergoal));
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ public boolean inactiveTick() {
|
||||
+ incRate();
|
||||
+ return getCurRate() % getTickRate() == 0;
|
||||
+ }
|
||||
+ public boolean hasTasks() {
|
||||
+ for (PathfinderGoalWrapped task : getTasks()) {
|
||||
+ if (task.isRunning()) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public void a(PathfinderGoal pathfindergoal) {
|
||||
this.d.stream().filter((pathfindergoalwrapped) -> {
|
||||
return pathfindergoalwrapped.j() == pathfindergoal;
|
||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java
|
||||
+++ b/src/main/java/net/minecraft/server/PathfinderGoalWrapped.java
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalWrapped extends PathfinderGoal {
|
||||
return this.a.i();
|
||||
}
|
||||
|
||||
+ public boolean isRunning() { return this.g(); } // Paper - OBFHELPER
|
||||
public boolean g() {
|
||||
return this.c;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
||||
public long ticksPerWaterSpawns;
|
||||
public long ticksPerWaterAmbientSpawns;
|
||||
public long ticksPerAmbientSpawns;
|
||||
+ // Paper start
|
||||
+ public int wakeupInactiveRemainingAnimals;
|
||||
+ public int wakeupInactiveRemainingFlying;
|
||||
+ public int wakeupInactiveRemainingMonsters;
|
||||
+ public int wakeupInactiveRemainingVillagers;
|
||||
+ // Paper end
|
||||
public boolean populating;
|
||||
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
--- a/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/WorldServer.java
|
||||
@@ -0,0 +0,0 @@ public class WorldServer extends World implements GeneratorAccessSeed {
|
||||
++TimingHistory.entityTicks; // Paper - timings
|
||||
// Spigot start
|
||||
@@ -439,62 +104,365 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
|
||||
}
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
public boolean Y;
|
||||
public boolean impulse;
|
||||
public int portalCooldown;
|
||||
- protected boolean inPortal;
|
||||
+ public boolean inPortal; // Paper - public
|
||||
protected int portalTicks;
|
||||
protected BlockPosition ac;
|
||||
private boolean invulnerable;
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
public final org.spigotmc.ActivationRange.ActivationType activationType = org.spigotmc.ActivationRange.initializeEntityActivationType(this);
|
||||
public final boolean defaultActivationState;
|
||||
public long activatedTick = Integer.MIN_VALUE;
|
||||
+ public boolean isTemporarilyActive = false; // Paper
|
||||
public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one
|
||||
protected int numCollisions = 0; // Paper
|
||||
public void inactiveTick() { }
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
this.recalcPosition();
|
||||
} else {
|
||||
if (enummovetype == EnumMoveType.PISTON) {
|
||||
+ this.activatedTick = MinecraftServer.currentTick + 20; // Paper
|
||||
vec3d = this.b(vec3d);
|
||||
if (vec3d.equals(Vec3D.ORIGIN)) {
|
||||
return;
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
this.x = Vec3D.ORIGIN;
|
||||
this.setMot(Vec3D.ORIGIN);
|
||||
}
|
||||
+ // Paper start - ignore movement changes while inactive.
|
||||
+ if (isTemporarilyActive && !(this instanceof EntityItem || this instanceof EntityMinecartAbstract) && vec3d == getMot() && enummovetype == EnumMoveType.SELF) {
|
||||
+ setMot(Vec3D.ORIGIN);
|
||||
+ this.world.getMethodProfiler().exit();
|
||||
+ return;
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
vec3d = this.a(vec3d, enummovetype);
|
||||
Vec3D vec3d1 = this.g(vec3d);
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
}
|
||||
}
|
||||
|
||||
+ public void syncPositionOf(Entity entity) { k(entity); } // Paper - OBFHELPER
|
||||
public void k(Entity entity) {
|
||||
this.a(entity, Entity::setPosition);
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
|
||||
return this.ae;
|
||||
}
|
||||
|
||||
+ public final boolean isPushedByWater() { return this.bV(); } // Paper - OBFHELPER - the below is not an obfhelper, don't use it!
|
||||
public boolean bV() {
|
||||
// Paper start
|
||||
return this.pushedByWater();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityCreature.java b/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityCreature.java
|
||||
@@ -0,0 +0,0 @@ import org.bukkit.event.entity.EntityUnleashEvent;
|
||||
public abstract class EntityCreature extends EntityInsentient {
|
||||
|
||||
public org.bukkit.craftbukkit.entity.CraftCreature getBukkitCreature() { return (org.bukkit.craftbukkit.entity.CraftCreature) super.getBukkitEntity(); } // Paper
|
||||
+ public BlockPosition movingTarget = null; public BlockPosition getMovingTarget() { return movingTarget; } // Paper
|
||||
|
||||
protected EntityCreature(EntityTypes<? extends EntityCreature> entitytypes, World world) {
|
||||
super(entitytypes, world);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityInsentient.java b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityInsentient.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
public MinecraftKey lootTableKey;
|
||||
public long lootTableSeed;
|
||||
@Nullable
|
||||
- private Entity leashHolder;
|
||||
+ public Entity leashHolder; // Paper - private -> public
|
||||
private int bx;
|
||||
@Nullable
|
||||
private NBTTagCompound by;
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityInsentient extends EntityLiving {
|
||||
return this.lookController;
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ @Override
|
||||
+ public void inactiveTick() {
|
||||
+ super.inactiveTick();
|
||||
+ if (this.goalSelector.inactiveTick()) {
|
||||
+ this.goalSelector.doTick();
|
||||
+ }
|
||||
+ if (this.targetSelector.inactiveTick()) {
|
||||
+ this.targetSelector.doTick();
|
||||
+ }
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public ControllerMove getControllerMove() {
|
||||
if (this.isPassenger() && this.getVehicle() instanceof EntityInsentient) {
|
||||
EntityInsentient entityinsentient = (EntityInsentient) this.getVehicle();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/EntityLiving.java b/src/main/java/net/minecraft/world/entity/EntityLiving.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/EntityLiving.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityLiving extends Entity {
|
||||
protected float aN;
|
||||
protected int aO;protected int getKillCount() { return this.aO; } // Paper - OBFHELPER
|
||||
public float lastDamage;
|
||||
- protected boolean jumping;
|
||||
+ public boolean jumping; // Paper protected -> public
|
||||
public float aR;
|
||||
public float aS;
|
||||
public float aT;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoal.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoal.java
|
||||
@@ -0,0 +0,0 @@ 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/world/entity/ai/goal/PathfinderGoalGotoTarget.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalGotoTarget.java
|
||||
@@ -0,0 +0,0 @@ import net.minecraft.world.level.IWorldReader;
|
||||
|
||||
public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
|
||||
- protected final EntityCreature a;
|
||||
+ protected final EntityCreature a;public EntityCreature getEntity() { return a; } // Paper - OBFHELPER
|
||||
public final double b;
|
||||
protected int c;
|
||||
protected int d;
|
||||
private int g;
|
||||
- protected BlockPosition e;public final BlockPosition getTargetPosition() { return this.e; } // Paper - OBFHELPER
|
||||
+ protected BlockPosition e; public final BlockPosition getTargetPosition() { return this.e; } public void setTargetPosition(BlockPosition pos) { this.e = pos; getEntity().movingTarget = pos != BlockPosition.ZERO ? pos : null; } // Paper - OBFHELPER
|
||||
private boolean h;
|
||||
private final int i;
|
||||
private final int j;
|
||||
@@ -0,0 +0,0 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i) {
|
||||
this(entitycreature, d0, i, 1);
|
||||
}
|
||||
+ // Paper start - activation range improvements
|
||||
+ @Override
|
||||
+ public void onTaskReset() {
|
||||
+ super.onTaskReset();
|
||||
+ setTargetPosition(BlockPosition.ZERO);
|
||||
+ }
|
||||
+ // Paper end
|
||||
|
||||
public PathfinderGoalGotoTarget(EntityCreature entitycreature, double d0, int i, int j) {
|
||||
this.e = BlockPosition.ZERO;
|
||||
@@ -0,0 +0,0 @@ public abstract class PathfinderGoalGotoTarget extends PathfinderGoal {
|
||||
blockposition_mutableblockposition.a((BaseBlockPosition) blockposition, i1, k - 1, j1);
|
||||
if (this.a.a((BlockPosition) blockposition_mutableblockposition) && this.a(this.a.world, blockposition_mutableblockposition)) {
|
||||
this.e = blockposition_mutableblockposition;
|
||||
+ setTargetPosition(blockposition_mutableblockposition.immutableCopy()); // Paper
|
||||
return true;
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalSelector.java
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalSelector {
|
||||
}
|
||||
};
|
||||
private final Map<PathfinderGoal.Type, PathfinderGoalWrapped> c = new EnumMap(PathfinderGoal.Type.class);
|
||||
- private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet();
|
||||
+ private final Set<PathfinderGoalWrapped> d = Sets.newLinkedHashSet(); private Set<PathfinderGoalWrapped> getTasks() { return d; }// Paper - OBFHELPER
|
||||
private final Supplier<GameProfilerFiller> e;
|
||||
private final EnumSet<PathfinderGoal.Type> f = EnumSet.noneOf(PathfinderGoal.Type.class);
|
||||
- private int g = 3;
|
||||
+ private int g = 3;private int getTickRate() { return g; } // Paper - OBFHELPER
|
||||
+ private int curRate;private int getCurRate() { return curRate; } private void incRate() { this.curRate++; } // Paper TODO
|
||||
|
||||
public PathfinderGoalSelector(Supplier<GameProfilerFiller> supplier) {
|
||||
this.e = supplier;
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalSelector {
|
||||
this.d.add(new PathfinderGoalWrapped(i, pathfindergoal));
|
||||
}
|
||||
|
||||
+ // Paper start
|
||||
+ public boolean inactiveTick() {
|
||||
+ incRate();
|
||||
+ return getCurRate() % getTickRate() == 0;
|
||||
+ }
|
||||
+ public boolean hasTasks() {
|
||||
+ for (PathfinderGoalWrapped task : getTasks()) {
|
||||
+ if (task.isRunning()) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+ return false;
|
||||
+ }
|
||||
+ // Paper end
|
||||
+
|
||||
public void a(PathfinderGoal pathfindergoal) {
|
||||
this.d.stream().filter((pathfindergoalwrapped) -> {
|
||||
return pathfindergoalwrapped.j() == pathfindergoal;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalWrapped.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalWrapped.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalWrapped.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalWrapped.java
|
||||
@@ -0,0 +0,0 @@ public class PathfinderGoalWrapped extends PathfinderGoal {
|
||||
return this.a.i();
|
||||
}
|
||||
|
||||
+ public boolean isRunning() { return this.g(); } // Paper - OBFHELPER
|
||||
public boolean g() {
|
||||
return this.c;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java
|
||||
@@ -0,0 +0,0 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
|
||||
return this.bC != null;
|
||||
}
|
||||
|
||||
+ public final boolean inCaravan() { return this.fC(); } // Paper - OBFHELPER
|
||||
public boolean fC() {
|
||||
return this.bB != null;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillager.java
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
@Override
|
||||
public void inactiveTick() {
|
||||
// SPIGOT-3874, SPIGOT-3894, SPIGOT-3846, SPIGOT-5286 :(
|
||||
- if (world.spigotConfig.tickInactiveVillagers && this.doAITick()) {
|
||||
- this.mobTick();
|
||||
+ // Paper start
|
||||
+ if (this.getUnhappy() > 0) {
|
||||
+ this.setUnhappy(this.getUnhappy() - 1);
|
||||
}
|
||||
+ if (this.doAITick()) {
|
||||
+ if (world.spigotConfig.tickInactiveVillagers) {
|
||||
+ this.mobTick();
|
||||
+ } else {
|
||||
+ this.mobTick(true);
|
||||
+ }
|
||||
+ }
|
||||
+ doReputationTick();
|
||||
+ // Paper end
|
||||
+
|
||||
super.inactiveTick();
|
||||
}
|
||||
// Spigot End
|
||||
|
||||
@Override
|
||||
- protected void mobTick() {
|
||||
+ protected void mobTick() { mobTick(false); }
|
||||
+ protected void mobTick(boolean inactive) {
|
||||
this.world.getMethodProfiler().enter("villagerBrain");
|
||||
- this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error
|
||||
+ if (!inactive) this.getBehaviorController().a((WorldServer) this.world, this); // CraftBukkit - decompile error // Paper
|
||||
this.world.getMethodProfiler().exit();
|
||||
if (this.bF) {
|
||||
this.bF = false;
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
this.bv = null;
|
||||
}
|
||||
|
||||
- if (!this.isNoAI() && this.random.nextInt(100) == 0) {
|
||||
+ if (!inactive && !this.isNoAI() && this.random.nextInt(100) == 0) { // Paper
|
||||
Raid raid = ((WorldServer) this.world).b_(this.getChunkCoordinates());
|
||||
|
||||
if (raid != null && raid.v() && !raid.a()) {
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
if (this.getVillagerData().getProfession() == VillagerProfession.NONE && this.eN()) {
|
||||
this.eT();
|
||||
}
|
||||
+ if (inactive) return; // Paper
|
||||
|
||||
super.mobTick();
|
||||
}
|
||||
@@ -0,0 +0,0 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
|
||||
}
|
||||
}
|
||||
|
||||
+ private void doReputationTick() { fw(); } // Paper - OBFHELPER
|
||||
private void fw() {
|
||||
long i = this.world.getTime();
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/EntityVillagerAbstract.java
|
||||
@@ -0,0 +0,0 @@ public abstract class EntityVillagerAbstract extends EntityAgeable implements NP
|
||||
return super.prepare(worldaccess, difficultydamagescaler, enummobspawn, (GroupDataEntity) groupdataentity, nbttagcompound);
|
||||
}
|
||||
|
||||
+ public final int getUnhappy() { return eK(); } // Paper - OBFHELPER
|
||||
public int eK() {
|
||||
return (Integer) this.datawatcher.get(EntityVillagerAbstract.bp);
|
||||
}
|
||||
|
||||
+ public final void setUnhappy(int i) { s(i); } // Paper - OBFHELPER
|
||||
public void s(int i) {
|
||||
this.datawatcher.set(EntityVillagerAbstract.bp, i);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/World.java b/src/main/java/net/minecraft/world/level/World.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/World.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/World.java
|
||||
@@ -0,0 +0,0 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
||||
public long ticksPerWaterSpawns;
|
||||
public long ticksPerWaterAmbientSpawns;
|
||||
public long ticksPerAmbientSpawns;
|
||||
+ // Paper start
|
||||
+ public int wakeupInactiveRemainingAnimals;
|
||||
+ public int wakeupInactiveRemainingFlying;
|
||||
+ public int wakeupInactiveRemainingMonsters;
|
||||
+ public int wakeupInactiveRemainingVillagers;
|
||||
+ // Paper end
|
||||
public boolean populating;
|
||||
public final org.spigotmc.SpigotWorldConfig spigotConfig; // Spigot
|
||||
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -0,0 +0,0 @@
|
||||
package org.spigotmc;
|
||||
|
||||
import java.util.Collection;
|
||||
+import java.util.List;
|
||||
+
|
||||
+import net.minecraft.server.Activity;
|
||||
import net.minecraft.server.AxisAlignedBB;
|
||||
+import net.minecraft.server.BehaviorController;
|
||||
+import net.minecraft.server.BlockPosition;
|
||||
import net.minecraft.server.Chunk;
|
||||
+import net.minecraft.server.ChunkProviderServer; // Paper
|
||||
import net.minecraft.server.Entity;
|
||||
import net.minecraft.server.EntityAmbient;
|
||||
import net.minecraft.server.EntityAnimal;
|
||||
import net.minecraft.server.EntityArrow;
|
||||
+import net.minecraft.server.EntityBee;
|
||||
import net.minecraft.server.EntityComplexPart;
|
||||
import net.minecraft.server.EntityCreature;
|
||||
import net.minecraft.server.EntityCreeper;
|
||||
import net.minecraft.server.EntityEnderCrystal;
|
||||
import net.minecraft.server.EntityEnderDragon;
|
||||
+import net.minecraft.server.EntityEnderSignal;
|
||||
import net.minecraft.server.EntityFallingBlock; // Paper
|
||||
import net.minecraft.server.EntityFireball;
|
||||
import net.minecraft.server.EntityFireworks;
|
||||
+import net.minecraft.server.EntityFlying;
|
||||
import net.minecraft.server.EntityHuman;
|
||||
import net.minecraft.server.EntityLightning;
|
||||
import net.minecraft.server.EntityLiving;
|
||||
import net.minecraft.server.EntityMonster;
|
||||
+import net.minecraft.server.EntityPillager;
|
||||
+import net.minecraft.server.EntityPlayer;
|
||||
import net.minecraft.server.EntityProjectile;
|
||||
import net.minecraft.server.EntityRaider;
|
||||
import net.minecraft.server.EntitySheep;
|
||||
@@ -0,0 +0,0 @@ import net.minecraft.server.EntityTNTPrimed;
|
||||
import net.minecraft.server.EntityThrownTrident;
|
||||
import net.minecraft.server.EntityVillager;
|
||||
import net.minecraft.server.EntityWither;
|
||||
+import net.minecraft.server.IMonster;
|
||||
import net.minecraft.server.MathHelper;
|
||||
+import net.minecraft.server.MemoryModuleType;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.World;
|
||||
@@ -0,0 +0,0 @@ import net.minecraft.world.level.chunk.Chunk;
|
||||
import net.minecraft.world.phys.AxisAlignedBB;
|
||||
import co.aikar.timings.MinecraftTimings;
|
||||
+// Paper start
|
||||
+import net.minecraft.server.EntityInsentient;
|
||||
+import net.minecraft.server.EntityLlama;
|
||||
+import net.minecraft.server.EntityWaterAnimal;
|
||||
+// Paper end
|
||||
|
||||
+// Paper start
|
||||
+import net.minecraft.core.BlockPosition;
|
||||
+import net.minecraft.server.level.ChunkProviderServer;
|
||||
+import net.minecraft.world.entity.EntityFlying;
|
||||
+import net.minecraft.world.entity.EntityInsentient;
|
||||
+import net.minecraft.world.entity.ai.BehaviorController;
|
||||
+import net.minecraft.world.entity.animal.EntityBee;
|
||||
+import net.minecraft.world.entity.animal.EntityWaterAnimal;
|
||||
+import net.minecraft.world.entity.animal.horse.EntityLlama;
|
||||
+import net.minecraft.world.entity.monster.EntityPillager;
|
||||
+import net.minecraft.world.entity.monster.IMonster;
|
||||
+import net.minecraft.world.entity.schedule.Activity;
|
||||
+import net.minecraft.world.entity.item.EntityFallingBlock;
|
||||
+import net.minecraft.world.entity.projectile.EntityEnderSignal;
|
||||
+// Paper end
|
||||
+
|
||||
public class ActivationRange
|
||||
{
|
||||
|
||||
@@ -742,7 +710,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ if ( entity instanceof EntityLlama && ( (EntityLlama ) entity ).inCaravan() )
|
||||
+ if ( entity instanceof EntityLlama && ( (EntityLlama) entity ).inCaravan() )
|
||||
{
|
||||
- return true;
|
||||
+ return 1;
|
||||
|
||||
Reference in New Issue
Block a user