package com.leontg77.uhc; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.entity.Player; import com.leontg77.uhc.Main.BorderShrink; import com.leontg77.uhc.utils.PacketUtils; import com.leontg77.uhc.utils.PlayerUtils; /** * Game management class. * <p> * This class contains all setters and getters for all togglable features. * * @author LeonTG77 */ public class Game { private static Game instance = new Game(); /** * Get the instance of the class. * * @return The instance. */ public static Game getInstance() { return instance; } private Settings settings = Settings.getInstance(); // ############################ BASIC ############################ // TODO: <-- just for the marker. /** * Change the FFA mode. * * @param ffa True to enable, false to disable. */ public void setFFA(boolean ffa) { settings.getConfig().set("ffa", ffa); settings.saveConfig(); for (Player online : PlayerUtils.getPlayers()) { PacketUtils.setTabList(online); } } /** * Check if the game is in FFA mode * * @return True if it is, false otherwise. */ public boolean isFFA() { return settings.getConfig().getBoolean("ffa", true); } /** * Set the team size of the game. * * @param teamSize the new teamsize. */ public void setTeamSize(int teamSize) { settings.getConfig().set("teamsize", teamSize); settings.saveConfig(); for (Player online : PlayerUtils.getPlayers()) { PacketUtils.setTabList(online); } } /** * Get the game teamsize. * * @return The teamsize. */ public int getTeamSize() { return settings.getConfig().getInt("teamsize", 0); } /** * Set the scenarios of the game. * * @param scenarios The new scenarios. */ public void setScenarios(String scenarios) { settings.getConfig().set("scenarios", scenarios); settings.saveConfig(); for (Player online : PlayerUtils.getPlayers()) { PacketUtils.setTabList(online); } } public String getScenarios() { return settings.getConfig().getString("scenarios", "games running"); } /** * Set the host of the game. * * @param host The new host. */ public void setHost(String host) { settings.getConfig().set("host", host); settings.saveConfig(); if (!isRecordedRound()) { Scoreboards board = Scoreboards.getInstance(); board.kills.setDisplayName("�4�lUHC �r�8- �7�o" + host + "�r"); } for (Player online : PlayerUtils.getPlayers()) { PacketUtils.setTabList(online); } } /** * Get the host of the game. * * @return The host. */ public String getHost() { return settings.getConfig().getString("host", "None"); } /** * Set the max players that will be able to join. * * @param maxplayers The max player limit. */ public void setMaxPlayers(int maxplayers) { settings.getConfig().set("maxplayers", maxplayers); settings.saveConfig(); } /** * Get the max players that can join the server. * * @return The max player limit. */ public int getMaxPlayers() { return settings.getConfig().getInt("maxplayers", 150); } /** * Set the matchpost for the game. * * @param matchpost The new matchpost. */ public void setMatchPost(String matchpost) { settings.getConfig().set("matchpost", matchpost); settings.saveConfig(); } /** * Get the matchpost for the game. * * @return The game's matchpost. */ public String getMatchPost() { return settings.getConfig().getString("matchpost", "No_Post_Set"); } /** * Set the world to be used for the game. * <p> * This will automaticly use all the same worlds * that has the world name with _end or _nether at the end. * * @param name The new world name. */ public void setWorld(String name) { settings.getConfig().set("world", name); settings.saveConfig(); } /** * Get the world to be used for the game. * * @return The game world */ public World getWorld() { return Bukkit.getWorld(settings.getConfig().getString("world", "leon")); } /** * Set the time of the pvp for the game. * * @param meetup The time in minutes. */ public void setPvP(int pvp) { settings.getConfig().set("time.pvp", pvp); settings.saveConfig(); } /** * Get the time when pvp will be enabled after the start. * * @return The time in minutes. */ public int getPvP() { return settings.getConfig().getInt("time.pvp", 15); } /** * Set the time of the meetup of the game. * * @param meetup The time in minutes. */ public void setMeetup(int meetup) { settings.getConfig().set("time.meetup", meetup); settings.saveConfig(); } /** * Get the time when meetup will occur after the start. * * @return The time in minutes. */ public int getMeetup() { return settings.getConfig().getInt("time.meetup", 90); } // ############################ MISC ############################ // TODO: <-- just for the marker. /** * Enable or disable team management. * * @param enable True to enable, false to disable. */ public void setTeamManagement(boolean enable) { settings.getConfig().set("misc.team", enable); settings.saveConfig(); } /** * Get if team management is enabled. * * @return True if it is, false otherwise. */ public boolean teamManagement() { return settings.getConfig().getBoolean("misc.team", false); } /** * Enable or disable the pregame board. * * @param enable True to enable, false to disable. */ public void setPregameBoard(boolean enable) { settings.getConfig().set("misc.board.pregame", enable); settings.saveConfig(); } /** * Get if the pregame board is enabled. * * @return True if it is, false otherwise. */ public boolean pregameBoard() { return settings.getConfig().getBoolean("misc.board.pregame", false); } /** * Enable or disable the arena board. * * @param enable True to enable, false to disable. */ public void setArenaBoard(boolean enable) { settings.getConfig().set("misc.board.arena", enable); settings.saveConfig(); } /** * Get if the arena board is enabled. * * @return True if it is, false otherwise. */ public boolean arenaBoard() { return settings.getConfig().getBoolean("misc.board.arena", false); } /** * Enable or disable recordedround mode. * * @param enable True to enable, false to disable. */ public void setRecordedRound(boolean enable) { settings.getConfig().set("recordedround.enabled", enable); settings.saveConfig(); for (Player online : PlayerUtils.getPlayers()) { PacketUtils.setTabList(online); } } /** * Get if recordedround mode is enabled. * * @return True if it is, false otherwise. */ public boolean isRecordedRound() { return settings.getConfig().getBoolean("recordedround.enabled", false); } /** * Set the name of the recorded round. * <p> * Note: If recordedround mode is disabled, this will have no effect. * * @param name The new name of the RR. */ public void setRRName(String name) { settings.getConfig().set("recordedround.name", name); settings.saveConfig(); } /** * Get the recorded round name. * @return */ public String getRRName() { return settings.getConfig().getString("recordedround.name", "ANAMEHERE"); } /** * Enable or disable stats. * * @param enable True to enable, false to disable. */ public void setStats(boolean enable) { settings.getConfig().set("misc.stats", enable); settings.saveConfig(); } /** * Get if stats are enabled. * * @return True if it is, false otherwise. */ public boolean stats() { return settings.getConfig().getBoolean("misc.stats", true); } /** * Mute or unmute the chat * * @param mute True to mute, false to unmute. */ public void setMuted(boolean mute) { settings.getData().set("muted", mute); settings.saveData(); } /** * Check if the chat is muted. * * @return True if it is, false otherwise. */ public boolean isMuted() { return settings.getData().getBoolean("muted", false); } // ############################ RATES ############################ // TODO: <-- just for the marker. /** * Set the apple rates of the game. * * @param appleRate The apple rate. */ public void setAppleRates(int appleRate) { settings.getConfig().set("rates.apple.rate", appleRate); settings.saveConfig(); } /** * Get the apple rates of the game. * * @return The apple rates. */ public int getAppleRates() { return settings.getConfig().getInt("rates.apple.rate", 1); } /** * Set the flint rates of the game. * * @param flintRate The flint rate. */ public void setFlintRates(int flintRate) { settings.getConfig().set("rates.flint.rate", flintRate); settings.saveConfig(); } /** * Get the flint rates of the game. * * @return The flint rates. */ public int getFlintRates() { return settings.getConfig().getInt("rates.flint.rate", 35); } /** * Enable or disable shears. * * @param enable True to enable, false to disable. */ public void setShears(boolean enable) { settings.getConfig().set("rates.shears.enabled", enable); settings.saveConfig(); } /** * Get if shears is enabled. * * @return True if it is, false otherwise. */ public boolean shears() { return settings.getConfig().getBoolean("rates.shears.enabled", true); } /** * Set the shears rates of the game. * <p> * Note: This will have no effect if shears are disabled. * * @param shearRate The shears rate. */ public void setShearRates(int shearRate) { settings.getConfig().set("rates.shears.rate", shearRate); settings.saveConfig(); } /** * Get the shear rates of the game. * * @return The shear rates, 0 if shears are disabled. */ public int getShearRates() { if (!shears()) { return 0; } return settings.getConfig().getInt("rates.shears.rate", 5); } // ############################ FEATURES ############################ // TODO: <-- just for the marker. /** * Everything below is getters and setters, guess yourself what they do by looking above * I might write the java docs one day.. */ /** * Enable or disable anti stripmine. * * @param enable True to enable, false to disable. */ public void setAntiStripmine(boolean enable) { settings.getConfig().set("feature.antiStripmine.enabled", enable); settings.saveConfig(); } /** * Check if anti stripmine is enabled. * * @return True if it is, false otherwise. */ public boolean antiStripmine() { return settings.getConfig().getBoolean("feature.antiStripmine.enabled", true); } public void setBorderShrink(BorderShrink border) { settings.getConfig().set("feature.border.shrinkAt", border.name().toLowerCase()); settings.saveConfig(); } public BorderShrink getBorderShrink() { return BorderShrink.valueOf(settings.getConfig().getString("feature.border.shrinkAt", BorderShrink.MEETUP.name()).toUpperCase()); } public boolean absorption() { return settings.getConfig().getBoolean("feature.absorption.enabled", false); } public void setAbsorption(boolean enable) { settings.getConfig().set("feature.absorption.enabled", enable); settings.saveConfig(); } public boolean goldenHeads() { return settings.getConfig().getBoolean("feature.goldenheads.enabled", true); } public void setGoldenHeads(boolean enable) { settings.getConfig().set("feature.goldenheads.enabled", enable); settings.saveConfig(); } public int goldenHeadsHeal() { return settings.getConfig().getInt("feature.goldenheads.heal", 4); } public void setGoldenHeadsHeal(int heal) { settings.getConfig().set("feature.goldenheads.heal", heal); settings.saveConfig(); } public boolean pearlDamage() { return settings.getConfig().getBoolean("feature.pearldamage.enabled", false); } public void setPearlDamage(boolean enable) { settings.getConfig().set("feature.pearldamage.enabled", enable); settings.saveConfig(); } public boolean notchApples() { return settings.getConfig().getBoolean("feature.notchapples.enabled", true); } public void setNotchApples(boolean enable) { settings.getConfig().set("feature.notchapples.enabled", enable); settings.saveConfig(); } public boolean deathLightning() { return settings.getConfig().getBoolean("feature.deathlightning.enabled", true); } public void setDeathLightning(boolean enable) { settings.getConfig().set("feature.deathlightning.enabled", enable); settings.saveConfig(); } public boolean nether() { return settings.getConfig().getBoolean("feature.nether.enabled", false); } public void setNether(boolean enable) { settings.getConfig().set("feature.nether.enabled", enable); settings.saveConfig(); } public boolean theEnd() { return settings.getConfig().getBoolean("feature.theend.enabled", false); } public void setTheEnd(boolean enable) { settings.getConfig().set("feature.theend.enabled", enable); settings.saveConfig(); } public boolean ghastDropGold() { return settings.getConfig().getBoolean("feature.ghastdrops.enabled", true); } public void setGhastDropGold(boolean enable) { settings.getConfig().set("feature.ghastdrops.enabled", enable); settings.saveConfig(); } public boolean strength() { return settings.getConfig().getBoolean("feature.strength.enabled", true); } public void setStrength(boolean enable) { settings.getConfig().set("feature.strength.enabled", enable); settings.saveConfig(); } public boolean nerfedStrength() { return settings.getConfig().getBoolean("feature.strength.nerfed", true); } public void setNerfedStrength(boolean enable) { settings.getConfig().set("feature.strength.nerfed", enable); settings.saveConfig(); } public boolean tabShowsHealthColor() { return settings.getConfig().getBoolean("feature.tabShowsHealthColor.enabled", false); } public void setTabShowsHealthColor(boolean enable) { settings.getConfig().set("feature.tabShowsHealthColor.enabled", enable); settings.saveConfig(); for (Player online : PlayerUtils.getPlayers()) { online.setPlayerListName(null); } } public boolean goldenMelonNeedsIngots() { return settings.getConfig().getBoolean("feature.goldenMelonNeedsIngots.enabled", true); } public void setGoldenMelonNeedsIngots(boolean enable) { settings.getConfig().set("feature.goldenMelonNeedsIngots.enabled", enable); settings.saveConfig(); } public void setTier2(boolean enable) { settings.getConfig().set("feature.tier2.enabled", enable); settings.saveConfig(); } public boolean tier2() { return settings.getConfig().getBoolean("feature.tier2.enabled", true); } public void setSplash(boolean enable) { settings.getConfig().set("feature.splash.enabled", enable); settings.saveConfig(); } public boolean splash() { return settings.getConfig().getBoolean("feature.splash.enabled", true); } public void setHorses(boolean enable) { settings.getConfig().set("feature.horse.enabled", enable); settings.saveConfig(); } public boolean horses() { return settings.getConfig().getBoolean("feature.horse.enabled", true); } public void setHorseHealing(boolean enable) { settings.getConfig().set("feature.horse.healing", enable); settings.saveConfig(); } public boolean horseHealing() { return settings.getConfig().getBoolean("feature.horse.healing", true); } public void setHorseArmor(boolean enable) { settings.getConfig().set("feature.horse.armor", enable); settings.saveConfig(); } public boolean horseArmor() { return settings.getConfig().getBoolean("feature.horse.armor", true); } public void setHeartsOnTab(boolean enable) { settings.getConfig().set("feature.heartsOnTab.enabled", enable); settings.saveConfig(); } public boolean heartsOnTab() { return settings.getConfig().getBoolean("feature.heartsOnTab.enabled", false); } public void setHardcoreHearts(boolean enable) { settings.getConfig().set("feature.hardcoreHearts.enabled", enable); settings.saveConfig(); } public boolean hardcoreHearts() { return settings.getConfig().getBoolean("feature.hardcoreHearts.enabled", true); } }