Merge branch 'develop'

This commit is contained in:
tastybento 2020-03-24 07:55:56 -07:00
commit 4579aff01d
8 changed files with 348 additions and 167 deletions

View File

@ -65,7 +65,7 @@
<!-- Do not change unless you want different name for local builds. -->
<build.number>-LOCAL</build.number>
<!-- This allows to change between versions. -->
<build.version>1.11.0</build.version>
<build.version>1.12.0</build.version>
</properties>
<!-- Profiles will allow to automatically change build version. -->

View File

@ -95,6 +95,9 @@ public class AISettings implements WorldSettings {
@ConfigEntry(path = "acid.damage.effects")
@Adapter(PotionEffectListAdapter.class)
private List<PotionEffectType> acidEffects = new ArrayList<>();
@ConfigComment("Acid effect duration in seconds")
@ConfigEntry(path = "acid.damage.acid-effect-duration", since = "1.11.2")
private int acidEffectDuation = 30;
@ConfigComment("Potion effects from going into acid rain and snow.")
@ConfigComment("You can list multiple effects.")
@ -110,6 +113,10 @@ public class AISettings implements WorldSettings {
@Adapter(PotionEffectListAdapter.class)
private List<PotionEffectType> acidRainEffects = new ArrayList<>();
@ConfigComment("Rain effect duration in seconds")
@ConfigEntry(path = "acid.damage.rain-effect-duration", since = "1.11.2")
private int rainEffectDuation = 10;
@ConfigComment("If player wears a helmet then they will not suffer from acid rain")
@ConfigEntry(path = "acid.damage.protection.helmet")
private boolean helmetProtection;
@ -134,6 +141,25 @@ public class AISettings implements WorldSettings {
@ConfigEntry(path = "world.difficulty")
private Difficulty difficulty;
@ConfigComment("Spawn limits. These override the limits set in bukkit.yml")
@ConfigComment("If set to a negative number, the server defaults will be used")
@ConfigEntry(path = "world.spawn-limits.monsters", since = "1.11.2")
private int spawnLimitMonsters = -1;
@ConfigEntry(path = "world.spawn-limits.animals", since = "1.11.2")
private int spawnLimitAnimals = -1;
@ConfigEntry(path = "world.spawn-limits.water-animals", since = "1.11.2")
private int spawnLimitWaterAnimals = -1;
@ConfigEntry(path = "world.spawn-limits.ambient", since = "1.11.2")
private int spawnLimitAmbient = -1;
@ConfigComment("Setting to 0 will disable animal spawns, but this is not recommended. Minecraft default is 400.")
@ConfigComment("A negative value uses the server default")
@ConfigEntry(path = "world.spawn-limits.ticks-per-animal-spawns", since = "1.11.2")
private int ticksPerAnimalSpawns = -1;
@ConfigComment("Setting to 0 will disable monster spawns, but this is not recommended. Minecraft default is 400.")
@ConfigComment("A negative value uses the server default")
@ConfigEntry(path = "world.spawn-limits.ticks-per-monster-spawns", since = "1.11.2")
private int ticksPerMonsterSpawns = -1;
@ConfigComment("Radius of island in blocks. (So distance between islands is twice this)")
@ConfigComment("Will be rounded up to the nearest 16 blocks.")
@ConfigComment("It is the same for every dimension : Overworld, Nether and End.")
@ -1571,4 +1597,100 @@ public class AISettings implements WorldSettings {
public void setAcidRainEffects(List<PotionEffectType> acidRainEffects) {
this.acidRainEffects = acidRainEffects;
}
/**
* @return the rainEffectDuation
*/
public int getRainEffectDuation() {
return rainEffectDuation;
}
/**
* @param rainEffectDuation the rainEffectDuation to set
*/
public void setRainEffectDuation(int rainEffectDuation) {
this.rainEffectDuation = rainEffectDuation;
}
/**
* @return the acidEffectDuation
*/
public int getAcidEffectDuation() {
return acidEffectDuation;
}
/**
* @param acidEffectDuation the acidEffectDuation to set
*/
public void setAcidEffectDuation(int acidEffectDuation) {
this.acidEffectDuation = acidEffectDuation;
}
/**
* @return the spawnLimitMonsters
*/
public int getSpawnLimitMonsters() {
return spawnLimitMonsters;
}
/**
* @param spawnLimitMonsters the spawnLimitMonsters to set
*/
public void setSpawnLimitMonsters(int spawnLimitMonsters) {
this.spawnLimitMonsters = spawnLimitMonsters;
}
/**
* @return the spawnLimitAnimals
*/
public int getSpawnLimitAnimals() {
return spawnLimitAnimals;
}
/**
* @param spawnLimitAnimals the spawnLimitAnimals to set
*/
public void setSpawnLimitAnimals(int spawnLimitAnimals) {
this.spawnLimitAnimals = spawnLimitAnimals;
}
/**
* @return the spawnLimitWaterAnimals
*/
public int getSpawnLimitWaterAnimals() {
return spawnLimitWaterAnimals;
}
/**
* @param spawnLimitWaterAnimals the spawnLimitWaterAnimals to set
*/
public void setSpawnLimitWaterAnimals(int spawnLimitWaterAnimals) {
this.spawnLimitWaterAnimals = spawnLimitWaterAnimals;
}
/**
* @return the spawnLimitAmbient
*/
public int getSpawnLimitAmbient() {
return spawnLimitAmbient;
}
/**
* @param spawnLimitAmbient the spawnLimitAmbient to set
*/
public void setSpawnLimitAmbient(int spawnLimitAmbient) {
this.spawnLimitAmbient = spawnLimitAmbient;
}
/**
* @return the ticksPerAnimalSpawns
*/
public int getTicksPerAnimalSpawns() {
return ticksPerAnimalSpawns;
}
/**
* @param ticksPerAnimalSpawns the ticksPerAnimalSpawns to set
*/
public void setTicksPerAnimalSpawns(int ticksPerAnimalSpawns) {
this.ticksPerAnimalSpawns = ticksPerAnimalSpawns;
}
/**
* @return the ticksPerMonsterSpawns
*/
public int getTicksPerMonsterSpawns() {
return ticksPerMonsterSpawns;
}
/**
* @param ticksPerMonsterSpawns the ticksPerMonsterSpawns to set
*/
public void setTicksPerMonsterSpawns(int ticksPerMonsterSpawns) {
this.ticksPerMonsterSpawns = ticksPerMonsterSpawns;
}
}

View File

@ -3,6 +3,7 @@ package world.bentobox.acidisland;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.WorldType;
import org.bukkit.World.Environment;
import org.bukkit.generator.ChunkGenerator;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
@ -104,35 +105,49 @@ public class AcidIsland extends GameModeAddon {
}
// Create the world if it does not exist
chunkGenerator = new ChunkGeneratorWorld(this);
islandWorld = WorldCreator.name(worldName).type(WorldType.FLAT).environment(World.Environment.NORMAL).generator(chunkGenerator)
.createWorld();
islandWorld = getWorld(worldName, World.Environment.NORMAL, chunkGenerator);
// Make the nether if it does not exist
if (settings.isNetherGenerate()) {
if (getServer().getWorld(worldName + NETHER) == null) {
log("Creating AcidIsland's Nether...");
}
if (!settings.isNetherIslands()) {
netherWorld = WorldCreator.name(worldName + NETHER).type(WorldType.NORMAL).environment(World.Environment.NETHER).createWorld();
} else {
netherWorld = WorldCreator.name(worldName + NETHER).type(WorldType.FLAT).generator(chunkGenerator)
.environment(World.Environment.NETHER).createWorld();
}
netherWorld = settings.isNetherIslands() ? getWorld(worldName, World.Environment.NETHER, chunkGenerator) : getWorld(worldName, World.Environment.NETHER, null);
}
// Make the end if it does not exist
if (settings.isEndGenerate()) {
if (getServer().getWorld(worldName + THE_END) == null) {
log("Creating AcidIsland's End World...");
}
if (!settings.isEndIslands()) {
endWorld = WorldCreator.name(worldName + THE_END).type(WorldType.NORMAL).environment(World.Environment.THE_END).createWorld();
} else {
endWorld = WorldCreator.name(worldName + THE_END).type(WorldType.FLAT).generator(chunkGenerator)
.environment(World.Environment.THE_END).createWorld();
}
endWorld = settings.isEndIslands() ? getWorld(worldName, World.Environment.THE_END, chunkGenerator) : getWorld(worldName, World.Environment.THE_END, null);
}
}
/**
* Gets a world or generates a new world if it does not exist
* @param worldName2 - the overworld name
* @param env - the environment
* @param chunkGenerator2 - the chunk generator. If <tt>null</tt> then the generator will not be specified
* @return world loaded or generated
*/
private World getWorld(String worldName2, Environment env, @Nullable ChunkGenerator chunkGenerator2) {
// Set world name
worldName2 = env.equals(World.Environment.NETHER) ? worldName2 + NETHER : worldName2;
worldName2 = env.equals(World.Environment.THE_END) ? worldName2 + THE_END : worldName2;
WorldCreator wc = WorldCreator.name(worldName2).type(WorldType.FLAT).environment(env);
World w = settings.isUseOwnGenerator() ? wc.createWorld() : wc.generator(chunkGenerator2).createWorld();
// Set spawn rates
if (w != null) {
w.setMonsterSpawnLimit(getSettings().getSpawnLimitMonsters());
w.setAmbientSpawnLimit(getSettings().getSpawnLimitAmbient());
w.setAnimalSpawnLimit(getSettings().getSpawnLimitAnimals());
w.setWaterAnimalSpawnLimit(getSettings().getSpawnLimitWaterAnimals());
w.setTicksPerAnimalSpawns(getSettings().getTicksPerAnimalSpawns());
w.setTicksPerMonsterSpawns(getSettings().getTicksPerMonsterSpawns());
}
return w;
}
@Override
public WorldSettings getWorldSettings() {
return settings;

View File

@ -51,7 +51,8 @@ public class AcidEffect implements Listener {
PotionEffectType.HUNGER,
PotionEffectType.SLOW,
PotionEffectType.SLOW_DIGGING,
PotionEffectType.WEAKNESS);
PotionEffectType.WEAKNESS,
PotionEffectType.POISON);
private static final List<PotionEffectType> IMMUNE_EFFECTS = Arrays.asList(
PotionEffectType.WATER_BREATHING,
PotionEffectType.CONDUIT_POWER);
@ -88,7 +89,6 @@ public class AcidEffect implements Listener {
|| addon.getPlayers().isInTeleport(player.getUniqueId())
|| !Util.sameWorld(addon.getOverWorld(), player.getWorld())
|| (!player.isOp() && player.hasPermission("acidisland.mod.noburn"))
|| (!player.isOp() && player.hasPermission("admin.noburn"))
|| (player.isOp() && !addon.getSettings().isAcidDamageOp())) {
return;
}
@ -120,8 +120,7 @@ public class AcidEffect implements Listener {
AcidRainEvent event = new AcidRainEvent(player, totalDamage, protection, addon.getSettings().getAcidRainEffects());
addon.getServer().getPluginManager().callEvent(event);
if (!event.isCancelled()) {
event.getPotionEffects().stream().filter(EFFECTS::contains).forEach(t -> player.addPotionEffect(new PotionEffect(t, 600, 1)));
event.getPotionEffects().stream().filter(e -> e.equals(PotionEffectType.POISON)).forEach(t -> player.addPotionEffect(new PotionEffect(t, 200, 1)));
event.getPotionEffects().stream().filter(EFFECTS::contains).forEach(t -> player.addPotionEffect(new PotionEffect(t, addon.getSettings().getRainEffectDuation() * 20, 1)));
// Apply damage if there is any
if (event.getRainDamage() > 0D) {
player.damage(event.getRainDamage());
@ -159,8 +158,7 @@ public class AcidEffect implements Listener {
AcidEvent acidEvent = new AcidEvent(player, totalDamage, protection, addon.getSettings().getAcidEffects());
addon.getServer().getPluginManager().callEvent(acidEvent);
if (!acidEvent.isCancelled()) {
acidEvent.getPotionEffects().stream().filter(EFFECTS::contains).forEach(t -> player.addPotionEffect(new PotionEffect(t, 600, 1)));
acidEvent.getPotionEffects().stream().filter(e -> e.equals(PotionEffectType.POISON)).forEach(t -> player.addPotionEffect(new PotionEffect(t, 200, 1)));
acidEvent.getPotionEffects().stream().filter(EFFECTS::contains).forEach(t -> player.addPotionEffect(new PotionEffect(t, addon.getSettings().getAcidEffectDuation() * 20, 1)));
// Apply damage if there is any
if (acidEvent.getTotalDamage() > 0D) {
player.damage(acidEvent.getTotalDamage());

View File

@ -7,142 +7,148 @@ icon: "OAK_BOAT"
authors: tastybento
permissions:
acidisland.island:
description: Allow island command usage
default: true
acidisland.island.create:
description: Allow island creation
default: true
acidisland.island.home:
description: Allow teleporting to player island
default: true
acidisland.island.sethome:
description: Let the player use the sethome command
default: true
acidisland.island.info:
description: Let the player check other players info
default: true
acidisland.island.lock:
description: Allows island locking
default: true
acidisland.island.near:
description: Players can see nearby island names
default: true
acidisland.island.expel:
description: Allows expelling of visitors
default: true
acidisland.island.ban:
description: Allows banning of visitors
default: true
acidisland.island.settings:
description: Player can see server settings
default: true
acidisland.island.language:
description: Player can select a language
default: true
acidisland.island.name:
description: Player can set the name of their island
default: true
acidisland.island.spawn:
description: Player can use the island spawn command if spawn exists
default: true
acidisland.island.reset:
description: Player can use the island reset or restart command
default: true
acidisland.island.team:
description: Let a player use team command
default: true
acidisland.island.team.setowner:
description: Let a player change the team owner
default: true
acidisland.island.team.invite:
description: Let a player invite others
default: true
acidisland.island.team.reject:
description: Let a player reject invites
default: true
acidisland.island.team.leave:
description: Let a player leave the team
default: true
acidisland.island.team.kick:
description: Let a player kick team members
default: true
acidisland.island.team.accept:
description: Let a player accept invitations
default: true
acidisland.island.team.trust:
description: Let a player use team trust commands
default: true
acidisland.island.team.coop:
description: Let a player use team coop commands
default: true
acidisland.island.team.promote:
description: Let a player use promote commands
default: true
acidisland.settings.*:
description: Allow use of settings on island
default: true
acidisland.mod.info:
description: Let a moderator see info on a player
permissions:
acidisland.admin.clearresetall:
default: op
acidisland.mod.clearreset:
description: Allow clearing of island reset limit
description: "Allow clearing of island reset limit of all players"
acidisland.admin.delete:
default: op
description: "Let a player completely remove a player (including island)"
acidisland.admin.noban:
default: op
description: "Player cannot be banned from an island"
acidisland.admin.noexpel:
default: op
description: "Player cannot be expelled from an island"
acidisland.admin.register:
default: op
description: "Let a player register the nearest island to another player."
acidisland.admin.reload:
default: op
description: "Reload the config.yml"
acidisland.admin.setlanguage:
default: op
description: "Resets all player languages and sets the default language"
acidisland.admin.setrange:
default: op
description: "Allows setting of island protection range"
acidisland.admin.setspawn:
default: op
description: "Allows use of spawn tools"
acidisland.admin.settingsreset:
default: op
description: "Resets all the islands to default protection settings"
acidisland.admin.tp:
default: op
description: "Allows teleport to an island"
acidisland.admin.unregister:
default: op
description: "Removes a player from an island without deleting the island blocks."
acidisland.island:
default: true
description: "Allow island command usage"
acidisland.island.ban:
default: true
description: "Allows banning of visitors"
acidisland.island.create:
default: true
description: "Allow island creation"
acidisland.island.expel:
default: true
description: "Allows expelling of visitors"
acidisland.island.home:
default: true
description: "Allow teleporting to player island"
acidisland.island.info:
default: true
description: "Let the player check other players info"
acidisland.island.language:
default: true
description: "Player can select a language"
acidisland.island.lock:
default: true
description: "Allows island locking"
acidisland.island.name:
default: true
description: "Player can set the name of their island"
acidisland.island.near:
default: true
description: "Players can see nearby island names"
acidisland.island.reset:
default: true
description: "Player can use the island reset or restart command"
acidisland.island.sethome:
default: true
description: "Let the player use the sethome command"
acidisland.island.settings:
default: true
description: "Player can see server settings"
acidisland.island.spawn:
default: true
description: "Player can use the island spawn command if spawn exists"
acidisland.island.team:
default: true
description: "Let a player use team command"
acidisland.island.team.accept:
default: true
description: "Let a player accept invitations"
acidisland.island.team.coop:
default: true
description: "Let a player use team coop commands"
acidisland.island.team.invite:
default: true
description: "Let a player invite others"
acidisland.island.team.kick:
default: true
description: "Let a player kick team members"
acidisland.island.team.leave:
default: true
description: "Let a player leave the team"
acidisland.island.team.promote:
default: true
description: "Let a player use promote commands"
acidisland.island.team.reject:
default: true
description: "Let a player reject invites"
acidisland.island.team.setowner:
default: true
description: "Let a player change the team owner"
acidisland.island.team.trust:
default: true
description: "Let a player use team trust commands"
acidisland.mod.bypassban:
default: op
description: "Bypasses island ban"
acidisland.mod.bypasscooldowns:
default: op
description: "Allow moderator to bypass cooldowns"
acidisland.mod.bypassdelays:
default: op
description: "Allow moderator to bypass delays"
acidisland.mod.bypassexpel:
default: op
description: "Allow moderator to bypass island expulsion"
acidisland.mod.bypasslock:
default: op
description: "Bypasses an island lock"
acidisland.mod.bypassprotect:
default: op
description: "Allow moderator to bypass island protection"
acidisland.mod.clearreset:
default: false
acidisland.mod.bypasscooldowns:
description: Allow moderator to bypass cooldowns
description: "Allow clearing of island reset limit"
acidisland.mod.info:
default: op
acidisland.mod.bypassprotect:
description: Allow moderator to bypass island protection
description: "Let a moderator see info on a player"
acidisland.mod.lock:
default: op
acidisland.mod.bypassexpel:
description: Allow moderator to bypass island expulsion
description: "Locks or unlocks an island"
acidisland.mod.noburn:
default: op
acidisland.mod.lock:
description: Locks or unlocks an island
default: op
acidisland.mod.bypasslock:
description: Bypasses an island lock
default: op
acidisland.mod.bypassban:
description: Bypasses island ban
default: op
acidisland.mod.team:
description: Enables modification of teams via kick and add commands
description: "Give mod acid protection"
acidisland.mod.team:
default: false
acidisland.admin.tp:
description: Allows teleport to an island
default: op
acidisland.admin.clearresetall:
description: Allow clearing of island reset limit of all players
default: op
acidisland.admin.reload:
description: Reload the config.yml
default: op
acidisland.admin.delete:
description: Let a player completely remove a player (including island)
default: op
acidisland.admin.register:
description: Let a player register the nearest island to another player.
default: op
acidisland.admin.unregister:
description: Removes a player from an island without deleting the island blocks.
default: op
acidisland.admin.setspawn:
description: Allows use of spawn tools
default: op
acidisland.admin.setrange:
description: Allows setting of island protection range
default: op
acidisland.admin.settingsreset:
description: Resets all the islands to default protection settings
default: op
acidisland.admin.noban:
description: Player cannot be banned from an island
default: op
acidisland.admin.noexpel:
description: Player cannot be expelled from an island
default: op
acidisland.admin.setlanguage:
description: Resets all player languages and sets the default language
default: op
description: "Enables modification of teams via kick and add commands"
acidisland.settings.*:
default: true
description: "Allow use of settings on island"

View File

@ -39,6 +39,9 @@ acid:
effects:
- CONFUSION
- BLINDNESS
# Acid effect duration in seconds
# Added since 1.11.2.
acid-effect-duration: 30
# Potion effects from going into acid rain and snow.
# You can list multiple effects.
# Available effects are:
@ -51,6 +54,9 @@ acid:
# WEAKNESS
# Added since 1.9.1.
rain-effects: []
# Rain effect duration in seconds
# Added since 1.11.2.
rain-effect-duration: 10
protection:
# If player wears a helmet then they will not suffer from acid rain
helmet: false
@ -67,6 +73,25 @@ world:
# World difficulty setting - PEACEFUL, EASY, NORMAL, HARD
# Other plugins may override this setting
difficulty: NORMAL
spawn-limits:
# Spawn limits. These override the limits set in bukkit.yml
# If set to a negative number, the server defaults will be used
# Added since 1.11.2.
monsters: -1
# Added since 1.11.2.
animals: -1
# Added since 1.11.2.
water-animals: -1
# Added since 1.11.2.
ambient: -1
# Setting to 0 will disable animal spawns, but this is not recommended. Minecraft default is 400.
# A negative value uses the server default
# Added since 1.11.2.
ticks-per-animal-spawns: -1
# Setting to 0 will disable monster spawns, but this is not recommended. Minecraft default is 400.
# A negative value uses the server default
# Added since 1.11.2.
ticks-per-monster-spawns: -1
# 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.
@ -151,10 +176,10 @@ world:
# 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:
- PIG_ZOMBIE
- WITHER
- ENDERMAN
- ZOMBIE_VILLAGER
- PIG_ZOMBIE
- WITHER
# World flags. These are boolean settings for various flags for this world
flags:
CREEPER_DAMAGE: true
@ -187,8 +212,8 @@ world:
ENDER_PEARL: 500
DOOR: 500
FURNACE: 500
ANVIL: 500
MINECART: 500
ANVIL: 500
FISH_SCOOPING: 500
END_PORTAL: 500
BREEDING: 500
@ -199,20 +224,21 @@ world:
LEVER: 500
ELYTRA: 0
HURT_MONSTERS: 0
CAKE: 500
RIDING: 500
ARMOR_STAND: 500
CAKE: 500
NAME_TAG: 500
ARMOR_STAND: 500
TRADING: 0
EGGS: 500
ITEM_DROP: 0
NOTE_BLOCK: 0
FLINT_AND_STEEL: 500
NETHER_PORTAL: 500
LECTERN: 500
ITEM_PICKUP: 0
CROP_TRAMPLE: 500
DROPPER: 500
BREWING: 500
DROPPER: 500
TNT_PRIMING: 500
COLLECT_WATER: 500
BUTTON: 500
@ -220,14 +246,14 @@ world:
COMMAND_RANKS: 500
BEACON: 500
TRAPDOOR: 500
EXPERIENCE_BOTTLE_THROWING: 500
PRESSURE_PLATE: 0
EXPERIENCE_BOTTLE_THROWING: 500
DYE: 500
PLACE_BLOCKS: 500
ITEM_FRAME: 500
CRAFTING: 0
ENCHANTING: 0
SHEARING: 500
ENCHANTING: 0
BOAT: 500
SPAWN_EGGS: 500
BED: 500
@ -237,8 +263,8 @@ world:
EXPERIENCE_PICKUP: 500
HOPPER: 500
LEASH: 500
MOUNT_INVENTORY: 500
BREAK_BLOCKS: 500
MOUNT_INVENTORY: 500
CHORUS_FRUIT: 500
CONTAINER: 500
POTION_THROWING: 500
@ -250,8 +276,8 @@ world:
PVP_NETHER: false
LEAF_DECAY: true
TNT_DAMAGE: true
MONSTER_SPAWN: true
FIRE_IGNITE: true
MONSTER_SPAWN: true
FIRE_SPREAD: true
FIRE_BURNING: true
PVP_OVERWORLD: false

View File

@ -0,0 +1,14 @@
###########################################################################################
# This is a YML file. Be careful when editing. Check your edits in a YAML checker like #
# the one at http://yaml-online-parser.appspot.com #
# #
# Translation by: CZghost #
###########################################################################################
acidisland:
sign:
line0: "&1AcidIsland"
line1: "[name]"
line2: "Voda je kyselina!"
line3: "Buď opatrný! &c<3"

View File

@ -5,8 +5,8 @@
acidisland:
sign:
line0: "&2SavSziget"
line0: "&1SavSziget"
line1: "[name]"
line2: "A víz savas!"
line3: "Légy óvatos! &d<3"
line3: "Légy óvatos! &c<3"