diff --git a/config.yml b/config.yml index bb0f2e5..64fbd40 100644 --- a/config.yml +++ b/config.yml @@ -1,26 +1,35 @@ -############################################################################ -# Config for AcidIsland V${version} -# -# Created and maintained by Tastybento with the help of Poslovitch -############################################################################ - -### World Settings ### +uniqueId: config +acid: + damage-op: true + damage-chickens: false + damage: + acid: + player: 10 + monster: 5 + animal: 5 + item: 0 + rain: 1 + effects: + - CONFUSION + - BLINDNESS + protection: + helmet: false + full-armor: false world: + # Friendly name for this world. Used in admin commands. Must be a single word + friendly-name: AcidIsland # Name of the world - if it does not exist then it will be generated. # It acts like a prefix for nether and end (e.g. BSkyBlock, BSkyBlock_nether, BSkyBlock_end) world-name: AcidIsland_world - - # Radius of island in blocks. (So distance between islands is twice this) + # Radius of island in blocks. (So distance between islands is twice this) # Will be rounded up to the nearest 16 blocks. # It is the same for every dimension : Overworld, Nether and End. # This value cannot be changed mid-game and the plugin will not start if it is different. distance-between-islands: 64 - # Default protection range radius in blocks. Cannot be larger than distance. # Admins can change protection sizes for players individually using /bsadmin setrange # or set this permission: bskyblock.island.range. protection-range: 50 - # Start islands at these coordinates. This is where new islands will start in the # world. These must be a factor of your island distance, but the plugin will auto # calculate the closest location on the grid. Islands develop around this location @@ -28,22 +37,25 @@ world: # If none of this makes sense, leave it at 0,0. start-x: 0 start-z: 0 - + offset-x: 0 + offset-z: 0 # Island height - Lowest is 5. - # It is the y coordinate of the bedrock block in the schematic + # It is the y coordinate of the bedrock block in the schem island-height: 50 - + # Use your own world generator for this world. In this case, the plugin will not generate + # anything. + use-own-generator: false # Sea height (don't changes this mid-game unless you delete the world) # Minimum is 0, which means you are playing Skyblock! # If sea height is less than about 10, then players will drop right through it # if it exists. Makes for an interesting variation on skyblock. sea-height: 55 - # Maximum number of islands in the world. Set to 0 for unlimited. # If the number of islands is greater than this number, no new island will be created. max-islands: 0 - - ### Nether-related Settings ### + # The default game mode for this world. Players will be set to this mode when they create + # a new island for example. Options are SURVIVAL, CREATIVE, ADVENTURE, SPECTATOR + default-game-mode: SURVIVAL nether: # Generate Nether - if this is false, the nether world will not be made and access to # the nether will not occur. Other plugins may still enable portal usage. @@ -51,39 +63,195 @@ world: # Note that with a standard nether all players arrive at the same portal and entering a # portal will return them back to their islands. generate: true - # Islands in Nether. Change to false for standard vanilla nether. islands: true - # Nether trees are made if a player grows a tree in the nether (gravel and glowstone) # Applies to both vanilla and islands Nether trees: true - # Make the nether roof, if false, there is nothing up there # Change to false if lag is a problem from the generation # Only applies to islands Nether roof: true - # Nether spawn protection radius - this is the distance around the nether spawn # that will be protected from player interaction (breaking blocks, pouring lava etc.) # Minimum is 0 (not recommended), maximum is 100. Default is 25. # Only applies to vanilla nether spawn-radius: 25 - end: generate: true islands: true - -### Protection Settings ### + dragon-spawn: false + # Removing mobs - this kills all monsters in the vicinity. Benefit is that it helps + # players return to their island if the island has been overrun by monsters. + # This setting is toggled in world flags and set by the settings GUI. + # Mob white list - these mobs will NOT be removed when logging in or doing /island + remove-mobs-whitelist: + - ZOMBIE_VILLAGER + - PIG_ZOMBIE + - WITHER + - ENDERMAN + # World flags. These are boolean settings for various flags for this world + flags: + ENTER_EXIT_MESSAGES: true + PISTON_PUSH: true + ISLAND_RESPAWN: true + OFFLINE_REDSTONE: true + REMOVE_MOBS: true + ENDER_CHEST: false + # These are the default protection settings for new islands. + # The value is the minimum island rank required allowed to do the action + # Ranks are: Visitor = 0, Member = 900, Owner = 1000 + default-island-flags: + HURT_ANIMALS: 900 + COLLECT_WATER: 900 + REDSTONE: 900 + BUTTON: 900 + BUCKET: 900 + FIRE_EXTINGUISH: 900 + LOCK: 0 + ENDER_PEARL: 900 + BEACON: 900 + DOOR: 900 + TRAPDOOR: 900 + FURNACE: 900 + PRESSURE_PLATE: 900 + PLACE_BLOCKS: 900 + ANVIL: 900 + FIRE: 900 + CRAFTING: 900 + BREEDING: 900 + HURT_VILLAGERS: 900 + SHEARING: 900 + ENCHANTING: 900 + BED: 900 + SPAWN_EGGS: 900 + COLLECT_LAVA: 900 + MILKING: 900 + LEVER: 900 + RIDING: 900 + HURT_MONSTERS: 900 + ARMOR_STAND: 900 + GATE: 900 + TRADING: 900 + EGGS: 900 + ITEM_DROP: 900 + PORTAL: 900 + CHEST: 900 + NOTE_BLOCK: 900 + LEASH: 900 + MOUNT_INVENTORY: 900 + BREAK_BLOCKS: 900 + CHORUS_FRUIT: 900 + CROP_TRAMPLE: 900 + ITEM_PICKUP: 900 + JUKEBOX: 900 + BREWING: 900 + # These are the default settings for new islands + default-island-settings: + PVP_END: false + ANIMAL_SPAWN: true + PVP_NETHER: false + MONSTER_SPAWN: true + FIRE_SPREAD: true + PVP_OVERWORLD: false + # These are the settings visible to users. + visible-settings: [] + # Visitor banned commands - Visitors to islands cannot use these commands in this world + visitor-banned-commands: + - spawner + - spawnmob +island: + limits: + entities: {} + tile-entities: {} + # Default max team size + # Use this permission to set for specific user groups: askyblock.team.maxsize. + # Permission size cannot be less than the default below. + max-team-size: 4 + # Default maximum number of homes a player can have. Min = 1 + # Accessed via sethome or go + # Use this permission to set for specific user groups: askyblock.island.maxhomes. + max-homes: 1 + name: + # Island naming + # Only players with the TODO can name their island + # It is displayed in the top ten and enter and exit announcements + # It replaces the owner's name. Players can use & for color coding if they have the TODO permission + # These set the minimum and maximum size of a name. + min-length: 4 + max-length: 20 + # How long a player must wait until they can rejoin a team island after being + # kicked in minutes. This slows the effectiveness of players repeating challenges + # by repetitively being invited to a team island. + invite-wait: 60 + reset: + # How many resets a player is allowed (override with /asadmin clearreset ) + # Value of -1 means unlimited, 0 means hardcore - no resets. + # Example, 2 resets means they get 2 resets or 3 islands lifetime + reset-limit: -1 + # Kicked or leaving players lose resets + # Players who leave a team will lose an island reset chance + # If a player has zero resets left and leaves a team, they cannot make a new + # island by themselves and can only join a team. + # Leave this true to avoid players exploiting free islands + leavers-lose-reset: false + # Allow kicked players to keep their inventory. + # If false, kicked player's inventory will be thrown at the island leader if the + # kicked player is online and in the island world. + kicked-keep-inventory: false + on-join: + # What the plugin should reset when the player joins or creates an island + # Reset Money - if this is true, will reset the player's money to the starting money + # Recommendation is that this is set to true, but if you run multi-worlds + # make sure your economy handles multi-worlds too. + money: false + # Reset inventory - if true, the player's inventory will be cleared. + # Note: if you have MultiInv running or a similar inventory control plugin, that + # plugin may still reset the inventory when the world changes. + inventory: false + # Reset Ender Chest - if true, the player's Ender Chest will be cleared. + ender-chest: false + on-leave: + # What the plugin should reset when the player leaves or is kicked from an island + # Reset Money - if this is true, will reset the player's money to the starting money + # Recommendation is that this is set to true, but if you run multi-worlds + # make sure your economy handles multi-worlds too. + money: false + # Reset inventory - if true, the player's inventory will be cleared. + # Note: if you have MultiInv running or a similar inventory control plugin, that + # plugin may still reset the inventory when the world changes. + inventory: false + # Reset Ender Chest - if true, the player's Ender Chest will be cleared. + ender-chest: false + require-confirmation: + reset: true + # Ask the player to confirm the command he is using by typing it again. + # The 'wait' value is the number of seconds to wait for confirmation. + kick: true + kick-wait: 10 + leave: true + leave-wait: 10 + # How long a player must wait before they can reset their island again in second + reset-wait: 300 + make-island-if-none: false + # Immediately teleport player to their island (home 1 if it exists) when entering the world + immediate-teleport-on-island: false + # Have player's respawn on their island if they die + respawn-on-island: false + deaths: + # Maximum number of deaths to count. The death count can be used by add-ons. + max: 10 + sum-team: false + # When a player joins a team, reset their death count + team-join-reset: true + customranks: {} protection: # Allow pistons to push outside of the protected area (maybe to make bridges) allow-piston-push: true - # Restrict Wither and other flying mobs. # Any flying mobs that exit the island space where they were spawned will be removed. # Includes blaze and ghast. restrict-flying-mobs: true - # Invincible visitors. List of damages that will not affect visitors. # Make list blank if visitors should receive all damages invincible-visitors: @@ -111,196 +279,13 @@ protection: - HOT_FLOOR - CRAMMING - VOID - - # Visitor banned commands: Visitors to islands cannot use these commands - visitor-banned-commands: - - spawner - - spawnmob - - # PVP cooldown in seconds. Players cannot toggle PVP off and on until this timeout - toggle-pvp-cooldown: 60 - - # TODO - flags: [] - -### Island Settings ### -island: - # Default chest items - chest-items: - - ==: org.bukkit.inventory.ItemStack - type: LAVA_BUCKET - - ==: org.bukkit.inventory.ItemStack - type: ICE - amount: 2 - - ==: org.bukkit.inventory.ItemStack - type: MELON_SEEDS - - ==: org.bukkit.inventory.ItemStack - type: BONE - amount: 2 - - ==: org.bukkit.inventory.ItemStack - type: COBBLESTONE - amount: 5 - - ==: org.bukkit.inventory.ItemStack - type: SAPLING - amount: 2 - - # Default max team size - # Use this permission to set for specific user groups: askyblock.team.maxsize. - # Permission size cannot be less than the default below. - max-team-size: 4 - - # Default maximum number of homes a player can have. Min = 1 - # Accessed via sethome or go - # Use this permission to set for specific user groups: askyblock.island.maxhomes. - max-homes: 1 - - # How long a player must wait until they can rejoin a team island after being - # kicked in minutes. This slows the effectiveness of players repeating challenges - # by repetitively being invited to a team island. - invite-wait: 60 - - ### Join/leave/reset island related settings ### - reset: - # How many resets a player is allowed (override with /asadmin clearreset ) - # Value of -1 means unlimited, 0 means hardcore - no resets. - # Example, 2 resets means they get 2 resets or 3 islands lifetime - reset-limit: -1 - - #How long a player must wait before they can reset their island again in second - reset-wait: 300 - - # Kicked or leaving players lose resets - # Players who leave a team will lose an island reset chance - # If a player has zero resets left and leaves a team, they cannot make a new - # island by themselves and can only join a team. - # Leave this true to avoid players exploiting free islands - leavers-lose-resets: true - - # Allow kicked players to keep their inventory. - # If false, kicked player's inventory will be thrown at the island leader if the - # kicked player is online and in the island world. - kicked-keep-inventory: false - - # What the plugin should reset when the player joins or creates an island - on-join: - # Reset Money - if this is true, will reset the player's money to the starting money - # Recommendation is that this is set to true, but if you run multi-worlds - # make sure your economy handles multi-worlds too. - money: false - - # Reset inventory - if true, the player's inventory will be cleared. - # Note: if you have MultiInv running or a similar inventory control plugin, that - # plugin may still reset the inventory when the world changes. - inventory: false - - # Reset Ender Chest - if true, the player's Ender Chest will be cleared. - ender-chest: false - - # What the plugin should reset when the player leaves or is kicked from an island - on-leave: - # Reset Money - if this is true, will reset the player's money to the starting money - # Recommendation is that this is set to true, but if you run multi-worlds - # make sure your economy handles multi-worlds too. - money: false - - # Reset inventory - if true, the player's inventory will be cleared. - # Note: if you have MultiInv running or a similar inventory control plugin, that - # plugin may still reset the inventory when the world changes. - inventory: false - - # Reset Ender Chest - if true, the player's Ender Chest will be cleared. - ender-chest: false - - # Removing mobs - this kills all monsters in the vicinity. Benefit is that it helps - # players return to their island if the island has been overrun by monsters. - # Con is that it kills any mob grinders. - remove-mobs: - # Remove mobs on island when logging in. - on-login: false - - # Remove mobs when /island. - on-island: false - - # Mob white list - these mobs will NOT be removed when logging in or doing /island - whitelist: - - WITHER - - ENDERMAN - - PIG_ZOMBIE - #- ZOMBIE_VILLAGER (1.10+) - - # Make island if player teleports to the island world and does not have one - make-island-if-none: false - - # Immediately teleport player to their island (home 1 if it exists) when entering the world - immediate-teleport-on-island: false - - # Have player's respawn on their island if they die - respawn-on-island: false - - # Only allow the island leader to coop players. - # Island members wont be able to coop other players. - only-leader-can-coop: false - - # Deaths count - deaths: - # Max deaths - # If player dies more than this, it doesn't count anymore - max: 10 - - # Sum team deaths - if true, all the teams deaths are summed - # If false, only the leader's deaths counts - sum-team: false - - -### Acid Settings ### -acid: - # Ops receive damage from acid (Set to true if you want Ops to play properly) - damage-op: true - - # Damage chickens in acid - true or false - chickens tend to go swimming... - damage-chickens: false - - damage: - # Water is acid - acid: - # Acid damage to player per second by being in acid if they have no armor on. - # A fully health player has 20 health points. Players will regen some health - # so the default will give players about 3 seconds to get out the acid - # 0 = no damage, 10 = default damage, 20 = instant death - player: 10 - - # Damage that monsters will experience in acid. - monster: 5 - - # Damage that animals will experience in acid. - animal: 5 - - # Destroy items in water after this many seconds. Timing is variable and may occur - # up to 2x this time. If 0, items will not be removed. Acid damage does not need to - # be on for this setting to work. i.e., it'll work with water too. - # Items fizz when they are destroyed. - item: 0 - - # Damage that rain does. - rain: 1 - - # Damage type to apply in addition to acid damage - # Types can be : SLOW, SLOW_DIGGING, CONFUSION, BLINDNESS, HUNGER, WEAKNESS and POISON - # If you just want these to act, then make the acid damage 0 above - # Note - these are potion effects and so can be cured by milk - effects: - - CONFUSION - - BLINDNESS - - # Armor protection - protection: - # Protect players from acid rain if they have a helmet on - helmet: false - - # Protect players from all acid if they have a full set of armor on - full-armor: false - -# Config.yml version. DO NOT EDIT. This number only changes if the latest -# plugin config has been updated. If a new config is detected, it will be -# auto-saved to config.new.yml. -version: ${version} +togglePvPCooldown: 0 +allowEndermanGriefing: false +endermanDeathDrop: false +allowTNTDamage: false +allowChestDamage: false +allowCreeperDamage: false +allowCreeperGriefing: false +allowMobDamageToItemFrames: false +panel: + close-on-click-outside: true diff --git a/src/main/java/bskyblock/addon/acidisland/AISettings.java b/src/main/java/bskyblock/addon/acidisland/AISettings.java index b0b721b..1baf08e 100644 --- a/src/main/java/bskyblock/addon/acidisland/AISettings.java +++ b/src/main/java/bskyblock/addon/acidisland/AISettings.java @@ -33,41 +33,59 @@ import us.tastybento.bskyblock.database.objects.adapters.PotionEffectListAdapter @StoreAt(filename="config.yml", path="addons/BSkyBlock-AcidIsland") // Explicitly call out what name this should have. public class AISettings implements DataObject, WorldSettings { + @ConfigComment("AcidIsland Configuration") + @ConfigComment("This config file is dynamic and saved when the server is shutdown.") + @ConfigComment("You cannot edit it while the server is running because changes will") + @ConfigComment("be lost! Use in-game settings GUI or edit when server is offline.") + @ConfigComment("Do not change this value below") private String uniqueId = "config"; // --------------------------------------------- /* ACID */ - + @ConfigComment("Acid Settings") + @ConfigComment("") + @ConfigComment("Acid can damage ops or not") @ConfigEntry(path = "acid.damage-op") private boolean acidDamageOp = false; + @ConfigComment("") + @ConfigComment("Acid can damage chickens - best to leave false because they like to swim") @ConfigEntry(path = "acid.damage-chickens") private boolean acidDamageChickens = false; // Damage + @ConfigComment("Damage that a player will experience in acid. 10 is half their health typically. 5 would be easier.") @ConfigEntry(path = "acid.damage.acid.player") private int acidDamage = 10; + @ConfigComment("Damage that monsters experience from acid") @ConfigEntry(path = "acid.damage.acid.monster") - private int acidDamageMonster = 10; + private int acidDamageMonster = 5; + @ConfigComment("Damage animals experience from acid") @ConfigEntry(path = "acid.damage.acid.animal") - private int acidDamageAnimal = 10; + private int acidDamageAnimal = 1; + @ConfigComment("Destroy items after this many seconds in acid. 0 = do not destroy items") @ConfigEntry(path = "acid.damage.acid.item") private long acidDestroyItemTime = 0; + @ConfigComment("Damage from acid rain") @ConfigEntry(path = "acid.damage.rain") private int acidRainDamage = 1; + @ConfigComment("Portion effects from going into acid water") + @ConfigComment("You can list multiple effects") @ConfigEntry(path = "acid.damage.effects") @Adapter(PotionEffectListAdapter.class) private List acidEffects = new ArrayList<>(); + @ConfigComment("If player wears a helmet then they will not suffer from acid rain") @ConfigEntry(path = "acid.damage.protection.helmet") private boolean helmetProtection; + @ConfigComment("If player wears any set of full armor, they will not suffer from acid damage") @ConfigEntry(path = "acid.damage.protection.full-armor") private boolean fullArmorProtection; @@ -206,6 +224,10 @@ public class AISettings implements DataObject, WorldSettings { @ConfigEntry(path = "world.visible-settings") private List visibleSettings = new ArrayList<>(); + @ConfigComment("Visitor banned commands - Visitors to islands cannot use these commands in this world") + @ConfigEntry(path = "world.visitor-banned-commands") + private List visitorBannedCommands = new ArrayList<>(); + // --------------------------------------------- /* ISLAND */ @@ -1371,4 +1393,19 @@ public class AISettings implements DataObject, WorldSettings { return teamJoinDeathReset; } + /** + * @return the visitorbannedcommands + */ + @Override + public List getVisitorBannedCommands() { + return visitorBannedCommands; + } + /** + * @param visitorBannedCommands the visitorbannedcommands to set + */ + public void setVisitorBannedCommands(List visitorBannedCommands) { + this.visitorBannedCommands = visitorBannedCommands; + } + + } diff --git a/src/main/java/bskyblock/addon/acidisland/AcidIsland.java b/src/main/java/bskyblock/addon/acidisland/AcidIsland.java index 310b591..f307322 100644 --- a/src/main/java/bskyblock/addon/acidisland/AcidIsland.java +++ b/src/main/java/bskyblock/addon/acidisland/AcidIsland.java @@ -53,6 +53,8 @@ public class AcidIsland extends Addon { @Override public void onDisable(){ acidTask.cancelTasks(); + // Save settings + new BSBConfig<>(this, AISettings.class).saveConfigObject(settings); } public AISettings getSettings() {