001 package org.bukkit;
002
003 import java.awt.image.BufferedImage;
004 import java.io.File;
005 import java.util.Collection;
006 import java.util.Iterator;
007 import java.util.List;
008 import java.util.Map;
009 import java.util.Set;
010 import java.util.UUID;
011 import java.util.logging.Logger;
012
013 import org.bukkit.Warning.WarningState;
014 import org.bukkit.command.CommandException;
015 import org.bukkit.command.CommandSender;
016 import org.bukkit.command.ConsoleCommandSender;
017 import org.bukkit.command.PluginCommand;
018 import org.bukkit.entity.Player;
019 import org.bukkit.event.inventory.InventoryType;
020 import org.bukkit.help.HelpMap;
021 import org.bukkit.inventory.ItemStack;
022 import org.bukkit.inventory.Inventory;
023 import org.bukkit.inventory.InventoryHolder;
024 import org.bukkit.inventory.ItemFactory;
025 import org.bukkit.inventory.Recipe;
026 import org.bukkit.map.MapView;
027 import org.bukkit.plugin.PluginManager;
028 import org.bukkit.plugin.ServicesManager;
029 import org.bukkit.plugin.messaging.Messenger;
030 import org.bukkit.scheduler.BukkitScheduler;
031 import org.bukkit.scoreboard.ScoreboardManager;
032 import org.bukkit.util.CachedServerIcon;
033
034 import com.avaje.ebean.config.ServerConfig;
035
036 /**
037 * Represents the Bukkit core, for version and Server singleton handling
038 */
039 public final class Bukkit {
040 private static Server server;
041
042 /**
043 * Static class cannot be initialized.
044 */
045 private Bukkit() {}
046
047 /**
048 * Gets the current {@link Server} singleton
049 *
050 * @return Server instance being ran
051 */
052 public static Server getServer() {
053 return server;
054 }
055
056 /**
057 * Attempts to set the {@link Server} singleton.
058 * <p>
059 * This cannot be done if the Server is already set.
060 *
061 * @param server Server instance
062 */
063 public static void setServer(Server server) {
064 if (Bukkit.server != null) {
065 throw new UnsupportedOperationException("Cannot redefine singleton Server");
066 }
067
068 Bukkit.server = server;
069 server.getLogger().info("This server is running " + getName() + " version " + getVersion() + " (Implementing API version " + getBukkitVersion() + ")");
070 }
071
072 /**
073 * @see Server#getName()
074 */
075 public static String getName() {
076 return server.getName();
077 }
078
079 /**
080 * @see Server#getVersion()
081 */
082 public static String getVersion() {
083 return server.getVersion();
084 }
085
086 /**
087 * @see Server#getBukkitVersion()
088 */
089 public static String getBukkitVersion() {
090 return server.getBukkitVersion();
091 }
092
093 /**
094 * This method exists for legacy reasons to provide backwards
095 * compatibility. It will not exist at runtime and should not be used
096 * under any circumstances.
097 *
098 * @Deprecated
099 * @see Server#_INVALID_getOnlinePlayers()
100 */
101 @Deprecated
102 public static Player[] _INVALID_getOnlinePlayers() {
103 return server._INVALID_getOnlinePlayers();
104 }
105
106 /**
107 * @see Server#getOnlinePlayers()
108 */
109 public static Collection<? extends Player> getOnlinePlayers() {
110 return server.getOnlinePlayers();
111 }
112
113 /**
114 * @see Server#getMaxPlayers()
115 */
116 public static int getMaxPlayers() {
117 return server.getMaxPlayers();
118 }
119
120 /**
121 * @see Server#getPort()
122 */
123 public static int getPort() {
124 return server.getPort();
125 }
126
127 /**
128 * @see Server#getViewDistance()
129 */
130 public static int getViewDistance() {
131 return server.getViewDistance();
132 }
133
134 /**
135 * @see Server#getIp()
136 */
137 public static String getIp() {
138 return server.getIp();
139 }
140
141 /**
142 * @see Server#getServerName()
143 */
144 public static String getServerName() {
145 return server.getServerName();
146 }
147
148 /**
149 * @see Server#getServerId()
150 */
151 public static String getServerId() {
152 return server.getServerId();
153 }
154
155 /**
156 * @see Server#getWorldType()
157 */
158 public static String getWorldType() {
159 return server.getWorldType();
160 }
161
162 /**
163 * @see Server#getGenerateStructures()
164 */
165 public static boolean getGenerateStructures() {
166 return server.getGenerateStructures();
167 }
168
169 /**
170 * @see Server#getAllowNether()
171 */
172 public static boolean getAllowNether() {
173 return server.getAllowNether();
174 }
175
176 /**
177 * @see Server#hasWhitelist()
178 */
179 public static boolean hasWhitelist() {
180 return server.hasWhitelist();
181 }
182
183 /**
184 * @see Server#broadcastMessage(String message)
185 */
186 public static int broadcastMessage(String message) {
187 return server.broadcastMessage(message);
188 }
189
190 /**
191 * @see Server#getUpdateFolder()
192 */
193 public static String getUpdateFolder() {
194 return server.getUpdateFolder();
195 }
196
197 /**
198 * @see Server#getPlayer(String name)
199 */
200 @Deprecated
201 public static Player getPlayer(String name) {
202 return server.getPlayer(name);
203 }
204
205 /**
206 * @see Server#matchPlayer(String name)
207 */
208 @Deprecated
209 public static List<Player> matchPlayer(String name) {
210 return server.matchPlayer(name);
211 }
212
213 /**
214 * @see Server#getPlayer(java.util.UUID)
215 */
216 public static Player getPlayer(UUID id) {
217 return server.getPlayer(id);
218 }
219
220 /**
221 * @see Server#getPluginManager()
222 */
223 public static PluginManager getPluginManager() {
224 return server.getPluginManager();
225 }
226
227 /**
228 * @see Server#getScheduler()
229 */
230 public static BukkitScheduler getScheduler() {
231 return server.getScheduler();
232 }
233
234 /**
235 * @see Server#getServicesManager()
236 */
237 public static ServicesManager getServicesManager() {
238 return server.getServicesManager();
239 }
240
241 /**
242 * @see Server#getWorlds()
243 */
244 public static List<World> getWorlds() {
245 return server.getWorlds();
246 }
247
248 /**
249 * @see Server#createWorld(WorldCreator options)
250 */
251 public static World createWorld(WorldCreator options) {
252 return server.createWorld(options);
253 }
254
255 /**
256 * @see Server#unloadWorld(String name, boolean save)
257 */
258 public static boolean unloadWorld(String name, boolean save) {
259 return server.unloadWorld(name, save);
260 }
261
262 /**
263 * @see Server#unloadWorld(World world, boolean save)
264 */
265 public static boolean unloadWorld(World world, boolean save) {
266 return server.unloadWorld(world, save);
267 }
268
269 /**
270 * @see Server#getWorld(String name)
271 */
272 public static World getWorld(String name) {
273 return server.getWorld(name);
274 }
275
276 /**
277 * @see Server#getWorld(UUID uid)
278 */
279 public static World getWorld(UUID uid) {
280 return server.getWorld(uid);
281 }
282
283 /**
284 * @see Server#getMap(short id)
285 * @deprecated Magic value
286 */
287 @Deprecated
288 public static MapView getMap(short id) {
289 return server.getMap(id);
290 }
291
292 /**
293 * @see Server#createMap(World world)
294 */
295 public static MapView createMap(World world) {
296 return server.createMap(world);
297 }
298
299 /**
300 * @see Server#reload()
301 */
302 public static void reload() {
303 server.reload();
304 }
305
306 /**
307 * @see Server#getLogger()
308 */
309 public static Logger getLogger() {
310 return server.getLogger();
311 }
312
313 /**
314 * @see Server#getPluginCommand(String name)
315 */
316 public static PluginCommand getPluginCommand(String name) {
317 return server.getPluginCommand(name);
318 }
319
320 /**
321 * @see Server#savePlayers()
322 */
323 public static void savePlayers() {
324 server.savePlayers();
325 }
326
327 /**
328 * @see Server#dispatchCommand(CommandSender sender, String commandLine)
329 */
330 public static boolean dispatchCommand(CommandSender sender, String commandLine) throws CommandException {
331 return server.dispatchCommand(sender, commandLine);
332 }
333
334 /**
335 * @see Server#configureDbConfig(ServerConfig config)
336 */
337 public static void configureDbConfig(ServerConfig config) {
338 server.configureDbConfig(config);
339 }
340
341 /**
342 * @see Server#addRecipe(Recipe recipe)
343 */
344 public static boolean addRecipe(Recipe recipe) {
345 return server.addRecipe(recipe);
346 }
347
348 /**
349 * @see Server#getRecipesFor(ItemStack result)
350 */
351 public static List<Recipe> getRecipesFor(ItemStack result) {
352 return server.getRecipesFor(result);
353 }
354
355 /**
356 * @see Server#recipeIterator()
357 */
358 public static Iterator<Recipe> recipeIterator() {
359 return server.recipeIterator();
360 }
361
362 /**
363 * @see Server#clearRecipes()
364 */
365 public static void clearRecipes() {
366 server.clearRecipes();
367 }
368
369 /**
370 * @see Server#resetRecipes()
371 */
372 public static void resetRecipes() {
373 server.resetRecipes();
374 }
375
376 /**
377 * @see Server#getCommandAliases()
378 */
379 public static Map<String, String[]> getCommandAliases() {
380 return server.getCommandAliases();
381 }
382
383 /**
384 * @see Server#getSpawnRadius()
385 */
386 public static int getSpawnRadius() {
387 return server.getSpawnRadius();
388 }
389
390 /**
391 * @see Server#setSpawnRadius(int value)
392 */
393 public static void setSpawnRadius(int value) {
394 server.setSpawnRadius(value);
395 }
396
397 /**
398 * @see Server#getOnlineMode()
399 */
400 public static boolean getOnlineMode() {
401 return server.getOnlineMode();
402 }
403
404 /**
405 * @see Server#getAllowFlight()
406 */
407 public static boolean getAllowFlight() {
408 return server.getAllowFlight();
409 }
410
411 /**
412 * @see Server#isHardcore()
413 */
414 public static boolean isHardcore() {
415 return server.isHardcore();
416 }
417
418 /**
419 * @see Server#shutdown()
420 */
421 public static void shutdown() {
422 server.shutdown();
423 }
424
425 /**
426 * @see Server#broadcast(String message, String permission)
427 */
428 public static int broadcast(String message, String permission) {
429 return server.broadcast(message, permission);
430 }
431
432 /**
433 * @see Server#getOfflinePlayer(String name)
434 */
435 @Deprecated
436 public static OfflinePlayer getOfflinePlayer(String name) {
437 return server.getOfflinePlayer(name);
438 }
439
440 /**
441 * @see Server#getOfflinePlayer(java.util.UUID)
442 */
443 public static OfflinePlayer getOfflinePlayer(UUID id) {
444 return server.getOfflinePlayer(id);
445 }
446
447 /**
448 * @see Server#getPlayerExact(String name)
449 */
450 @Deprecated
451 public static Player getPlayerExact(String name) {
452 return server.getPlayerExact(name);
453 }
454
455 /**
456 * @see Server#getIPBans()
457 */
458 public static Set<String> getIPBans() {
459 return server.getIPBans();
460 }
461
462 /**
463 * @see Server#banIP(String address)
464 */
465 public static void banIP(String address) {
466 server.banIP(address);
467 }
468
469 /**
470 * @see Server#unbanIP(String address)
471 */
472 public static void unbanIP(String address) {
473 server.unbanIP(address);
474 }
475
476 /**
477 * @see Server#getBannedPlayers()
478 */
479 public static Set<OfflinePlayer> getBannedPlayers() {
480 return server.getBannedPlayers();
481 }
482
483 /**
484 * @see Server#getBanList(BanList.Type)
485 */
486 public static BanList getBanList(BanList.Type type){
487 return server.getBanList(type);
488 }
489
490 /**
491 * @see Server#setWhitelist(boolean value)
492 */
493 public static void setWhitelist(boolean value) {
494 server.setWhitelist(value);
495 }
496
497 /**
498 * @see Server#getWhitelistedPlayers()
499 */
500 public static Set<OfflinePlayer> getWhitelistedPlayers() {
501 return server.getWhitelistedPlayers();
502 }
503
504 /**
505 * @see Server#reloadWhitelist()
506 */
507 public static void reloadWhitelist() {
508 server.reloadWhitelist();
509 }
510
511 /**
512 * @see Server#getConsoleSender()
513 */
514 public static ConsoleCommandSender getConsoleSender() {
515 return server.getConsoleSender();
516 }
517
518 /**
519 * @see Server#getOperators()
520 */
521 public static Set<OfflinePlayer> getOperators() {
522 return server.getOperators();
523 }
524
525 /**
526 * @see Server#getWorldContainer()
527 */
528 public static File getWorldContainer() {
529 return server.getWorldContainer();
530 }
531
532 /**
533 * @see Server#getMessenger()
534 */
535 public static Messenger getMessenger() {
536 return server.getMessenger();
537 }
538
539 /**
540 * @see Server#getAllowEnd()
541 */
542 public static boolean getAllowEnd() {
543 return server.getAllowEnd();
544 }
545
546 /**
547 * @see Server#getUpdateFolderFile()
548 */
549 public static File getUpdateFolderFile() {
550 return server.getUpdateFolderFile();
551 }
552
553 /**
554 * @see Server#getConnectionThrottle()
555 */
556 public static long getConnectionThrottle() {
557 return server.getConnectionThrottle();
558 }
559
560 /**
561 * @see Server#getTicksPerAnimalSpawns()
562 */
563 public static int getTicksPerAnimalSpawns() {
564 return server.getTicksPerAnimalSpawns();
565 }
566
567 /**
568 * @see Server#getTicksPerMonsterSpawns()
569 */
570 public static int getTicksPerMonsterSpawns() {
571 return server.getTicksPerMonsterSpawns();
572 }
573
574 /**
575 * @see Server#useExactLoginLocation()
576 */
577 public static boolean useExactLoginLocation() {
578 return server.useExactLoginLocation();
579 }
580
581 /**
582 * @see Server#getDefaultGameMode()
583 */
584 public static GameMode getDefaultGameMode() {
585 return server.getDefaultGameMode();
586 }
587
588 /**
589 * @see Server#setDefaultGameMode(GameMode mode)
590 */
591 public static void setDefaultGameMode(GameMode mode) {
592 server.setDefaultGameMode(mode);
593 }
594
595 /**
596 * @see Server#getOfflinePlayers()
597 */
598 public static OfflinePlayer[] getOfflinePlayers() {
599 return server.getOfflinePlayers();
600 }
601
602 /**
603 * @see Server#createInventory(InventoryHolder owner, InventoryType type)
604 */
605 public static Inventory createInventory(InventoryHolder owner, InventoryType type) {
606 return server.createInventory(owner, type);
607 }
608
609 /**
610 * @see Server#createInventory(InventoryHolder owner, InventoryType type, String title)
611 */
612 public static Inventory createInventory(InventoryHolder owner, InventoryType type, String title) {
613 return server.createInventory(owner, type, title);
614 }
615
616 /**
617 * @see Server#createInventory(InventoryHolder owner, int size)
618 */
619 public static Inventory createInventory(InventoryHolder owner, int size) throws IllegalArgumentException {
620 return server.createInventory(owner, size);
621 }
622
623 /**
624 * @see Server#createInventory(InventoryHolder owner, int size, String
625 * title)
626 */
627 public static Inventory createInventory(InventoryHolder owner, int size, String title) throws IllegalArgumentException {
628 return server.createInventory(owner, size, title);
629 }
630
631 /**
632 * @see Server#getHelpMap()
633 */
634 public static HelpMap getHelpMap() {
635 return server.getHelpMap();
636 }
637
638 /**
639 * @see Server#getMonsterSpawnLimit()
640 */
641 public static int getMonsterSpawnLimit() {
642 return server.getMonsterSpawnLimit();
643 }
644
645 /**
646 * @see Server#getAnimalSpawnLimit()
647 */
648 public static int getAnimalSpawnLimit() {
649 return server.getAnimalSpawnLimit();
650 }
651
652 /**
653 * @see Server#getWaterAnimalSpawnLimit()
654 */
655 public static int getWaterAnimalSpawnLimit() {
656 return server.getWaterAnimalSpawnLimit();
657 }
658
659 /**
660 * @see Server#getAmbientSpawnLimit()
661 */
662 public static int getAmbientSpawnLimit() {
663 return server.getAmbientSpawnLimit();
664 }
665
666 /**
667 * @see Server#isPrimaryThread()
668 */
669 public static boolean isPrimaryThread() {
670 return server.isPrimaryThread();
671 }
672
673 /**
674 * @see Server#getMotd()
675 */
676 public static String getMotd() {
677 return server.getMotd();
678 }
679
680 /**
681 * @see Server#getShutdownMessage()
682 */
683 public static String getShutdownMessage() {
684 return server.getShutdownMessage();
685 }
686
687 /**
688 * @see Server#getWarningState()
689 */
690 public static WarningState getWarningState() {
691 return server.getWarningState();
692 }
693
694 /**
695 * @see Server#getItemFactory()
696 */
697 public static ItemFactory getItemFactory() {
698 return server.getItemFactory();
699 }
700
701 /**
702 * @see Server#getScoreboardManager()
703 */
704 public static ScoreboardManager getScoreboardManager() {
705 return server.getScoreboardManager();
706 }
707
708 /**
709 * @see Server#getServerIcon()
710 */
711 public static CachedServerIcon getServerIcon() {
712 return server.getServerIcon();
713 }
714
715 /**
716 * @see Server#loadServerIcon(File)
717 */
718 public static CachedServerIcon loadServerIcon(File file) throws IllegalArgumentException, Exception {
719 return server.loadServerIcon(file);
720 }
721
722 /**
723 * @see Server#loadServerIcon(BufferedImage)
724 */
725 public static CachedServerIcon loadServerIcon(BufferedImage image) throws IllegalArgumentException, Exception {
726 return server.loadServerIcon(image);
727 }
728
729 /**
730 * @see Server#setIdleTimeout(int)
731 */
732 public static void setIdleTimeout(int threshold) {
733 server.setIdleTimeout(threshold);
734 }
735
736 /**
737 * @see Server#getIdleTimeout()
738 */
739 public static int getIdleTimeout() {
740 return server.getIdleTimeout();
741 }
742
743 /**
744 * @see Server#getUnsafe()
745 */
746 @Deprecated
747 public static UnsafeValues getUnsafe() {
748 return server.getUnsafe();
749 }
750 }