Plex/src/main/java/dev/plex/world/CustomWorld.java

71 lines
2.0 KiB
Java
Raw Normal View History

2021-01-03 07:21:15 +00:00
package dev.plex.world;
2020-10-31 04:51:22 +00:00
2021-01-03 07:21:15 +00:00
import dev.plex.Plex;
2022-01-27 21:23:01 +00:00
import java.io.File;
import java.util.Objects;
2022-03-03 23:24:15 +00:00
import net.kyori.adventure.text.Component;
import org.bukkit.Material;
2020-10-31 04:51:22 +00:00
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
2020-10-31 04:51:22 +00:00
import org.bukkit.generator.ChunkGenerator;
public class CustomWorld extends WorldCreator
{
private static final Plex plugin = Plex.get();
2020-10-31 04:51:22 +00:00
private final CustomChunkGenerator chunks;
public CustomWorld(String name, CustomChunkGenerator generator)
2020-10-31 04:51:22 +00:00
{
super(name);
this.chunks = generator;
this.generator(this.chunks);
}
public static World generateConfigFlatWorld(String name)
{
if (!plugin.config.contains("worlds." + name))
2020-11-06 01:29:38 +00:00
{
return null;
2020-11-06 01:29:38 +00:00
}
CustomWorld customWorld = new CustomWorld(name, new ConfigurationChunkGenerator(name))
{
@Override
public World generate()
{
boolean existed = new File(name).exists();
World world = super.generate();
if (!existed)
{
Block block = world.getBlockAt(0, world.getHighestBlockYAt(0, 0) + 1, 0);
block.setType(Material.OAK_SIGN);
BlockState state = block.getState();
if (state instanceof Sign)
{
2020-11-06 01:29:38 +00:00
Sign sign = (Sign)state;
2022-03-03 23:24:15 +00:00
sign.line(1, Component.text(
Objects.requireNonNull(plugin.config.getString("worlds." + name + ".name"))));
sign.line(2, Component.text("- 0, 0 -"));
sign.update();
}
}
return world;
}
};
return customWorld.generate();
}
2022-02-26 06:26:42 +00:00
@Override
public ChunkGenerator generator()
{
return chunks;
}
public World generate()
{
return this.createWorld();
}
2020-10-31 04:51:22 +00:00
}