Add entryfee, spawning and spawn location

This commit is contained in:
Ben Woo 2023-09-02 23:07:39 +08:00
parent 1f7b8ffa96
commit 7828c92926
No known key found for this signature in database
GPG Key ID: FB2A3645536E12C8
8 changed files with 231 additions and 14 deletions

View File

@ -7,6 +7,8 @@ import com.onarandombox.MultiverseCore.worldnew.MVWorld;
import io.vavr.control.Try; import io.vavr.control.Try;
import org.bukkit.Difficulty; import org.bukkit.Difficulty;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -103,6 +105,22 @@ public class WorldConfig {
return configHandle.set(configNodes.DIFFICULTY, difficulty); return configHandle.set(configNodes.DIFFICULTY, difficulty);
} }
public double getEntryFeeAmount() {
return configHandle.get(configNodes.ENTRY_FEE_AMOUNT);
}
public Try<Void> setEntryFeeAmount(double entryFeeAmount) {
return configHandle.set(configNodes.ENTRY_FEE_AMOUNT, entryFeeAmount);
}
public Material getEntryFeeCurrency() {
return configHandle.get(configNodes.ENTRY_FEE_CURRENCY);
}
public Try<Void> setEntryFeeCurrency(Material entryFeeCurrency) {
return configHandle.set(configNodes.ENTRY_FEE_CURRENCY, entryFeeCurrency);
}
public World.Environment getEnvironment() { public World.Environment getEnvironment() {
return configHandle.get(configNodes.ENVIRONMENT); return configHandle.get(configNodes.ENVIRONMENT);
} }
@ -199,8 +217,64 @@ public class WorldConfig {
return configHandle.set(configNodes.SEED, seed); return configHandle.set(configNodes.SEED, seed);
} }
public Location getSpawnLocation() {
return configHandle.get(configNodes.SPAWN_LOCATION);
}
public Try<Void> setSpawnLocation(Location spawnLocation) {
return configHandle.set(configNodes.SPAWN_LOCATION, spawnLocation);
}
public boolean getSpawningAnimals() {
return configHandle.get(configNodes.SPAWNING_ANIMALS);
}
public Try<Void> setSpawningAnimals(boolean spawningAnimals) {
return configHandle.set(configNodes.SPAWNING_ANIMALS, spawningAnimals);
}
public int getSpawningAnimalsAmount() {
return configHandle.get(configNodes.SPAWNING_ANIMALS_AMOUNT);
}
public Try<Void> setSpawningAnimalsAmount(int spawningAnimalsAmount) {
return configHandle.set(configNodes.SPAWNING_ANIMALS_AMOUNT, spawningAnimalsAmount);
}
public List<String> getSpawningAnimalsExceptions() {
return configHandle.get(configNodes.SPAWNING_ANIMALS_EXCEPTIONS);
}
public Try<Void> setSpawningAnimalsExceptions(List<String> spawningAnimalsExceptions) {
return configHandle.set(configNodes.SPAWNING_ANIMALS_EXCEPTIONS, spawningAnimalsExceptions);
}
public boolean getSpawningMonsters() {
return configHandle.get(configNodes.SPAWNING_MONSTERS);
}
public Try<Void> setSpawningMonsters(boolean spawningMonsters) {
return configHandle.set(configNodes.SPAWNING_MONSTERS, spawningMonsters);
}
public int getSpawningMonstersAmount() {
return configHandle.get(configNodes.SPAWNING_MONSTERS_AMOUNT);
}
public Try<Void> setSpawningMonstersAmount(int spawningMonstersAmount) {
return configHandle.set(configNodes.SPAWNING_MONSTERS_AMOUNT, spawningMonstersAmount);
}
public List<String> getSpawningMonstersExceptions() {
return configHandle.get(configNodes.SPAWNING_MONSTERS_EXCEPTIONS);
}
public Try<Void> setSpawningMonstersExceptions(List<String> spawningMonstersExceptions) {
return configHandle.set(configNodes.SPAWNING_MONSTERS_EXCEPTIONS, spawningMonstersExceptions);
}
public List<String> getWorldBlacklist() { public List<String> getWorldBlacklist() {
return (List<String>) configHandle.get(configNodes.WORLD_BLACKLIST); return configHandle.get(configNodes.WORLD_BLACKLIST);
} }
public Try<Void> setWorldBlacklist(List<String> worldBlacklist) { public Try<Void> setWorldBlacklist(List<String> worldBlacklist) {

View File

@ -7,6 +7,8 @@ import com.onarandombox.MultiverseCore.world.configuration.AllowedPortalType;
import com.onarandombox.MultiverseCore.worldnew.MVWorld; import com.onarandombox.MultiverseCore.worldnew.MVWorld;
import org.bukkit.Difficulty; import org.bukkit.Difficulty;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -68,6 +70,16 @@ public class WorldConfigNodes {
}) })
.build()); .build());
public final ConfigNode<Double> ENTRY_FEE_AMOUNT = node(ConfigNode.builder("entry-fee.amount", Double.class)
.defaultValue(0.0)
.name("entryfee-amount")
.build());
public final ConfigNode<Material> ENTRY_FEE_CURRENCY = node(ConfigNode.builder("entry-fee.currency", Material.class)
.defaultValue(Material.AIR) // TODO: Convert from material ID
.name("entryfee-currency")
.build());
public final ConfigNode<World.Environment> ENVIRONMENT = node(ConfigNode.builder("environment", World.Environment.class) public final ConfigNode<World.Environment> ENVIRONMENT = node(ConfigNode.builder("environment", World.Environment.class)
.defaultValue(World.Environment.NORMAL) .defaultValue(World.Environment.NORMAL)
.name("environment") .name("environment")
@ -136,6 +148,40 @@ public class WorldConfigNodes {
.name("seed") .name("seed")
.build()); .build());
public final ConfigNode<Location> SPAWN_LOCATION = node(ConfigNode.builder("spawn-location", Location.class)
.name("spawn-location")
.build());
public final ConfigNode<Boolean> SPAWNING_ANIMALS = node(ConfigNode.builder("spawning.animals.spawn", Boolean.class)
.defaultValue(true)
.name("spawning-animals")
.build());
public final ConfigNode<Integer> SPAWNING_ANIMALS_AMOUNT = node(ConfigNode.builder("spawning.animals.amount", Integer.class)
.defaultValue(-1)
.name("spawning-animals-amount")
.build());
public final ConfigNode<List> SPAWNING_ANIMALS_EXCEPTIONS = node(ConfigNode.builder("spawning.animals.exceptions", List.class)
.defaultValue(new ArrayList<>())
.name("spawning-animals-exceptions")
.build());
public final ConfigNode<Boolean> SPAWNING_MONSTERS = node(ConfigNode.builder("spawning.monsters.spawn", Boolean.class)
.defaultValue(true)
.name("spawning-monsters")
.build());
public final ConfigNode<Integer> SPAWNING_MONSTERS_AMOUNT = node(ConfigNode.builder("spawning.monsters.amount", Integer.class)
.defaultValue(-1)
.name("spawning-monsters-amount")
.build());
public final ConfigNode<List> SPAWNING_MONSTERS_EXCEPTIONS = node(ConfigNode.builder("spawning.monsters.exceptions", List.class)
.defaultValue(new ArrayList<>())
.name("spawning-monsters-exceptions")
.build());
public final ConfigNode<List> WORLD_BLACKLIST = node(ConfigNode.builder("world-blacklist", List.class) public final ConfigNode<List> WORLD_BLACKLIST = node(ConfigNode.builder("world-blacklist", List.class)
.defaultValue(new ArrayList<>()) .defaultValue(new ArrayList<>())
.name("world-blacklist") .name("world-blacklist")
@ -150,8 +196,4 @@ public class WorldConfigNodes {
} }
// TODO: Migrate color and style into alias // TODO: Migrate color and style into alias
// TODO: spawning
// TODO: entryfee
// TODO: spawnLocation
// TODO: worldBlacklist
} }

