mirror of
https://github.com/BentoBoxWorld/AcidIsland.git
synced 2024-11-28 13:45:19 +01:00
commit
f7ae02f08f
4
pom.xml
4
pom.xml
@ -59,13 +59,13 @@
|
|||||||
<powermock.version>2.0.9</powermock.version>
|
<powermock.version>2.0.9</powermock.version>
|
||||||
<!-- More visible way how to change dependency versions -->
|
<!-- More visible way how to change dependency versions -->
|
||||||
<spigot.version>1.20.4-R0.1-SNAPSHOT</spigot.version>
|
<spigot.version>1.20.4-R0.1-SNAPSHOT</spigot.version>
|
||||||
<bentobox.version>2.0.0-SNAPSHOT</bentobox.version>
|
<bentobox.version>2.5.0-SNAPSHOT</bentobox.version>
|
||||||
<!-- Revision variable removes warning about dynamic version -->
|
<!-- Revision variable removes warning about dynamic version -->
|
||||||
<revision>${build.version}-SNAPSHOT</revision>
|
<revision>${build.version}-SNAPSHOT</revision>
|
||||||
<!-- Do not change unless you want different name for local builds. -->
|
<!-- Do not change unless you want different name for local builds. -->
|
||||||
<build.number>-LOCAL</build.number>
|
<build.number>-LOCAL</build.number>
|
||||||
<!-- This allows to change between versions. -->
|
<!-- This allows to change between versions. -->
|
||||||
<build.version>1.18.2</build.version>
|
<build.version>1.19.0</build.version>
|
||||||
<!-- Sonar Cloud -->
|
<!-- Sonar Cloud -->
|
||||||
<sonar.projectKey>BentoBoxWorld_AcidIsland</sonar.projectKey>
|
<sonar.projectKey>BentoBoxWorld_AcidIsland</sonar.projectKey>
|
||||||
<sonar.organization>bentobox-world</sonar.organization>
|
<sonar.organization>bentobox-world</sonar.organization>
|
||||||
|
@ -11,6 +11,7 @@ import org.bukkit.potion.PotionEffectType;
|
|||||||
|
|
||||||
import com.google.common.base.Enums;
|
import com.google.common.base.Enums;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.BentoBox;
|
||||||
import world.bentobox.bentobox.api.configuration.ConfigComment;
|
import world.bentobox.bentobox.api.configuration.ConfigComment;
|
||||||
import world.bentobox.bentobox.api.configuration.ConfigEntry;
|
import world.bentobox.bentobox.api.configuration.ConfigEntry;
|
||||||
import world.bentobox.bentobox.api.configuration.StoreAt;
|
import world.bentobox.bentobox.api.configuration.StoreAt;
|
||||||
@ -201,6 +202,15 @@ public class AISettings implements WorldSettings {
|
|||||||
@ConfigEntry(path = "world.island-height")
|
@ConfigEntry(path = "world.island-height")
|
||||||
private int islandHeight = 50;
|
private int islandHeight = 50;
|
||||||
|
|
||||||
|
@ConfigComment("The number of concurrent islands a player can have in the world")
|
||||||
|
@ConfigComment("A value of 0 will use the BentoBox config.yml default")
|
||||||
|
@ConfigEntry(path = "world.concurrent-islands")
|
||||||
|
private int concurrentIslands = 0;
|
||||||
|
|
||||||
|
@ConfigComment("Disallow players to have other islands if they are in a team.")
|
||||||
|
@ConfigEntry(path = "world.disallow-team-member-islands")
|
||||||
|
boolean disallowTeamMemberIslands = true;
|
||||||
|
|
||||||
@ConfigComment("Use your own world generator for this world.")
|
@ConfigComment("Use your own world generator for this world.")
|
||||||
@ConfigComment("In this case, the plugin will not generate anything.")
|
@ConfigComment("In this case, the plugin will not generate anything.")
|
||||||
@ConfigEntry(path = "world.use-own-generator", experimental = true)
|
@ConfigEntry(path = "world.use-own-generator", experimental = true)
|
||||||
@ -220,6 +230,21 @@ public class AISettings implements WorldSettings {
|
|||||||
@ConfigEntry(path = "world.ocean-floor", needsReset = true)
|
@ConfigEntry(path = "world.ocean-floor", needsReset = true)
|
||||||
private boolean oceanFloor = false;
|
private boolean oceanFloor = false;
|
||||||
|
|
||||||
|
@ConfigComment("Structures")
|
||||||
|
@ConfigComment("This creates an vanilla structures in the worlds.")
|
||||||
|
@ConfigEntry(path = "world.make-structures", needsReset = true)
|
||||||
|
private boolean makeStructures = false;
|
||||||
|
|
||||||
|
@ConfigComment("Caves")
|
||||||
|
@ConfigComment("This creates an vanilla caves in the worlds.")
|
||||||
|
@ConfigEntry(path = "world.make-caves", needsReset = true)
|
||||||
|
private boolean makeCaves = false;
|
||||||
|
|
||||||
|
@ConfigComment("Decorations")
|
||||||
|
@ConfigComment("This creates an vanilla decorations in the worlds.")
|
||||||
|
@ConfigEntry(path = "world.make-decorations", needsReset = true)
|
||||||
|
private boolean makeDecorations = true;
|
||||||
|
|
||||||
@ConfigComment("Maximum number of islands in the world. Set to -1 or 0 for unlimited. ")
|
@ConfigComment("Maximum number of islands in the world. Set to -1 or 0 for unlimited. ")
|
||||||
@ConfigComment("If the number of islands is greater than this number, no new island will be created.")
|
@ConfigComment("If the number of islands is greater than this number, no new island will be created.")
|
||||||
@ConfigEntry(path = "world.max-islands")
|
@ConfigEntry(path = "world.max-islands")
|
||||||
@ -2024,4 +2049,79 @@ public class AISettings implements WorldSettings {
|
|||||||
public void setOceanFloor(boolean oceanFloor) {
|
public void setOceanFloor(boolean oceanFloor) {
|
||||||
this.oceanFloor = oceanFloor;
|
this.oceanFloor = oceanFloor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the makeStructures
|
||||||
|
*/
|
||||||
|
public boolean isMakeStructures() {
|
||||||
|
return makeStructures;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param makeStructures the makeStructures to set
|
||||||
|
*/
|
||||||
|
public void setMakeStructures(boolean makeStructures) {
|
||||||
|
this.makeStructures = makeStructures;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the makeCaves
|
||||||
|
*/
|
||||||
|
public boolean isMakeCaves() {
|
||||||
|
return makeCaves;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param makeCaves the makeCaves to set
|
||||||
|
*/
|
||||||
|
public void setMakeCaves(boolean makeCaves) {
|
||||||
|
this.makeCaves = makeCaves;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the makeDecorations
|
||||||
|
*/
|
||||||
|
public boolean isMakeDecorations() {
|
||||||
|
return makeDecorations;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param makeDecorations the makeDecorations to set
|
||||||
|
*/
|
||||||
|
public void setMakeDecorations(boolean makeDecorations) {
|
||||||
|
this.makeDecorations = makeDecorations;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the disallowTeamMemberIslands
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isDisallowTeamMemberIslands() {
|
||||||
|
return disallowTeamMemberIslands;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param disallowTeamMemberIslands the disallowTeamMemberIslands to set
|
||||||
|
*/
|
||||||
|
public void setDisallowTeamMemberIslands(boolean disallowTeamMemberIslands) {
|
||||||
|
this.disallowTeamMemberIslands = disallowTeamMemberIslands;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the concurrentIslands
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int getConcurrentIslands() {
|
||||||
|
if (concurrentIslands <= 0) {
|
||||||
|
return BentoBox.getInstance().getSettings().getIslandNumber();
|
||||||
|
}
|
||||||
|
return concurrentIslands;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param concurrentIslands the concurrentIslands to set
|
||||||
|
*/
|
||||||
|
public void setConcurrentIslands(int concurrentIslands) {
|
||||||
|
this.concurrentIslands = concurrentIslands;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,12 +2,18 @@ package world.bentobox.acidisland;
|
|||||||
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.addons.Addon;
|
import world.bentobox.bentobox.api.addons.Addon;
|
||||||
|
import world.bentobox.bentobox.api.addons.GameModeAddon;
|
||||||
import world.bentobox.bentobox.api.addons.Pladdon;
|
import world.bentobox.bentobox.api.addons.Pladdon;
|
||||||
|
|
||||||
public class AcidIslandPladdon extends Pladdon {
|
public class AcidIslandPladdon extends Pladdon {
|
||||||
|
|
||||||
|
private GameModeAddon addon;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Addon getAddon() {
|
public Addon getAddon() {
|
||||||
return new AcidIsland();
|
if (addon == null) {
|
||||||
|
addon = new AcidIsland();
|
||||||
|
}
|
||||||
|
return addon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,23 @@
|
|||||||
package world.bentobox.acidisland.events;
|
package world.bentobox.acidisland.events;
|
||||||
|
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
import org.bukkit.event.Event;
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fired when an entity (items excluded) receives damage from acid
|
* Fired when an entity (items excluded) receives damage from acid
|
||||||
* @author Poslovitch
|
* @author Poslovitch, tastybento
|
||||||
* @since 1.0
|
* @since 1.0
|
||||||
*/
|
*/
|
||||||
public class EntityDamageByAcidEvent extends Event {
|
public class EntityDamageByAcidEvent extends Event implements Cancellable {
|
||||||
|
|
||||||
private final Entity entity;
|
private final Entity entity;
|
||||||
private double damage;
|
private double damage;
|
||||||
|
|
||||||
public enum Acid { RAIN, WATER }
|
public enum Acid { RAIN, WATER }
|
||||||
private final Acid cause;
|
private final Acid cause;
|
||||||
|
private boolean cancelled;
|
||||||
private static final HandlerList handlers = new HandlerList();
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -64,4 +66,15 @@ public class EntityDamageByAcidEvent extends Event {
|
|||||||
public Acid getCause() {
|
public Acid getCause() {
|
||||||
return cause;
|
return cause;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,7 +178,14 @@ public class AcidEffect implements Listener {
|
|||||||
// Check they are still in this world
|
// Check they are still in this world
|
||||||
} else if (wetPlayers.containsKey(player) && wetPlayers.get(player) < System.currentTimeMillis()) {
|
} else if (wetPlayers.containsKey(player) && wetPlayers.get(player) < System.currentTimeMillis()) {
|
||||||
double protection = addon.getSettings().getAcidRainDamage() * getDamageReduced(player);
|
double protection = addon.getSettings().getAcidRainDamage() * getDamageReduced(player);
|
||||||
double totalDamage = Math.max(0, addon.getSettings().getAcidRainDamage() - protection);
|
|
||||||
|
User user = User.getInstance(player);
|
||||||
|
// Get the percentage reduction and ensure the value is between 0 and 100
|
||||||
|
double percent = (100
|
||||||
|
- Math.max(0, Math.min(100, user.getPermissionValue("acidisland.protection.rain", 0)))) / 100D;
|
||||||
|
|
||||||
|
double totalDamage = Math.max(0, addon.getSettings().getAcidRainDamage() - protection) * percent;
|
||||||
|
|
||||||
AcidRainEvent event = new AcidRainEvent(player, totalDamage, protection,
|
AcidRainEvent event = new AcidRainEvent(player, totalDamage, protection,
|
||||||
addon.getSettings().getAcidRainEffects());
|
addon.getSettings().getAcidRainEffects());
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
@ -187,11 +194,13 @@ public class AcidEffect implements Listener {
|
|||||||
.addPotionEffect(new PotionEffect(t, addon.getSettings().getRainEffectDuation() * 20, 1)));
|
.addPotionEffect(new PotionEffect(t, addon.getSettings().getRainEffectDuation() * 20, 1)));
|
||||||
// Apply damage if there is any
|
// Apply damage if there is any
|
||||||
if (event.getRainDamage() > 0D) {
|
if (event.getRainDamage() > 0D) {
|
||||||
player.damage(event.getRainDamage());
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_CREEPER_PRIMED, 3F, 3F);
|
|
||||||
EntityDamageByAcidEvent e = new EntityDamageByAcidEvent(player, event.getRainDamage(), Acid.RAIN);
|
EntityDamageByAcidEvent e = new EntityDamageByAcidEvent(player, event.getRainDamage(), Acid.RAIN);
|
||||||
// Fire event
|
// Fire event
|
||||||
Bukkit.getPluginManager().callEvent(e);
|
Bukkit.getPluginManager().callEvent(e);
|
||||||
|
if (!e.isCancelled()) {
|
||||||
|
player.damage(event.getRainDamage());
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_CREEPER_PRIMED, 3F, 3F);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -204,7 +213,14 @@ public class AcidEffect implements Listener {
|
|||||||
return true;
|
return true;
|
||||||
} else if (burningPlayers.containsKey(player) && burningPlayers.get(player) < System.currentTimeMillis()) {
|
} else if (burningPlayers.containsKey(player) && burningPlayers.get(player) < System.currentTimeMillis()) {
|
||||||
double protection = addon.getSettings().getAcidDamage() * getDamageReduced(player);
|
double protection = addon.getSettings().getAcidDamage() * getDamageReduced(player);
|
||||||
double totalDamage = Math.max(0, addon.getSettings().getAcidDamage() - protection);
|
|
||||||
|
User user = User.getInstance(player);
|
||||||
|
// Get the percentage reduction and ensure the value is between 0 and 100
|
||||||
|
double percent = (100
|
||||||
|
- Math.max(0, Math.min(100, user.getPermissionValue("acidisland.protection.acid", 0)))) / 100D;
|
||||||
|
|
||||||
|
double totalDamage = Math.max(0, addon.getSettings().getAcidDamage() - protection) * percent;
|
||||||
|
|
||||||
AcidEvent event = new AcidEvent(player, totalDamage, protection, addon.getSettings().getAcidEffects());
|
AcidEvent event = new AcidEvent(player, totalDamage, protection, addon.getSettings().getAcidEffects());
|
||||||
addon.getServer().getPluginManager().callEvent(event);
|
addon.getServer().getPluginManager().callEvent(event);
|
||||||
if (!event.isCancelled()) {
|
if (!event.isCancelled()) {
|
||||||
@ -212,11 +228,13 @@ public class AcidEffect implements Listener {
|
|||||||
.addPotionEffect(new PotionEffect(t, addon.getSettings().getAcidEffectDuation() * 20, 1)));
|
.addPotionEffect(new PotionEffect(t, addon.getSettings().getAcidEffectDuation() * 20, 1)));
|
||||||
// Apply damage if there is any
|
// Apply damage if there is any
|
||||||
if (event.getTotalDamage() > 0D) {
|
if (event.getTotalDamage() > 0D) {
|
||||||
player.damage(event.getTotalDamage());
|
|
||||||
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_CREEPER_PRIMED, 3F, 3F);
|
|
||||||
EntityDamageByAcidEvent e = new EntityDamageByAcidEvent(player, event.getTotalDamage(), Acid.WATER);
|
EntityDamageByAcidEvent e = new EntityDamageByAcidEvent(player, event.getTotalDamage(), Acid.WATER);
|
||||||
// Fire event
|
// Fire event
|
||||||
Bukkit.getPluginManager().callEvent(e);
|
Bukkit.getPluginManager().callEvent(e);
|
||||||
|
if (!e.isCancelled()) {
|
||||||
|
player.damage(event.getTotalDamage());
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_CREEPER_PRIMED, 3F, 3F);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -230,6 +248,7 @@ public class AcidEffect implements Listener {
|
|||||||
*/
|
*/
|
||||||
private boolean isSafeFromRain(Player player) {
|
private boolean isSafeFromRain(Player player) {
|
||||||
if (isEssentialsGodMode(player) || player.getWorld().getEnvironment().equals(Environment.NETHER)
|
if (isEssentialsGodMode(player) || player.getWorld().getEnvironment().equals(Environment.NETHER)
|
||||||
|
|| player.getGameMode() != GameMode.SURVIVAL
|
||||||
|| player.getWorld().getEnvironment().equals(Environment.THE_END)
|
|| player.getWorld().getEnvironment().equals(Environment.THE_END)
|
||||||
|| (addon.getSettings().isHelmetProtection() && (player.getInventory().getHelmet() != null
|
|| (addon.getSettings().isHelmetProtection() && (player.getInventory().getHelmet() != null
|
||||||
&& player.getInventory().getHelmet().getType().name().contains("HELMET")))
|
&& player.getInventory().getHelmet().getType().name().contains("HELMET")))
|
||||||
@ -260,7 +279,7 @@ public class AcidEffect implements Listener {
|
|||||||
*/
|
*/
|
||||||
boolean isSafeFromAcid(Player player) {
|
boolean isSafeFromAcid(Player player) {
|
||||||
// Check for GodMode
|
// Check for GodMode
|
||||||
if (isEssentialsGodMode(player)
|
if (isEssentialsGodMode(player) || player.getGameMode() != GameMode.SURVIVAL
|
||||||
// Protect visitors
|
// Protect visitors
|
||||||
|| (addon.getPlugin().getIWM().getIvSettings(player.getWorld()).contains(DamageCause.CUSTOM.name())
|
|| (addon.getPlugin().getIWM().getIvSettings(player.getWorld()).contains(DamageCause.CUSTOM.name())
|
||||||
&& !addon.getIslands().userIsOnIsland(player.getWorld(), User.getInstance(player)))) {
|
&& !addon.getIslands().userIsOnIsland(player.getWorld(), User.getInstance(player)))) {
|
||||||
|
@ -37,6 +37,8 @@ public class AcidTask {
|
|||||||
i.add(EntityType.POLAR_BEAR);
|
i.add(EntityType.POLAR_BEAR);
|
||||||
i.add(EntityType.TURTLE);
|
i.add(EntityType.TURTLE);
|
||||||
i.add(EntityType.DROWNED);
|
i.add(EntityType.DROWNED);
|
||||||
|
i.add(EntityType.GUARDIAN);
|
||||||
|
i.add(EntityType.ELDER_GUARDIAN);
|
||||||
Enums.getIfPresent(EntityType.class, "AXOLOTL").toJavaUtil().ifPresent(i::add);
|
Enums.getIfPresent(EntityType.class, "AXOLOTL").toJavaUtil().ifPresent(i::add);
|
||||||
IMMUNE = Collections.unmodifiableList(i);
|
IMMUNE = Collections.unmodifiableList(i);
|
||||||
}
|
}
|
||||||
@ -86,10 +88,12 @@ public class AcidTask {
|
|||||||
void applyDamage(Entity e, long damage) {
|
void applyDamage(Entity e, long damage) {
|
||||||
if (e instanceof LivingEntity) {
|
if (e instanceof LivingEntity) {
|
||||||
double actualDamage = Math.max(0, damage - damage * AcidEffect.getDamageReduced((LivingEntity)e));
|
double actualDamage = Math.max(0, damage - damage * AcidEffect.getDamageReduced((LivingEntity)e));
|
||||||
((LivingEntity)e).damage(actualDamage);
|
|
||||||
EntityDamageByAcidEvent event = new EntityDamageByAcidEvent(e, actualDamage, Acid.WATER);
|
EntityDamageByAcidEvent event = new EntityDamageByAcidEvent(e, actualDamage, Acid.WATER);
|
||||||
// Fire event
|
// Fire event
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
if (!event.isCancelled()) {
|
||||||
|
((LivingEntity)e).damage(actualDamage);
|
||||||
|
}
|
||||||
} else if (addon.getSettings().getAcidDestroyItemTime() > 0 && e instanceof Item){
|
} else if (addon.getSettings().getAcidDestroyItemTime() > 0 && e instanceof Item){
|
||||||
// Item
|
// Item
|
||||||
if (e.getLocation().getBlock().getType().equals(Material.WATER)) {
|
if (e.getLocation().getBlock().getType().equals(Material.WATER)) {
|
||||||
|
@ -27,10 +27,17 @@ import world.bentobox.acidisland.AcidIsland;
|
|||||||
*/
|
*/
|
||||||
public class ChunkGeneratorWorld extends ChunkGenerator {
|
public class ChunkGeneratorWorld extends ChunkGenerator {
|
||||||
|
|
||||||
|
private record FloorMats(Material base, Material top) {
|
||||||
|
}
|
||||||
|
|
||||||
private final AcidIsland addon;
|
private final AcidIsland addon;
|
||||||
private final Random rand = new Random();
|
private final Random rand = new Random();
|
||||||
private final Map<Environment, WorldConfig> seaHeight = new EnumMap<>(Environment.class);
|
private final Map<Environment, WorldConfig> seaHeight = new EnumMap<>(Environment.class);
|
||||||
private final Map<Vector, Material> roofChunk = new HashMap<>();
|
private final Map<Vector, Material> roofChunk = new HashMap<>();
|
||||||
|
private static final Map<Environment, FloorMats> floorMats = Map.of(Environment.NETHER,
|
||||||
|
new FloorMats(Material.NETHERRACK, Material.SOUL_SAND), Environment.NORMAL,
|
||||||
|
new FloorMats(Material.SANDSTONE, Material.SAND), Environment.THE_END,
|
||||||
|
new FloorMats(Material.END_STONE, Material.END_STONE));
|
||||||
private PerlinOctaveGenerator gen;
|
private PerlinOctaveGenerator gen;
|
||||||
|
|
||||||
private record WorldConfig(int seaHeight, Material waterBlock) {}
|
private record WorldConfig(int seaHeight, Material waterBlock) {}
|
||||||
@ -72,7 +79,8 @@ public class ChunkGeneratorWorld extends ChunkGenerator {
|
|||||||
for (int z = 0; z < 16; z++) {
|
for (int z = 0; z < 16; z++) {
|
||||||
int n = (int)(25 * gen.noise((chunkX << 4) + (double)x, (chunkZ << 4) + (double)z, 0.5, 0.5, true));
|
int n = (int)(25 * gen.noise((chunkX << 4) + (double)x, (chunkZ << 4) + (double)z, 0.5, 0.5, true));
|
||||||
for (int y = worldInfo.getMinHeight(); y < 25 + n; y++) {
|
for (int y = worldInfo.getMinHeight(); y < 25 + n; y++) {
|
||||||
chunkData.setBlock(x, y, z, rand.nextBoolean() ? Material.SAND : Material.SANDSTONE);
|
chunkData.setBlock(x, y, z, rand.nextBoolean() ? floorMats.get(worldInfo.getEnvironment()).top()
|
||||||
|
: floorMats.get(worldInfo.getEnvironment()).base());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -90,11 +98,11 @@ public class ChunkGeneratorWorld extends ChunkGenerator {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldGenerateCaves() {
|
public boolean shouldGenerateCaves() {
|
||||||
return addon.getSettings().isOceanFloor();
|
return addon.getSettings().isMakeCaves();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldGenerateDecorations() {
|
public boolean shouldGenerateDecorations() {
|
||||||
return addon.getSettings().isOceanFloor();
|
return addon.getSettings().isMakeDecorations();
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldGenerateMobs() {
|
public boolean shouldGenerateMobs() {
|
||||||
@ -102,7 +110,7 @@ public class ChunkGeneratorWorld extends ChunkGenerator {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldGenerateStructures() {
|
public boolean shouldGenerateStructures() {
|
||||||
return addon.getSettings().isOceanFloor();
|
return addon.getSettings().isMakeStructures();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: AcidIsland
|
name: AcidIsland
|
||||||
main: world.bentobox.acidisland.AcidIsland
|
main: world.bentobox.acidisland.AcidIsland
|
||||||
version: ${version}${build.number}
|
version: ${version}${build.number}
|
||||||
api-version: 1.22.1
|
api-version: 2.4.0
|
||||||
metrics: true
|
metrics: true
|
||||||
repository: "BentoBoxWorld/AcidIsland"
|
repository: "BentoBoxWorld/AcidIsland"
|
||||||
icon: "OAK_BOAT"
|
icon: "OAK_BOAT"
|
||||||
|
@ -125,6 +125,11 @@ world:
|
|||||||
# Island height - Lowest is 5.
|
# Island height - Lowest is 5.
|
||||||
# It is the y coordinate of the bedrock block in the schem.
|
# It is the y coordinate of the bedrock block in the schem.
|
||||||
island-height: 60
|
island-height: 60
|
||||||
|
# The number of concurrent islands a player can have in the world
|
||||||
|
# A value of 0 will use the BentoBox config.yml default
|
||||||
|
concurrent-islands: 1
|
||||||
|
# Disallow players to have other islands if they are in a team.
|
||||||
|
disallow-team-member-islands: true
|
||||||
# Use your own world generator for this world.
|
# Use your own world generator for this world.
|
||||||
# In this case, the plugin will not generate anything.
|
# In this case, the plugin will not generate anything.
|
||||||
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
# /!\ This feature is experimental and might not work as expected or might not work at all.
|
||||||
@ -139,6 +144,18 @@ world:
|
|||||||
# This creates an ocean floor environment, with vanilla elements.
|
# This creates an ocean floor environment, with vanilla elements.
|
||||||
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||||
ocean-floor: true
|
ocean-floor: true
|
||||||
|
# Structures
|
||||||
|
# This creates an vanilla structures in the worlds.
|
||||||
|
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||||
|
make-structures: false
|
||||||
|
# Caves
|
||||||
|
# This creates an vanilla caves in the worlds.
|
||||||
|
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||||
|
make-caves: false
|
||||||
|
# Decorations
|
||||||
|
# This creates an vanilla decorations in the worlds.
|
||||||
|
# /!\ BentoBox currently does not support changing this value mid-game. If you do need to change it, do a full reset of your databases and worlds.
|
||||||
|
make-decorations: true
|
||||||
# Maximum number of islands in the world. Set to -1 or 0 for unlimited.
|
# Maximum number of islands in the world. Set to -1 or 0 for unlimited.
|
||||||
# If the number of islands is greater than this number, no new island will be created.
|
# If the number of islands is greater than this number, no new island will be created.
|
||||||
max-islands: 0
|
max-islands: 0
|
||||||
@ -211,10 +228,10 @@ world:
|
|||||||
# This setting is toggled in world flags and set by the settings GUI.
|
# 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
|
# Mob white list - these mobs will NOT be removed when logging in or doing /island
|
||||||
remove-mobs-whitelist:
|
remove-mobs-whitelist:
|
||||||
- ZOMBIE_VILLAGER
|
|
||||||
- ENDERMAN
|
- ENDERMAN
|
||||||
- ZOMBIFIED_PIGLIN
|
- ZOMBIE_VILLAGER
|
||||||
- WITHER
|
- WITHER
|
||||||
|
- ZOMBIFIED_PIGLIN
|
||||||
# World flags. These are boolean settings for various flags for this world
|
# World flags. These are boolean settings for various flags for this world
|
||||||
flags:
|
flags:
|
||||||
CREEPER_DAMAGE: true
|
CREEPER_DAMAGE: true
|
||||||
@ -228,27 +245,33 @@ world:
|
|||||||
PREVENT_TELEPORT_WHEN_FALLING: false
|
PREVENT_TELEPORT_WHEN_FALLING: false
|
||||||
NATURAL_SPAWNING_OUTSIDE_RANGE: true
|
NATURAL_SPAWNING_OUTSIDE_RANGE: true
|
||||||
ENTER_EXIT_MESSAGES: true
|
ENTER_EXIT_MESSAGES: true
|
||||||
|
ALLOW_MOVE_BOX: true
|
||||||
ENDERMAN_DEATH_DROP: true
|
ENDERMAN_DEATH_DROP: true
|
||||||
|
LIQUIDS_FLOWING_OUT: false
|
||||||
OFFLINE_REDSTONE: true
|
OFFLINE_REDSTONE: true
|
||||||
REMOVE_END_EXIT_ISLAND: true
|
REMOVE_END_EXIT_ISLAND: true
|
||||||
OFFLINE_GROWTH: true
|
OFFLINE_GROWTH: true
|
||||||
REMOVE_MOBS: true
|
REMOVE_MOBS: true
|
||||||
ENDER_CHEST: false
|
ENDER_CHEST: false
|
||||||
ITEM_FRAME_DAMAGE: false
|
ITEM_FRAME_DAMAGE: false
|
||||||
|
TREES_GROWING_OUTSIDE_RANGE: false
|
||||||
BOAT: true
|
BOAT: true
|
||||||
# These are the default protection settings for new islands.
|
# These are the default protection settings for new islands.
|
||||||
# The value is the minimum island rank required allowed to do the action
|
# The value is the minimum island rank required allowed to do the action
|
||||||
# Ranks are: Visitor = 0, Member = 900, Owner = 1000
|
# Ranks are: Visitor = 0, Member = 900, Owner = 1000
|
||||||
default-island-flags:
|
default-island-flags:
|
||||||
HURT_ANIMALS: 500
|
HURT_ANIMALS: 500
|
||||||
|
LOOM: 500
|
||||||
DRAGON_EGG: 500
|
DRAGON_EGG: 500
|
||||||
REDSTONE: 500
|
REDSTONE: 500
|
||||||
BUCKET: 500
|
BUCKET: 500
|
||||||
LOCK: 0
|
LOCK: 0
|
||||||
ENDER_PEARL: 500
|
ENDER_PEARL: 500
|
||||||
|
BELL_RINGING: 500
|
||||||
DOOR: 500
|
DOOR: 500
|
||||||
BREAK_HOPPERS: 500
|
BREAK_HOPPERS: 500
|
||||||
FURNACE: 500
|
FURNACE: 500
|
||||||
|
HURT_TAMED_ANIMALS: 500
|
||||||
ANVIL: 500
|
ANVIL: 500
|
||||||
MINECART: 500
|
MINECART: 500
|
||||||
FISH_SCOOPING: 500
|
FISH_SCOOPING: 500
|
||||||
@ -256,6 +279,8 @@ world:
|
|||||||
END_PORTAL: 500
|
END_PORTAL: 500
|
||||||
BREEDING: 500
|
BREEDING: 500
|
||||||
HURT_VILLAGERS: 500
|
HURT_VILLAGERS: 500
|
||||||
|
BOOKSHELF: 500
|
||||||
|
HARVEST: 500
|
||||||
TURTLE_EGGS: 500
|
TURTLE_EGGS: 500
|
||||||
FROST_WALKER: 500
|
FROST_WALKER: 500
|
||||||
COLLECT_LAVA: 500
|
COLLECT_LAVA: 500
|
||||||
@ -268,6 +293,7 @@ world:
|
|||||||
NAME_TAG: 500
|
NAME_TAG: 500
|
||||||
ARMOR_STAND: 500
|
ARMOR_STAND: 500
|
||||||
CHANGE_SETTINGS: 1000
|
CHANGE_SETTINGS: 1000
|
||||||
|
SIGN_EDITING: 500
|
||||||
TRADING: 0
|
TRADING: 0
|
||||||
EGGS: 500
|
EGGS: 500
|
||||||
ITEM_DROP: 0
|
ITEM_DROP: 0
|
||||||
@ -278,15 +304,19 @@ world:
|
|||||||
SCULK_SENSOR: 500
|
SCULK_SENSOR: 500
|
||||||
LECTERN: 500
|
LECTERN: 500
|
||||||
SHULKER_BOX: 500
|
SHULKER_BOX: 500
|
||||||
|
GRINDSTONE: 500
|
||||||
ITEM_PICKUP: 0
|
ITEM_PICKUP: 0
|
||||||
CROP_TRAMPLE: 500
|
CROP_TRAMPLE: 500
|
||||||
DROPPER: 500
|
DROPPER: 500
|
||||||
BREWING: 500
|
BREWING: 500
|
||||||
|
MOVE_BOX: 1000
|
||||||
TNT_PRIMING: 500
|
TNT_PRIMING: 500
|
||||||
|
PARKOUR_CREATIVE: 500
|
||||||
COLLECT_WATER: 500
|
COLLECT_WATER: 500
|
||||||
AXOLOTL_SCOOPING: 500
|
AXOLOTL_SCOOPING: 500
|
||||||
BUTTON: 500
|
BUTTON: 500
|
||||||
COMPOSTER: 500
|
COMPOSTER: 500
|
||||||
|
STONECUTTING: 500
|
||||||
FIRE_EXTINGUISH: 500
|
FIRE_EXTINGUISH: 500
|
||||||
COMMAND_RANKS: 500
|
COMMAND_RANKS: 500
|
||||||
BEACON: 500
|
BEACON: 500
|
||||||
@ -298,6 +328,7 @@ world:
|
|||||||
HIVE: 500
|
HIVE: 500
|
||||||
ITEM_FRAME: 500
|
ITEM_FRAME: 500
|
||||||
PLACE_BLOCKS: 500
|
PLACE_BLOCKS: 500
|
||||||
|
CROP_PLANTING: 500
|
||||||
CRAFTING: 0
|
CRAFTING: 0
|
||||||
SHEARING: 500
|
SHEARING: 500
|
||||||
ENCHANTING: 0
|
ENCHANTING: 0
|
||||||
@ -309,8 +340,10 @@ world:
|
|||||||
DISPENSER: 500
|
DISPENSER: 500
|
||||||
SCULK_SHRIEKER: 500
|
SCULK_SHRIEKER: 500
|
||||||
GATE: 0
|
GATE: 0
|
||||||
|
SMITHING: 500
|
||||||
EXPERIENCE_PICKUP: 500
|
EXPERIENCE_PICKUP: 500
|
||||||
HOPPER: 500
|
HOPPER: 500
|
||||||
|
CANDLES: 500
|
||||||
LEASH: 500
|
LEASH: 500
|
||||||
MOUNT_INVENTORY: 500
|
MOUNT_INVENTORY: 500
|
||||||
BREAK_BLOCKS: 500
|
BREAK_BLOCKS: 500
|
||||||
@ -320,13 +353,16 @@ world:
|
|||||||
POTION_THROWING: 500
|
POTION_THROWING: 500
|
||||||
BARREL: 500
|
BARREL: 500
|
||||||
COLLECT_POWDERED_SNOW: 500
|
COLLECT_POWDERED_SNOW: 500
|
||||||
|
CARTOGRAPHY: 500
|
||||||
# These are the default settings for new islands
|
# These are the default settings for new islands
|
||||||
default-island-settings:
|
default-island-settings:
|
||||||
PVP_END: false
|
PVP_END: false
|
||||||
PVP_NETHER: false
|
PVP_NETHER: false
|
||||||
LEAF_DECAY: true
|
LEAF_DECAY: true
|
||||||
|
ENDERMAN_TELEPORT: true
|
||||||
ANIMAL_NATURAL_SPAWN: true
|
ANIMAL_NATURAL_SPAWN: true
|
||||||
MONSTER_NATURAL_SPAWN: true
|
MONSTER_NATURAL_SPAWN: true
|
||||||
|
SHULKER_TELEPORT: true
|
||||||
FIRE_SPREAD: true
|
FIRE_SPREAD: true
|
||||||
FIRE_BURNING: true
|
FIRE_BURNING: true
|
||||||
PVP_OVERWORLD: false
|
PVP_OVERWORLD: false
|
||||||
@ -551,4 +587,3 @@ protection:
|
|||||||
do-not-edit-these-settings:
|
do-not-edit-these-settings:
|
||||||
# These settings should not be edited
|
# These settings should not be edited
|
||||||
reset-epoch: 0
|
reset-epoch: 0
|
||||||
|
|
||||||
|
7
src/main/resources/locales/hr.yml
Normal file
7
src/main/resources/locales/hr.yml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
acidisland:
|
||||||
|
sign:
|
||||||
|
line0: "&1Otok kiseline"
|
||||||
|
line1: "[Ime]"
|
||||||
|
line2: Voda je kiselina!
|
||||||
|
line3: Budi oprezan! &c<3
|
Loading…
Reference in New Issue
Block a user