SPIGOT-5797: Zombie(Villagers) Instant Convert based on their lifetime

This commit is contained in:
md_5 2020-06-24 08:52:40 +10:00
parent 8ea9b1386b
commit 7f3e7c3fbf
2 changed files with 18 additions and 4 deletions

View File

@ -24,19 +24,26 @@
public EntityZombie(EntityTypes<? extends EntityZombie> entitytypes, World world) {
super(entitytypes, world);
@@ -144,7 +154,11 @@
@@ -144,7 +154,10 @@
public void tick() {
if (!this.world.isClientSide && this.isAlive()) {
if (this.isDrownConverting()) {
- --this.drownedConversionTime;
+ // CraftBukkit start - Use wall time instead of ticks for conversion
+ int elapsedTicks = MinecraftServer.currentTick - this.lastTick;
+ this.lastTick = MinecraftServer.currentTick;
+ this.drownedConversionTime -= elapsedTicks;
+ // CraftBukkit end
if (this.drownedConversionTime < 0) {
this.ev();
}
@@ -161,6 +174,7 @@
}
super.tick();
+ this.lastTick = MinecraftServer.currentTick; // CraftBukkit
}
@Override
@@ -193,6 +207,7 @@
}

View File

@ -20,18 +20,25 @@
public EntityZombieVillager(EntityTypes<? extends EntityZombieVillager> entitytypes, World world) {
super(entitytypes, world);
@@ -75,6 +81,11 @@
@@ -75,6 +81,10 @@
public void tick() {
if (!this.world.isClientSide && this.isAlive() && this.isConverting()) {
int i = this.getConversionProgress();
+ // CraftBukkit start - Use wall time instead of ticks for villager conversion
+ int elapsedTicks = MinecraftServer.currentTick - this.lastTick;
+ this.lastTick = MinecraftServer.currentTick;
+ i *= elapsedTicks;
+ // CraftBukkit end
this.conversionTime -= i;
if (this.conversionTime <= 0) {
@@ -83,6 +93,7 @@
}
super.tick();
+ this.lastTick = MinecraftServer.currentTick; // CraftBukkit
}
@Override
@@ -123,8 +134,11 @@
this.conversionPlayer = uuid;
this.conversionTime = i;