Fix portal removal timing

This commit is contained in:
fullwall 2020-04-29 19:18:16 +08:00
parent a269bf1ccc
commit bbf3f281eb
3 changed files with 30 additions and 3 deletions

View File

@ -145,6 +145,7 @@ public class SkinTrait extends Trait {
* Sets the skin data directly, respawning the NPC if spawned
*
* @param skinName
* Skin name, for caching purposes
* @param signature
* {@link #getSignature()}
* @param data

View File

@ -11,6 +11,7 @@ import org.bukkit.Location;
import org.bukkit.craftbukkit.v1_15_R1.CraftServer;
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause;
import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin;
import org.bukkit.util.Vector;
@ -45,6 +46,7 @@ import net.minecraft.server.v1_15_R1.AttributeInstance;
import net.minecraft.server.v1_15_R1.BlockPosition;
import net.minecraft.server.v1_15_R1.ChatComponentText;
import net.minecraft.server.v1_15_R1.DamageSource;
import net.minecraft.server.v1_15_R1.DimensionManager;
import net.minecraft.server.v1_15_R1.Entity;
import net.minecraft.server.v1_15_R1.EntityHuman;
import net.minecraft.server.v1_15_R1.EntityPlayer;
@ -77,8 +79,8 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
private final CitizensNPC npc;
private final Location packetLocationCache = new Location(null, 0, 0, 0);
private final SkinPacketTracker skinTracker;
private int updateCounter = 0;
private int yawUpdateRequiredTicks;
public EntityHumanNPC(MinecraftServer minecraftServer, WorldServer world, GameProfile gameProfile,
PlayerInteractManager playerInteractManager, NPC npc) {
@ -316,7 +318,22 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
}
public void livingEntityBaseTick() {
// doPortalTick code
boolean old = this.af;
if (af && ag + 1 > ab()) {
af = false;
Bukkit.getServer().getScheduler().runTask(CitizensAPI.getPlugin(), new Runnable() {
@Override
public void run() {
portalCooldown = ba();
a(world.worldProvider.getDimensionManager().getType() == DimensionManager.NETHER
? DimensionManager.OVERWORLD
: DimensionManager.NETHER, TeleportCause.NETHER_PORTAL);
}
});
}
entityBaseTick();
af = old;
this.az = this.aA;
if (this.hurtTicks > 0) {
this.hurtTicks -= 1;
@ -381,7 +398,7 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
}
public void setTargetLook(Location target) {
controllerLook.a(target.getX(), target.getY(), target.getZ(), 10, 40);
controllerLook.a(target.getX(), target.getY(), target.getZ());
}
public void setTracked() {
@ -423,6 +440,16 @@ public class EntityHumanNPC extends EntityPlayer implements NPCHolder, Skinnable
}
npc.update();
/*
double diff = this.yaw - this.aK;
if (diff != 40 && diff != -40) {
++this.yawUpdateRequiredTicks;
}
if (this.yawUpdateRequiredTicks > 5) {
this.yaw = (diff > -40 && diff < 0) || (diff > 0 && diff > 40) ? this.aK - 40 : this.aK + 40;
this.yawUpdateRequiredTicks = 0;
}
*/
}
public void updateAI() {

View File

@ -34,7 +34,6 @@ public class PlayerControllerLook {
// this.a.yaw = MathHelper.b(this.a.yaw, this.a.aK, 40F);
// this.a.aK = this.a(this.a.aK, this.a.aI, 10.0F);
}
if (!this.a.getNavigation().m()) {
this.a.aK = MathHelper.b(this.a.aK, this.a.aI, 75);
}