Fixed bugs related to entity tracer.

Added chaseAttacker code that should be run inside tick() to chase last attacker.
This commit is contained in:
BuildTools committed 2021-06-27 00:23:49 +03:00
1 parent b815afbf6a
commit ef7396726f
2 files changed
+24 -6

No files matched your search

+3 -1
View File
@@ -5,12 +5,14 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity;
import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitRunnable;
import plugin.mrtransistor.AFK.commands.RemoveAllBots;
import plugin.mrtransistor.AFK.commands.RemoveBot;
import plugin.mrtransistor.AFK.commands.SpawnBot;
@@ -42,7 +44,7 @@ public class AFK extends JavaPlugin implements Listener {
}
}
}
}.runTaskTimer(this, 0, 20);*/
}.runTaskTimer(this, 0, 15);*/
getLogger().info("AFK plugin started!");
}
+21 -5
View File
@@ -3,9 +3,7 @@ package plugin.mrtransistor.AFK;
import com.mojang.authlib.GameProfile;
import com.mojang.authlib.properties.Property;
import net.minecraft.server.v1_16_R3.*;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.*;
import org.bukkit.World;
import org.bukkit.craftbukkit.v1_16_R3.CraftServer;
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
@@ -18,6 +16,7 @@ import org.bukkit.util.RayTraceResult;
import org.bukkit.util.Vector;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Predicate;
@@ -73,11 +72,28 @@ public class DummyPlayer extends EntityPlayer {
this.playerConnection.syncPosition();
this.getWorldServer().getChunkProvider().movePlayer(this);
}
super.tick();
this.playerTick();
}
//TODO: fix hitting through blocks (add block raytracing)
public void chaseAttacker(){
Player bukkitPlayer = this.getBukkitEntity();
EntityLiving damager = this.getLastDamager();
if(damager == null) return;
Vector toTarget = this.getBukkitEntity().getEyeLocation().toVector().subtract(((LivingEntity)damager.getBukkitEntity()).getEyeLocation().toVector()).normalize();
float yaw = (float) Math.atan2(toTarget.getX(), -toTarget.getZ());
float pitch = (float) Math.atan2(toTarget.getY(), Math.sqrt(toTarget.getX()*toTarget.getX() + toTarget.getZ()*toTarget.getZ()));
yaw *= 180/Math.PI;
pitch *= 180/Math.PI;
this.getBukkitEntity().getServer().getLogger().info(pitch + "");
this.setYawPitch(yaw, pitch);
this.setHeadRotation(yaw);
this.g(new Vec3D(0, 0, 1));
}
public LivingEntity getTargetedLivingEntity() {
Player bukkitPlayer = this.getBukkitEntity();
World world = bukkitPlayer.getWorld();
@@ -86,7 +102,7 @@ public class DummyPlayer extends EntityPlayer {
Predicate<org.bukkit.entity.Entity> filter = entity -> !entity.equals(bukkitPlayer);
double reach = this.playerConnection.getPlayer().getGameMode() == GameMode.CREATIVE ? 4.5 : 3;
RayTraceResult trace = world.rayTraceEntities(eyePos, eyeDirection, reach, filter);
RayTraceResult trace = world.rayTrace(eyePos, eyeDirection, reach, FluidCollisionMode.NEVER, true, 0, filter);
if (trace == null) return null;
Entity hitEntity = trace.getHitEntity();
if (hitEntity instanceof LivingEntity)