13
0

Fix NPE
Alle Prüfungen waren erfolgreich
SteamWarCI Build successful

Dieser Commit ist enthalten in:
yoyosource 2022-03-26 14:38:39 +01:00
Ursprung be861b6bbf
Commit c6beebed05
2 geänderte Dateien mit 43 neuen und 2 gelöschten Zeilen

Datei anzeigen

@ -221,8 +221,10 @@ public class NPC {
private void move(Player player) {
TinyProtocol.instance.sendPacket(player, headRotation);
if (move != null) {
TinyProtocol.instance.sendPacket(player, move);
}
}
public void delete() {
display.delete();

Datei anzeigen

@ -23,6 +23,7 @@ import de.steamwar.lobby.LobbySystem;
import de.steamwar.lobby.display.NPC;
import de.steamwar.lobby.listener.BasicListener;
import de.steamwar.sql.SteamwarUser;
import lombok.AllArgsConstructor;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
@ -35,12 +36,37 @@ import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
public class TeamPlayer extends BasicListener {
@AllArgsConstructor
private static class Cuboid {
private double x1;
private double y1;
private double z1;
private double x2;
private double y2;
private double z2;
public boolean contains(Location location) {
return location.getX() >= x1 && location.getX() <= x2 && location.getY() >= y1 && location.getY() <= y2 && location.getZ() >= z1 && location.getZ() <= z2;
}
}
private static final List<Cuboid> cuboids = new ArrayList<>();
static {
cuboids.add(new Cuboid(1509, 52, 1464, 1510, 58, 1469));
cuboids.add(new Cuboid(1538, 52, 1464, 1539, 58, 1469));
cuboids.add(new Cuboid(1518, 55, 1433, 1530, 60, 1434));
cuboids.add(new Cuboid(1587, 52, 1471, 1588, 56, 1475));
cuboids.add(new Cuboid(1479, 52, 1461, 1478, 56, 1463));
}
private static final World world = Bukkit.getWorlds().get(0);
private static final Map<String, NPC> entities = new HashMap<>();
@ -53,7 +79,7 @@ public class TeamPlayer extends BasicListener {
villager.setInvulnerable(true);
villager.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1, false, false, false));
villager.setCustomName(name);
villager.setProfession(Villager.Profession.NITWIT);
villager.setProfession(Villager.Profession.NONE);
entities.put(name, npc);
}
@ -85,12 +111,25 @@ public class TeamPlayer extends BasicListener {
world.getEntitiesByClasses(Villager.class).forEach(entity -> {
NPC npc = entities.get(entity.getName());
if (npc != null) {
if (illegalLocation(entity.getLocation())) {
entity.teleport(npc.getLocation());
return;
}
npc.setLocation(entity.getLocation());
}
});
}, 1L, 1L);
}
private boolean illegalLocation(Location location) {
for (Cuboid cuboid : cuboids) {
if (cuboid.contains(location)) {
return true;
}
}
return false;
}
@EventHandler
public void onEntityInteract(EntityInteractEvent event) {
if (event.getEntityType() == EntityType.VILLAGER) {