View File

@ -13,7 +13,7 @@ import kotlin.test.assertNotNull
class WorldConfigMangerTest : TestWithMockBukkit() { class WorldConfigMangerTest : TestWithMockBukkit() {
private lateinit var worldConfigFile : WorldsConfigManager private lateinit var worldConfigManager : WorldsConfigManager
@BeforeTest @BeforeTest
fun setUp() { fun setUp() {
@ -21,13 +21,13 @@ class WorldConfigMangerTest : TestWithMockBukkit() {
assertNotNull(defaultConfig) assertNotNull(defaultConfig)
File(Path.of(multiverseCore.dataFolder.absolutePath, "worlds2.yml").absolutePathString()).writeText(defaultConfig) File(Path.of(multiverseCore.dataFolder.absolutePath, "worlds2.yml").absolutePathString()).writeText(defaultConfig)
worldConfigFile = worldConfigManager =
WorldsConfigManager(multiverseCore) WorldsConfigManager(multiverseCore)
} }
@Test @Test
fun `World config is loaded`() { fun `World config is loaded`() {
assertTrue(worldConfigFile.isLoaded) assertTrue(worldConfigManager.isLoaded)
} }
@Test @Test
@ -37,24 +37,24 @@ class WorldConfigMangerTest : TestWithMockBukkit() {
@Test @Test
fun `Add a new world to config`() { fun `Add a new world to config`() {
val worldConfig = worldConfigFile.addWorldConfig("newworld") val worldConfig = worldConfigManager.addWorldConfig("newworld")
worldConfigFile.save() worldConfigManager.save()
compareConfigFile("worlds2.yml", "/newworld_worlds.yml") compareConfigFile("worlds2.yml", "/newworld_worlds.yml")
} }
@Test @Test
fun `Updating existing world properties`() { fun `Updating existing world properties`() {
val worldConfig = worldConfigFile.getWorldConfig("world") val worldConfig = worldConfigManager.getWorldConfig("world")
worldConfig.setProperty("adjust-spawn", true) worldConfig.setProperty("adjust-spawn", true)
worldConfig.setProperty("alias", "newalias") worldConfig.setProperty("alias", "newalias")
worldConfigFile.save() worldConfigManager.save()
compareConfigFile("worlds2.yml", "/properties_worlds.yml") compareConfigFile("worlds2.yml", "/properties_worlds.yml")
} }
@Test @Test
fun `Delete world section from config`() { fun `Delete world section from config`() {
worldConfigFile.deleteWorldConfig("world") worldConfigManager.deleteWorldConfig("world")
worldConfigFile.save() worldConfigManager.save()
compareConfigFile("worlds2.yml", "/delete_worlds.yml") compareConfigFile("worlds2.yml", "/delete_worlds.yml")
} }

View File

@ -2,6 +2,7 @@ package org.mvplugins.multiverse.core.world
import com.onarandombox.MultiverseCore.worldnew.config.WorldConfig import com.onarandombox.MultiverseCore.worldnew.config.WorldConfig
import com.onarandombox.MultiverseCore.worldnew.config.WorldsConfigManager import com.onarandombox.MultiverseCore.worldnew.config.WorldsConfigManager
import org.bukkit.Location
import org.mvplugins.multiverse.core.TestWithMockBukkit import org.mvplugins.multiverse.core.TestWithMockBukkit
import java.io.File import java.io.File
import java.nio.file.Path import java.nio.file.Path
@ -60,6 +61,10 @@ class WorldConfigTest : TestWithMockBukkit() {
val blacklists = listOf("a", "b", "c") val blacklists = listOf("a", "b", "c")
assertTrue(worldConfig.setProperty("world-blacklist", blacklists).isSuccess) assertTrue(worldConfig.setProperty("world-blacklist", blacklists).isSuccess)
assertEquals(blacklists, worldConfig.getProperty("world-blacklist").get()) assertEquals(blacklists, worldConfig.getProperty("world-blacklist").get())
val location = Location(null, 1.0, 2.0, 3.0)
assertTrue(worldConfig.setProperty("spawn-location", location).isSuccess)
assertEquals(location, worldConfig.getProperty("spawn-location").get())
} }
@Test @Test

View File

@ -6,6 +6,9 @@ world:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NORMAL environment: NORMAL
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -18,6 +21,15 @@ world:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []
world_nether: world_nether:
adjust-spawn: false adjust-spawn: false
@ -27,6 +39,9 @@ world_nether:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NETHER environment: NETHER
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -39,4 +54,13 @@ world_nether:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []

View File

@ -6,6 +6,9 @@ world_nether:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NETHER environment: NETHER
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -18,4 +21,13 @@ world_nether:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []

View File

@ -6,6 +6,9 @@ world:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NORMAL environment: NORMAL
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -18,6 +21,15 @@ world:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []
world_nether: world_nether:
adjust-spawn: false adjust-spawn: false
@ -27,6 +39,9 @@ world_nether:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NETHER environment: NETHER
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -39,6 +54,15 @@ world_nether:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []
newworld: newworld:
adjust-spawn: false adjust-spawn: false
@ -48,6 +72,9 @@ newworld:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NORMAL environment: NORMAL
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -60,4 +87,13 @@ newworld:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []

View File

@ -6,6 +6,9 @@ world:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NORMAL environment: NORMAL
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -18,6 +21,15 @@ world:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []
world_nether: world_nether:
adjust-spawn: false adjust-spawn: false
@ -27,6 +39,9 @@ world_nether:
auto-heal: true auto-heal: true
auto-load: true auto-load: true
difficulty: NORMAL difficulty: NORMAL
entry-fee:
amount: 0.0
currency: AIR
environment: NETHER environment: NETHER
gamemode: SURVIVAL gamemode: SURVIVAL
generator: '' generator: ''
@ -39,4 +54,13 @@ world_nether:
respawn-world: '' respawn-world: ''
scale: 1.0 scale: 1.0
seed: -9223372036854775808 seed: -9223372036854775808
spawning:
animals:
spawn: true
amount: -1
exceptions: []
monsters:
spawn: true
amount: -1
exceptions: []
world-blacklist: [] world-blacklist: []