fix: npc not spawning on mojang downtime
This commit is contained in:
parent
780e7dc597
commit
91ba9794ac
4 changed files with 12 additions and 16 deletions
1
.vscode/settings.json
vendored
1
.vscode/settings.json
vendored
|
@ -10,6 +10,7 @@
|
||||||
"cliffbreak",
|
"cliffbreak",
|
||||||
"mkdir",
|
"mkdir",
|
||||||
"teamcolors",
|
"teamcolors",
|
||||||
|
"testremove",
|
||||||
"unban",
|
"unban",
|
||||||
"varo"
|
"varo"
|
||||||
],
|
],
|
||||||
|
|
|
@ -83,12 +83,7 @@ public class VaroCommand implements CommandExecutor {
|
||||||
sender.sendMessage(MessageUtils.getRichTextComponent("§5" + "Team 10", ""));
|
sender.sendMessage(MessageUtils.getRichTextComponent("§5" + "Team 10", ""));
|
||||||
} else if (args.length == 1 && args[0].equals("test")) {
|
} else if (args.length == 1 && args[0].equals("test")) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
try {
|
|
||||||
plugin.npcManager.createClone((Player) sender, false);
|
plugin.npcManager.createClone((Player) sender, false);
|
||||||
} catch (IOException e) {
|
|
||||||
sender.sendMessage(
|
|
||||||
"§c§lFehler:§r§c beim Verbinden mit der Mojang-API ist ein Fehler aufgetreten. Eventuell sind die Mojang Server down.");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
sender.sendMessage("§c§lFehler:§r§c Dieses Kommando kann nur durch einen Spieler ausgeführt werden.");
|
sender.sendMessage("§c§lFehler:§r§c Dieses Kommando kann nur durch einen Spieler ausgeführt werden.");
|
||||||
}
|
}
|
||||||
|
@ -103,7 +98,7 @@ public class VaroCommand implements CommandExecutor {
|
||||||
sender.sendMessage("§a/varo start: §rStarte das Varo Projekt!");
|
sender.sendMessage("§a/varo start: §rStarte das Varo Projekt!");
|
||||||
sender.sendMessage("§a/varo unban [Spieler]: §rSpieler wieder auf den Server lassen");
|
sender.sendMessage("§a/varo unban [Spieler]: §rSpieler wieder auf den Server lassen");
|
||||||
sender.sendMessage("§a/varo teamcolors: §rZeige verfügbare Team-Farben an");
|
sender.sendMessage("§a/varo teamcolors: §rZeige verfügbare Team-Farben an");
|
||||||
sender.sendMessage("§a/varo test: §rSpawne einen Klon");
|
sender.sendMessage("§a/varo test: §rErstelle einen Klon");
|
||||||
sender.sendMessage("§a/varo testremove: §rLösche den Klon");
|
sender.sendMessage("§a/varo testremove: §rLösche den Klon");
|
||||||
sender.sendMessage("\n§6==========================================");
|
sender.sendMessage("\n§6==========================================");
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,11 +27,7 @@ public class PlayerJoinQuitListener implements Listener {
|
||||||
@EventHandler()
|
@EventHandler()
|
||||||
public void onPlayerQuit(final PlayerQuitEvent e) {
|
public void onPlayerQuit(final PlayerQuitEvent e) {
|
||||||
e.setQuitMessage(null);
|
e.setQuitMessage(null);
|
||||||
try {
|
|
||||||
plugin.npcManager.createClone(e.getPlayer(), true);
|
plugin.npcManager.createClone(e.getPlayer(), true);
|
||||||
} catch (IOException ex) {
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
Bukkit.broadcast(
|
Bukkit.broadcast(
|
||||||
MessageUtils.getRichTextComponent(e.getPlayer().getName(), "§f hat den Server verlassen.", true));
|
MessageUtils.getRichTextComponent(e.getPlayer().getName(), "§f hat den Server verlassen.", true));
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import org.bukkit.craftbukkit.v1_15_R1.CraftServer;
|
||||||
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
import org.bukkit.craftbukkit.v1_15_R1.CraftWorld;
|
||||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scoreboard.Scoreboard;
|
import org.bukkit.scoreboard.Scoreboard;
|
||||||
import org.bukkit.scoreboard.Team;
|
import org.bukkit.scoreboard.Team;
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
|
@ -57,7 +58,7 @@ public class NPCManager {
|
||||||
this.afkTeam.setColor(ChatColor.GRAY);
|
this.afkTeam.setColor(ChatColor.GRAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createClone(final Player player, final boolean shouldHaveAFKPrefix) throws IOException {
|
public void createClone(final Player player, final boolean shouldHaveAFKPrefix) {
|
||||||
final Location location = player.getLocation();
|
final Location location = player.getLocation();
|
||||||
final MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
|
final MinecraftServer nmsServer = ((CraftServer) Bukkit.getServer()).getServer();
|
||||||
final WorldServer nmsWorld = ((CraftWorld) player.getWorld()).getHandle();
|
final WorldServer nmsWorld = ((CraftWorld) player.getWorld()).getHandle();
|
||||||
|
@ -72,7 +73,6 @@ public class NPCManager {
|
||||||
properties.get("signature").toString()));
|
properties.get("signature").toString()));
|
||||||
} catch (IOException | ParseException e) {
|
} catch (IOException | ParseException e) {
|
||||||
plugin.getLogger().info(e.getMessage());
|
plugin.getLogger().info(e.getMessage());
|
||||||
throw new IOException();
|
|
||||||
}
|
}
|
||||||
final EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, gameProfile,
|
final EntityPlayer npc = new EntityPlayer(nmsServer, nmsWorld, gameProfile,
|
||||||
new PlayerInteractManager(nmsWorld));
|
new PlayerInteractManager(nmsWorld));
|
||||||
|
@ -87,7 +87,12 @@ public class NPCManager {
|
||||||
|
|
||||||
for (Player connectionPlayer : Bukkit.getOnlinePlayers()) {
|
for (Player connectionPlayer : Bukkit.getOnlinePlayers()) {
|
||||||
final PlayerConnection connection = ((CraftPlayer) connectionPlayer).getHandle().playerConnection;
|
final PlayerConnection connection = ((CraftPlayer) connectionPlayer).getHandle().playerConnection;
|
||||||
|
new BukkitRunnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, npc));
|
connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, npc));
|
||||||
|
}
|
||||||
|
}.runTaskLater(plugin, 20);
|
||||||
connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
|
connection.sendPacket(new PacketPlayOutNamedEntitySpawn(npc));
|
||||||
connection.sendPacket(
|
connection.sendPacket(
|
||||||
new PacketPlayOutEntityHeadRotation(npc, (byte) ((location.getYaw() * 256.0F) / 360.0F)));
|
new PacketPlayOutEntityHeadRotation(npc, (byte) ((location.getYaw() * 256.0F) / 360.0F)));
|
||||||
|
@ -123,7 +128,6 @@ public class NPCManager {
|
||||||
|
|
||||||
for (Player connectionPlayer : Bukkit.getOnlinePlayers()) {
|
for (Player connectionPlayer : Bukkit.getOnlinePlayers()) {
|
||||||
final PlayerConnection connection = ((CraftPlayer) connectionPlayer).getHandle().playerConnection;
|
final PlayerConnection connection = ((CraftPlayer) connectionPlayer).getHandle().playerConnection;
|
||||||
connection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, npc));
|
|
||||||
connection.sendPacket(new PacketPlayOutEntityDestroy(npc.getId()));
|
connection.sendPacket(new PacketPlayOutEntityDestroy(npc.getId()));
|
||||||
}
|
}
|
||||||
this.players.remove(npc);
|
this.players.remove(npc);
|
||||||
|
|
Loading…
Reference in a new issue