示例#1
0
  @Override
  public void run() {
    // counter++;
    Spout.getInstance().playerListener.manager.onServerTick();
    Player[] online = Bukkit.getServer().getOnlinePlayers();
    for (Player player : online) {
      if (player instanceof SpoutCraftPlayer) {
        ((SpoutCraftPlayer) player).onTick();
      }
    }
    SpoutCraftChunk.updateTicks();
    ((SimpleMaterialManager) SpoutManager.getMaterialManager()).onTick();
    Spout.getInstance().getEntityTrackingManager().onTick();
    ServerTickEvent event = new ServerTickEvent();
    Bukkit.getServer().getPluginManager().callEvent(event);

    // if (counter % 20 == 0) {
    //	for (World world : Bukkit.getServer().getWorlds()) {
    //		Chunk[] chunks = world.getLoadedChunks();
    //		for (Chunk chunk : chunks) {
    //			if (SpoutCraftChunk.replaceBukkitChunk(chunk)) {
    //				System.out.println("Bad Chunk at (" + chunk.getX() + ", " + chunk.getZ());
    //			}
    //		}
    //	}
    // }
    // if (counter % 1200 == 0) { //check every min
    //	(SimpleChunkDataManager)SpoutManager.getChunkDataManager()).testFileTimeouts();
    // }
  }
  public void setPlayerChunk(int cx, int cz) {
    ChunkCoordIntPair cur = currentChunk.get();
    if (cur.x != cx || cur.z != cz) {
      currentChunk.set(new ChunkCoordIntPair(cx, cz));
      updateCounter.incrementAndGet();

      SpoutPlayer player = (SpoutPlayer) getPlayer();
      if (player != null && player.isSpoutCraftEnabled()) {
        Spout.getInstance().getPlayerTrackingManager().onMoveChunk((SpoutPlayer) getPlayer());
      }
    }
  }
 @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 public void onEntityDeath(EntityDeathEvent event) {
   if (event.getEntity() instanceof SpoutPlayer) {
     Location l = event.getEntity().getLocation();
     ((SpoutPlayer) event.getEntity())
         .sendPacket(new PacketWaypoint(l.getX(), l.getY(), l.getZ(), "", true));
     Bukkit.getServer()
         .getScheduler()
         .scheduleSyncDelayedTask(
             Spout.getInstance(), new PostDeath((SpoutCraftPlayer) event.getEntity()), 200);
   }
 }
 @Override
 public void a(Packet18ArmAnimation packet) {
   if (packet.a == -42) {
     SpoutCraftPlayer player = (SpoutCraftPlayer) SpoutCraftPlayer.getPlayer(getPlayer());
     player.setBuildVersion(1); // Don't know yet, just set above zero
     try {
       Spout.getInstance().playerListener.manager.onSpoutcraftEnable((SpoutPlayer) getPlayer());
     } catch (Exception e) {
       e.printStackTrace();
     }
   } else {
     super.a(packet);
   }
 }
 @Override
 public void a(Packet3Chat packet) {
   String chat = packet.message;
   if (chat.trim().isEmpty()) {
     return;
   }
   if (!allowReload && chat.equalsIgnoreCase("/reload")) {
     allowReload = true;
     SpoutCraftPlayer player = (SpoutCraftPlayer) SpoutCraftPlayer.getPlayer(getPlayer());
     if (!player.isSpoutCraftEnabled()) {
       player.sendMessage(ChatColor.RED + "Spout does not support the /reload command.");
       player.sendMessage(ChatColor.RED + "Unexpected behavior may occur.");
       player.sendMessage(ChatColor.RED + "We recommend using /stop and restarting.");
       player.sendMessage(ChatColor.RED + "Or you can use /spout reload to reload the config.");
       player.sendMessage(
           ChatColor.RED + "If you want to use /reload anyway, use the command again.");
     } else {
       Label warning =
           new DecayingLabel(
               200,
               ChatColor.RED
                   + "Spout does not support the /reload command."
                   + "\n"
                   + ChatColor.RED
                   + "Unexpected behavior may occur."
                   + "\n"
                   + ChatColor.RED
                   + "We recommend using /stop and restarting."
                   + " \n"
                   + ChatColor.RED
                   + "Or you can use /spout reload to reload the config."
                   + "\n"
                   + ChatColor.RED
                   + "If you want to use /reload anyway, use the command again.");
       warning.setX(100).setY(100).setPriority(RenderPriority.Lowest);
       player.getMainScreen().attachWidget(Spout.getInstance(), warning);
     }
     return;
   }
   super.a(packet);
 }