public void onCommand(CommandSender sender, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage("You need to be a player to do this."); return; } if (args.length != 1) { MessageManager.getInstance().msg(sender, MessageManager.MessageType.WARN, super.getUsage()); } Player p = Bukkit.getPlayer(((Player) sender).getUniqueId()); if (args[0] == "s") { cm.set("ht", HubType.SINGLE); String world = p.getWorld().getName(); Double x = p.getLocation().getX(); Double y = p.getLocation().getY(); Double z = p.getLocation().getZ(); Float yaw = p.getLocation().getYaw(); Float pitch = p.getLocation().getPitch(); cm.set("hw", world); cm.set("hx", x); cm.set("hy", y); cm.set("hz", z); cm.set("hyw", yaw); cm.set("hph", pitch); MessageManager.getInstance() .msg(sender, MessageManager.MessageType.INFO, "Hub location set."); } else if (args[0] == "m") { MessageManager.getInstance() .msg(sender, MessageManager.MessageType.WARN, "We dont support multiple mode yet."); // TODO: Add multiple mode. } else { MessageManager.getInstance().msg(sender, MessageManager.MessageType.WARN, super.getUsage()); } }
@Override public void run() { int i = 0; while (!exitFlag) { Message m = new Message(); m.setAuthor("Test,author"); m.setText("test text " + i); m.setSource(Source.TEST); if (i % 3 == 0) { m.setHighlighted(true); } // BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // try { // m.setText(br.readLine()); // } catch (IOException e) { // logger.log(Level.WARNING, "Something goes wrong...", e); // } messageManager.sendMessage(m); Source[] sources = Source.values(); if (i % 5 == 0) { MessageManager.getInstance() .sendInfoMessage( new InfoMessage(sources[(i / 5) % sources.length], "test info message " + i)); } i++; synchronized (this) { try { wait(1000); } catch (InterruptedException e) { logger.log(Level.WARNING, "Something goes wrong...", e); } } } }
public class TestChatClient implements ChatClient, Runnable { private static final Logger logger = Logger.getLogger(TestChatClient.class.getName()); private MessageManager messageManager = MessageManager.getInstance(); boolean exitFlag = false; @Override public void goOffline() { exitFlag = true; } @Override public void goOnline() { Thread t = new Thread(this, "TestChatClient"); t.start(); } @Override public ChatClientStatus getStatus() { return null; } @Override public void run() { int i = 0; while (!exitFlag) { Message m = new Message(); m.setAuthor("Test,author"); m.setText("test text " + i); m.setSource(Source.TEST); if (i % 3 == 0) { m.setHighlighted(true); } // BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // try { // m.setText(br.readLine()); // } catch (IOException e) { // logger.log(Level.WARNING, "Something goes wrong...", e); // } messageManager.sendMessage(m); Source[] sources = Source.values(); if (i % 5 == 0) { MessageManager.getInstance() .sendInfoMessage( new InfoMessage(sources[(i / 5) % sources.length], "test info message " + i)); } i++; synchronized (this) { try { wait(1000); } catch (InterruptedException e) { logger.log(Level.WARNING, "Something goes wrong...", e); } } } } }
public static void exitApp() { if (prepareExisting) { return; } prepareExisting = true; MessageManager.getInstance() .syncNotify( MessageID.OBSERVER_APP, new MessageManager.Caller<IAppObserver>() { public void call() { try { // ob.IAppObserver_PrepareExitApp(); } catch (Throwable e) { } } }); // 异步一下,给已经发出还没执行的异步零延时observer一个执行的机会 MessageManager.getInstance() .asyncRun( new MessageManager.Runner() { @Override public void call() { isExiting = true; // 从此不能再发通知了 MessageManager.getInstance() .asyncRun( new MessageManager.Runner() { @Override public void call() { MessageManager.getInstance().silence(); // 从此延时通知直接丢掉不执行了 MessageManager.getInstance() .asyncRun( 500, new MessageManager.Runner() { @Override public void call() { android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); } }); } }); } }); }
public void addPlayer(Player p, int g) { Game game = getGame(g); if (game == null) { MessageManager.getInstance() .sendFMessage(PrefixType.ERROR, "error.input", p, "message-No game by this ID exist!"); return; } getGame(g).addPlayer(p); }
@Override protected void onInitialize(boolean isReconnect) { super.onInitialize(isReconnect); LOGD(TAG, "onInitialize " + isReconnect); setUpdateWhenScreenOn(true); if (!isReconnect) { mManager = MessageManager.getInstance(this); } }
@Override public void onLowMemory() { MessageManager.getInstance() .syncNotify( MessageID.OBSERVER_APP, new MessageManager.Caller<IAppObserver>() { @Override public void call() { // ob.IAppObserver_OnLowMemory(); } }); super.onLowMemory(); System.gc(); }
public class GameManager { static GameManager instance = new GameManager(); private ArrayList<Game> games = new ArrayList<Game>(); MessageManager msgmgr = MessageManager.getInstance(); Minigame plugin; private GameManager() {} public static GameManager getInstance() { return instance; } public void setup(Minigame plugin) { this.plugin = plugin; LoadGames(); } public Plugin getPlugin() { return plugin; } public void reloadGames() { LoadGames(); } /* * * * * RE-IMPLEMENT THIS PART * LEAVING AS A REFRENCE * * */ public void LoadGames() { FileConfiguration c = SettingsManager.getInstance().getSystemConfig(); games.clear(); int no = c.getInt("sg-system.arenano", 0); int loaded = 0; int a = 1; while (loaded < no) { if (c.isSet("sg-system.arenas." + a + ".x1")) { if (c.getBoolean("sg-system.arenas." + a + ".enabled")) { Minigame.$("Loading Arena: " + a); loaded++; games.add(new Game(a)); } } a++; } // LobbyManager.getInstance().clearAllSigns(); } public int getBlockGameId(Location v) { for (Game g : games) { if (g.isBlockInArena(v)) { return g.getID(); } } return -1; } public int getPlayerGameId(Player p) { for (Game g : games) { if (g.isPlayerActive(p)) { return g.getID(); } } return -1; } public int getPlayerSpectateId(Player p) { for (Game g : games) { if (g.isSpectator(p)) { return g.getID(); } } return -1; } public boolean isPlayerActive(Player player) { for (Game g : games) { if (g.isPlayerInactive(player)) { return true; } } return false; } public boolean isPlayerInactive(Player player) { for (Game g : games) { if (g.isPlayerInactive(player)) { return true; } } return false; } public boolean isSpectator(Player player) { for (Game g : games) { if (g.isSpectator(player)) { return true; } } return false; } public void removeFromOtherQueues(Player p, int id) { for (Game g : getGames()) { if (g.isInQueue(p) && g.getID() != id) { g.removeFromQueue(p); msgmgr.sendMessage(PrefixType.INFO, "Removed from the queue in arena " + g.getID(), p); } } } public int getGameCount() { return games.size(); } public Game getGame(int a) { // int t = gamemap.get(a); for (Game g : games) { if (g.getID() == a) { return g; } } return null; } public void removePlayer(Player p, boolean b) { for (Game g : games) { if (g.getAllPlayers().contains(p)) { // PlayerLeaveArenaEvent leavearena = new PlayerLeaveArenaEvent(p, g); // Bukkit.getServer().getPluginManager().callEvent(leavearena); } } getGame(getPlayerGameId(p)).removePlayer(p, b); } public void removeSpectator(Player p) { getGame(getPlayerSpectateId(p)).removeSpectator(p); } public void disableGame(int id) { getGame(id).disable(); } public void enableGame(int id) { getGame(id).enable(); } public ArrayList<Game> getGames() { return games; } public GameState getGameMode(int a) { for (Game g : games) { if (g.getID() == a) { return g.getState(); } } return null; } // TODO: Actually make this countdown correctly public void startGame(int a) { getGame(a).countdown(10); } public void addPlayer(Player p, int g) { Game game = getGame(g); if (game == null) { MessageManager.getInstance() .sendFMessage(PrefixType.ERROR, "error.input", p, "message-No game by this ID exist!"); return; } getGame(g).addPlayer(p); } /* public void autoAddPlayer(Player pl) { ArrayList < Game > qg = new ArrayList < Game > (5); for (Game g: games) { if (g.getMode() == Game.GameMode.WAITING) qg.add(g); } //TODO: fancy auto balance algorithm if (qg.size() == 0) { pl.sendMessage(ChatColor.RED + "No games to join"); msgmgr.sendMessage(PrefixType.WARNING, "No games to join!", pl); return; } qg.get(0).addPlayer(pl); }*/ public WorldEditPlugin getWorldEdit() { return plugin.getWorldEdit(); } public void createArenaFromSelection(Player pl) { FileConfiguration c = SettingsManager.getInstance().getSystemConfig(); // SettingsManager s = SettingsManager.getInstance(); WorldEditPlugin we = getWorldEdit(); Selection sel = we.getSelection(pl); if (sel == null) { msgmgr.sendMessage(PrefixType.WARNING, "You must make a WorldEdit Selection first!", pl); return; } Location max = sel.getMaximumPoint(); Location min = sel.getMinimumPoint(); /* if(max.getWorld()!=SettingsManager.getGameWorld() || min.getWorld()!=SettingsManager.getGameWorld()){ pl.sendMessage(ChatColor.RED+"Wrong World!"); return; }*/ /* * * * * RE-IMPLEMENT THIS PART * LEAVING AS A REFRENCE * * */ int no = c.getInt("sg-system.arenano") + 1; c.set("sg-system.arenano", no); if (games.size() == 0) { no = 1; } else no = games.get(games.size() - 1).getID() + 1; SettingsManager.getInstance().getSpawns().set(("spawns." + no), null); c.set("sg-system.arenas." + no + ".world", max.getWorld().getName()); c.set("sg-system.arenas." + no + ".x1", max.getBlockX()); c.set("sg-system.arenas." + no + ".y1", max.getBlockY()); c.set("sg-system.arenas." + no + ".z1", max.getBlockZ()); c.set("sg-system.arenas." + no + ".x2", min.getBlockX()); c.set("sg-system.arenas." + no + ".y2", min.getBlockY()); c.set("sg-system.arenas." + no + ".z2", min.getBlockZ()); c.set("sg-system.arenas." + no + ".enabled", true); SettingsManager.getInstance().saveSystemConfig(); hotAddArena(no); pl.sendMessage(ChatColor.GREEN + "Arena ID " + no + " Succesfully added"); } private void hotAddArena(int no) { Game game = new Game(no); games.add(game); // StatsManager.getInstance().addArena(no); // Assassins.$("game added "+ games.size()+" // "+SettingsManager.getInstance().getSystemConfig().getInt("gs-system.arenano")); } public void hotRemoveArena(int no) { for (Game g : games.toArray(new Game[0])) { if (g.getID() == no) { games.remove(getGame(no)); } } } public void gameEndCallBack(int id) {} public String getStringList(int gid) { Game g = getGame(gid); StringBuilder sb = new StringBuilder(); Player[][] players = g.getPlayers(); sb.append( ChatColor.GREEN + "<---------------------[ Alive: " + players[0].length + " ]--------------------->\n" + ChatColor.GREEN + " "); for (Player p : players[0]) { sb.append(p.getName() + ","); } sb.append("\n\n"); sb.append( ChatColor.RED + "<---------------------[ Dead: " + players[1].length + " ]---------------------->\n" + ChatColor.GREEN + " "); for (Player p : players[1]) { sb.append(p.getName() + ","); } sb.append("\n\n"); return sb.toString(); } }