getGroupAdapters() {
return groupAdapters;
}
/**
* Returns true if the plugin is not currently in the process of enabling or disabling or entirely disabled, otherwise false.
*
* @return true if the plugin is not currently in the process of enabling or disabling or entirely disabled, otherwise false
*/
public boolean isLoaded() {
return loaded;
}
/**
* Returns true if the plugin is currently loading a world, false if not.
*
* If the plugin is loading a world, it is locked in order to prevent loading two at once.
*
* @return true if the plugin is currently loading a world, false if not
*/
public boolean isLoadingWorld() {
return loadingWorld;
}
/**
* Notifies the plugin that a world is being loaded.
*
* If the plugin is loading a world, it is locked in order to prevent loading two at once.
*
* @param loadingWorld if a world is being loaded
*/
public void setLoadingWorld(boolean loadingWorld) {
log("World loading is now " + (loadingWorld ? "LOCKED" : "UNLOCKED"));
this.loadingWorld = loadingWorld;
}
@Override
public DCommandCache getCommandCache() {
return dCommands;
}
/**
* @return the loaded instance of MainConfig
*/
public MainConfig getMainConfig() {
return mainConfig;
}
/**
* @return the triggers
*/
public TriggerTypeCache getTriggerCache() {
return triggers;
}
/**
* @return the loaded instance of GlobalProtectionCache
*/
public GlobalProtectionCache getGlobalProtectionCache() {
return protections;
}
/**
* Returns a registry of the loaded sign scripts.
*
* @return a registry of the loaded sign scripts
*/
public Registry getSignScriptRegistry() {
return signScriptRegistry;
}
/**
* Returns a registry of the loaded command scripts.
*
* @return a registry of the loaded command scripts
*/
public Registry getCommandScriptRegistry() {
return commandScriptRegistry;
}
@Deprecated
private Set guis = new HashSet<>();
@Deprecated
public Set getGUIs() {
return guis;
}
/* Object initialization */
@Override
public PlayerGroup createGroup(Player leader) {
return DGroup.create(this, GroupCreateEvent.Cause.CUSTOM, leader, null, null, null);
}
@Override
public PlayerGroup createGroup(Player leader, PlayerGroup.Color color) {
return DGroup.create(this, GroupCreateEvent.Cause.CUSTOM, leader, null, color, null);
}
@Override
public PlayerGroup createGroup(Player leader, String name) {
return DGroup.create(this, GroupCreateEvent.Cause.CUSTOM, leader, name, null, null);
}
@Override
public PlayerGroup createGroup(Player leader, Dungeon dungeon) {
return DGroup.create(this, GroupCreateEvent.Cause.CUSTOM, leader, null, null, dungeon);
}
@Override
public PlayerGroup createGroup(Player leader, Collection members, String name, Dungeon dungeon) {
PlayerGroup group = DGroup.create(this, GroupCreateEvent.Cause.CUSTOM, leader, name, null, dungeon);
if (members != null) {
members.forEach(group::addMember);
}
return group;
}
@Override
public DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, String triggerId) {
DungeonMob mob = getDungeonMob(entity);
if (mob != null) {
return mob;
} else {
return new DMob(entity, gameWorld, caliburn.getExMob(triggerId), triggerId);
}
}
@Override
public DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob type) {
DungeonMob mob = getDungeonMob(entity);
if (mob != null) {
return mob;
} else {
return new DMob(entity, gameWorld, type, type.getId());
}
}
@Override
public DungeonMob wrapEntity(LivingEntity entity, GameWorld gameWorld, ExMob type, String triggerId) {
DungeonMob mob = getDungeonMob(entity);
if (mob != null) {
return mob;
} else {
return new DMob(entity, gameWorld, type, triggerId);
}
}
/* Getters */
@Override
public DungeonMob getDungeonMob(LivingEntity entity) {
GameWorld gameWorld = getGameWorld(entity.getWorld());
if (gameWorld == null) {
return null;
}
for (DungeonMob mob : gameWorld.getMobs()) {
if (mob.getEntity() == entity) {
return mob;
}
}
return null;
}
@Override
public PlayerGroup getPlayerGroup(Player member) {
for (PlayerGroup group : playerGroupCache) {
if (group.getMembers().contains(member)) {
return group;
}
}
return null;
}
@Override
public Game getGame(Player player) {
for (Game game : gameCache) {
if (game.getPlayers().contains(player)) {
return game;
}
}
return null;
}
@Override
public Game getGame(World world) {
GameWorld gameWorld = getGameWorld(world);
return gameWorld != null ? gameWorld.getGame() : null;
}
@Override
public GameWorld getGameWorld(World world) {
InstanceWorld instance = getInstanceWorld(world);
return instance instanceof GameWorld ? (GameWorld) instance : null;
}
@Override
public EditWorld getEditWorld(World world) {
InstanceWorld instance = getInstanceWorld(world);
return instance instanceof EditWorld ? (EditWorld) instance : null;
}
public InstanceWorld getInstanceWorld(World world) {
for (InstanceWorld instance : instanceCache) {
if (world.equals(instance.getWorld())) {
return instance;
}
}
return null;
}
@Override
public boolean isInstance(World world) {
return world.getName().startsWith("DXL_Game_") || world.getName().startsWith("DXL_Edit_");
}
@Override
public boolean isDungeonItem(ItemStack itemStack) {
if (!Version.isAtLeast(Version.MC1_16_5)) {
return false;
}
if (itemStack == null || !itemStack.hasItemMeta()) {
return false;
}
return itemStack.getItemMeta().getPersistentDataContainer().has(NamespacedKey.fromString("dungeon_item", this), PersistentDataType.BYTE);
}
@Override
public ItemStack setDungeonItem(ItemStack itemStack, boolean dungeonItem) {
if (!Version.isAtLeast(Version.MC1_16_5)) {
return null;
}
if (itemStack == null || itemStack.getItemMeta() == null) {
return null;
}
ItemStack dIStack = itemStack.clone();
ItemMeta meta = dIStack.getItemMeta();
NamespacedKey key = NamespacedKey.fromString("dungeon_item", this);
if (dungeonItem) {
meta.getPersistentDataContainer().set(key, PersistentDataType.BYTE, (byte) 1);
} else {
meta.getPersistentDataContainer().remove(key);
}
dIStack.setItemMeta(meta);
return dIStack;
}
/**
* Clean up all instances.
*/
public void deleteAllInstances() {
BackupMode backupMode = mainConfig.getBackupMode();
for (InstanceWorld instance : instanceCache.getAll()) {
if (backupMode == BackupMode.ON_DISABLE | backupMode == BackupMode.ON_DISABLE_AND_SAVE && instance instanceof EditWorld) {
instance.getResource().backup();
}
instance.delete();
}
}
/**
* Checks if an old player wrapper instance of the user exists. If yes, the old Player of the user is replaced with the new object.
*
* @param player the player to check
* @return if the player exists
*/
public boolean checkPlayer(Player player) {
DGamePlayer dPlayer = (DGamePlayer) playerCache.getFirstGamePlayerIf(p -> p.getUniqueId().equals(player.getUniqueId()));
if (dPlayer == null) {
return false;
}
dPlayer.setPlayer(player);
playerCache.remove(dPlayer);
playerCache.add(player, dPlayer);
dPlayer.setOfflineTimeMillis(0);
return true;
}
private boolean xlDevMode = System.getProperty("XLDevMode") != null;
public void log(String message) {
if (xlDevMode) {
MessageUtil.log(this, message);
}
}
public void log(String message, T t, Predicate predicate) {
if (xlDevMode && !predicate.test(t)) {
throw new AssertionError(message);
}
}
}