mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-22 17:17:37 +00:00
Wow
This commit is contained in:
parent
a770fc36e9
commit
b51df4cc6b
@ -4,7 +4,6 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import me.totalfreedom.plex.cache.MongoPlayerData;
|
import me.totalfreedom.plex.cache.MongoPlayerData;
|
||||||
import me.totalfreedom.plex.cache.SQLPlayerData;
|
import me.totalfreedom.plex.cache.SQLPlayerData;
|
||||||
import me.totalfreedom.plex.command.PlexCommand;
|
|
||||||
import me.totalfreedom.plex.config.MainConfig;
|
import me.totalfreedom.plex.config.MainConfig;
|
||||||
import me.totalfreedom.plex.listener.ChatListener;
|
import me.totalfreedom.plex.listener.ChatListener;
|
||||||
import me.totalfreedom.plex.listener.PlayerListener;
|
import me.totalfreedom.plex.listener.PlayerListener;
|
||||||
@ -15,6 +14,8 @@ import me.totalfreedom.plex.storage.SQLConnection;
|
|||||||
import me.totalfreedom.plex.storage.StorageType;
|
import me.totalfreedom.plex.storage.StorageType;
|
||||||
import me.totalfreedom.plex.util.PlexLog;
|
import me.totalfreedom.plex.util.PlexLog;
|
||||||
import me.totalfreedom.plex.util.PlexUtils;
|
import me.totalfreedom.plex.util.PlexUtils;
|
||||||
|
import me.totalfreedom.plex.world.Flatlands;
|
||||||
|
import org.bukkit.World;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
@ -34,6 +35,8 @@ public class Plex extends JavaPlugin
|
|||||||
|
|
||||||
private RankManager rankManager;
|
private RankManager rankManager;
|
||||||
|
|
||||||
|
public World flatlands;
|
||||||
|
|
||||||
public static Plex get()
|
public static Plex get()
|
||||||
{
|
{
|
||||||
return plugin;
|
return plugin;
|
||||||
@ -91,8 +94,7 @@ public class Plex extends JavaPlugin
|
|||||||
rankManager.importDefaultRanks();
|
rankManager.importDefaultRanks();
|
||||||
PlexLog.log("Rank Manager initialized");
|
PlexLog.log("Rank Manager initialized");
|
||||||
|
|
||||||
getCommand("plex").setExecutor(new PlexCommand());
|
generateWorlds();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -104,4 +106,11 @@ public class Plex extends JavaPlugin
|
|||||||
redisConnection.getJedis().close();
|
redisConnection.getJedis().close();
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void generateWorlds()
|
||||||
|
{
|
||||||
|
PlexLog.log("Generating any worlds if needed...");
|
||||||
|
flatlands = new Flatlands().generate();
|
||||||
|
PlexLog.log("Finished with world generation!");
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,16 +0,0 @@
|
|||||||
package me.totalfreedom.plex.command;
|
|
||||||
|
|
||||||
import me.totalfreedom.plex.PlexBase;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandExecutor;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
|
|
||||||
public class PlexCommand extends PlexBase implements CommandExecutor
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public boolean onCommand(CommandSender sender, Command message, String s, String[] args)
|
|
||||||
{
|
|
||||||
sender.sendMessage(plugin.config.getString("server.test"));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,12 @@
|
|||||||
|
package me.totalfreedom.plex.command.impl;
|
||||||
|
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface CommandParameters
|
||||||
|
{
|
||||||
|
String description() default "";
|
||||||
|
String usage() default "/<command>";
|
||||||
|
String aliases() default "";
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package me.totalfreedom.plex.command.impl;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.rank.enums.Rank;
|
||||||
|
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
public @interface CommandPermissions
|
||||||
|
{
|
||||||
|
Rank level() default Rank.IMPOSTOR;
|
||||||
|
RequiredCommandSource source();
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package me.totalfreedom.plex.command.impl;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import me.totalfreedom.plex.player.PlexPlayer;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandSource
|
||||||
|
{
|
||||||
|
@Getter
|
||||||
|
private CommandSender sender;
|
||||||
|
@Getter
|
||||||
|
private Player player;
|
||||||
|
private PlexPlayer plexPlayer;
|
||||||
|
|
||||||
|
public CommandSource(CommandSender sender)
|
||||||
|
{
|
||||||
|
this.sender = sender;
|
||||||
|
this.player = Bukkit.getPlayer(sender.getName());
|
||||||
|
this.plexPlayer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
106
src/main/java/me/totalfreedom/plex/command/impl/PlexCommand.java
Normal file
106
src/main/java/me/totalfreedom/plex/command/impl/PlexCommand.java
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
package me.totalfreedom.plex.command.impl;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.PlexBase;
|
||||||
|
import me.totalfreedom.plex.rank.enums.Rank;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.command.*;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public abstract class PlexCommand extends PlexBase implements CommandExecutor, TabCompleter
|
||||||
|
{
|
||||||
|
private static final String COMMAND_PREFIX = "Command_";
|
||||||
|
private static CommandMap COMMAND_MAP;
|
||||||
|
|
||||||
|
private final CommandParameters params;
|
||||||
|
private final CommandPermissions perms;
|
||||||
|
private final String name;
|
||||||
|
private final String description;
|
||||||
|
private final String usage;
|
||||||
|
private final List<String> aliases;
|
||||||
|
private final Rank level;
|
||||||
|
private final RequiredCommandSource source;
|
||||||
|
|
||||||
|
protected PlexCommand()
|
||||||
|
{
|
||||||
|
this.params = this.getClass().getAnnotation(CommandParameters.class);
|
||||||
|
this.perms = this.getClass().getAnnotation(CommandPermissions.class);
|
||||||
|
this.name = this.getClass().getSimpleName().toLowerCase().replace(COMMAND_PREFIX.toLowerCase(), "");
|
||||||
|
this.description = this.params.description();
|
||||||
|
this.usage = this.params.usage();
|
||||||
|
this.aliases = Arrays.asList(this.params.aliases().split(","));
|
||||||
|
this.level = this.perms.level();
|
||||||
|
this.source = this.perms.source();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void register()
|
||||||
|
{
|
||||||
|
PCommand command = new PCommand(this.name);
|
||||||
|
command.setDescription(this.description);
|
||||||
|
command.setUsage(this.usage);
|
||||||
|
command.setAliases(this.aliases);
|
||||||
|
this.getCommandMap().register("", command);
|
||||||
|
command.setExecutor(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CommandMap getCommandMap()
|
||||||
|
{
|
||||||
|
if (COMMAND_MAP == null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final Field f = Bukkit.getServer().getClass().getDeclaredField("commandMap");
|
||||||
|
f.setAccessible(true);
|
||||||
|
COMMAND_MAP = (CommandMap) f.get(Bukkit.getServer());
|
||||||
|
return getCommandMap();
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return COMMAND_MAP;
|
||||||
|
return getCommandMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class PCommand extends Command
|
||||||
|
{
|
||||||
|
private PlexCommand command = null;
|
||||||
|
|
||||||
|
private PCommand(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExecutor(PlexCommand command)
|
||||||
|
{
|
||||||
|
this.command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean execute(CommandSender sender, String c, String[] args)
|
||||||
|
{
|
||||||
|
if (command == null)
|
||||||
|
return false;
|
||||||
|
return command.onCommand(sender, this, c, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> tabComplete(CommandSender sender, String alias, String[] args)
|
||||||
|
{
|
||||||
|
if (command == null)
|
||||||
|
return null;
|
||||||
|
return Objects.requireNonNull(command.onTabComplete(sender, this, alias, args));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onCommand(CommandSender sender, Command cmd, String c, String[] args)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package me.totalfreedom.plex.command.impl;
|
||||||
|
|
||||||
|
public enum RequiredCommandSource
|
||||||
|
{
|
||||||
|
IN_GAME,
|
||||||
|
CONSOLE,
|
||||||
|
ANY
|
||||||
|
}
|
@ -7,7 +7,7 @@ import java.util.List;
|
|||||||
|
|
||||||
public enum Rank
|
public enum Rank
|
||||||
{
|
{
|
||||||
IMPOSTER(-1, ChatColor.AQUA + "an " + ChatColor.YELLOW + "Imposter", ChatColor.YELLOW + "[Imp]"),
|
IMPOSTOR(-1, ChatColor.AQUA + "an " + ChatColor.YELLOW + "Impostor", ChatColor.YELLOW + "[Imp]"),
|
||||||
NONOP(0, ChatColor.WHITE + "a " + ChatColor.WHITE + "Non-Op", ChatColor.WHITE + ""),
|
NONOP(0, ChatColor.WHITE + "a " + ChatColor.WHITE + "Non-Op", ChatColor.WHITE + ""),
|
||||||
OP(1, ChatColor.GREEN + "an " + ChatColor.GREEN + "Operator", ChatColor.GREEN + "[OP]"),
|
OP(1, ChatColor.GREEN + "an " + ChatColor.GREEN + "Operator", ChatColor.GREEN + "[OP]"),
|
||||||
ADMIN(2, ChatColor.DARK_GREEN + "an " + ChatColor.DARK_GREEN + "Admin", ChatColor.DARK_GREEN + "[Admin]"),
|
ADMIN(2, ChatColor.DARK_GREEN + "an " + ChatColor.DARK_GREEN + "Admin", ChatColor.DARK_GREEN + "[Admin]"),
|
||||||
|
58
src/main/java/me/totalfreedom/plex/world/Flatlands.java
Normal file
58
src/main/java/me/totalfreedom/plex/world/Flatlands.java
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
package me.totalfreedom.plex.world;
|
||||||
|
|
||||||
|
import me.totalfreedom.plex.Plex;
|
||||||
|
import me.totalfreedom.plex.world.impl.CustomWorld;
|
||||||
|
import me.totalfreedom.plex.world.impl.FlatChunkGenerator;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.Chunk;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.generator.BlockPopulator;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class Flatlands extends CustomWorld
|
||||||
|
{
|
||||||
|
private static Plex plugin = Plex.get();
|
||||||
|
|
||||||
|
public Flatlands()
|
||||||
|
{
|
||||||
|
super("flatlands", new FlatlandsChunkGenerator());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public World generate()
|
||||||
|
{
|
||||||
|
return super.generate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class FlatlandsChunkGenerator extends FlatChunkGenerator
|
||||||
|
{
|
||||||
|
public FlatlandsChunkGenerator()
|
||||||
|
{
|
||||||
|
super(50, new FlatlandsBlockPopulator());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void createLoopChunkData(int x, int y, int z, ChunkData chunk)
|
||||||
|
{
|
||||||
|
int height = this.height;
|
||||||
|
for (String key : plugin.config.getConfigurationSection("server.flatlands.parameters").getKeys(false))
|
||||||
|
{
|
||||||
|
Material material = Material.getMaterial(key.toUpperCase());
|
||||||
|
if (material == null) continue;
|
||||||
|
int count = plugin.config.getInt("server.flatlands.parameters." + key);
|
||||||
|
for (int i = 0; i < count; i++, height--)
|
||||||
|
chunk.setBlock(x, height, z, material);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class FlatlandsBlockPopulator extends BlockPopulator
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void populate(World world, Random random, Chunk chunk)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.generator.BlockPopulator;
|
||||||
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public abstract class CustomChunkGenerator extends ChunkGenerator
|
||||||
|
{
|
||||||
|
protected int height;
|
||||||
|
private final List<BlockPopulator> populators;
|
||||||
|
|
||||||
|
protected CustomChunkGenerator(int height, BlockPopulator... populators)
|
||||||
|
{
|
||||||
|
this.height = height;
|
||||||
|
this.populators = Arrays.asList(populators);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BlockPopulator> getDefaultPopulators(World world)
|
||||||
|
{
|
||||||
|
return populators;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void createLoopChunkData(int x, int y, int z, ChunkData chunk);
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.WorldCreator;
|
||||||
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
|
|
||||||
|
public class CustomWorld extends WorldCreator
|
||||||
|
{
|
||||||
|
private final CustomChunkGenerator chunks;
|
||||||
|
|
||||||
|
public CustomWorld(String name, CustomChunkGenerator generator)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
this.chunks = generator;
|
||||||
|
this.generator(this.chunks);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChunkGenerator generator()
|
||||||
|
{
|
||||||
|
return chunks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public World generate()
|
||||||
|
{
|
||||||
|
return this.createWorld();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.generator.BlockPopulator;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public abstract class FlatChunkGenerator extends CustomChunkGenerator
|
||||||
|
{
|
||||||
|
public FlatChunkGenerator(int height, BlockPopulator... populators)
|
||||||
|
{
|
||||||
|
super(height, populators);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome)
|
||||||
|
{
|
||||||
|
ChunkData chunk = this.createChunkData(world);
|
||||||
|
for (int xx = 0; xx < 16; xx++)
|
||||||
|
{
|
||||||
|
for (int zz = 0; zz < 16; zz++)
|
||||||
|
{
|
||||||
|
createLoopChunkData(xx, height, zz, chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return chunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void createLoopChunkData(int x, int y, int z, ChunkData chunk);
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.generator.BlockPopulator;
|
||||||
|
import org.bukkit.util.noise.PerlinNoiseGenerator;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public abstract class NoiseChunkGenerator extends CustomChunkGenerator
|
||||||
|
{
|
||||||
|
private final NoiseOptions options;
|
||||||
|
|
||||||
|
public NoiseChunkGenerator(int height, NoiseOptions options, BlockPopulator... populators)
|
||||||
|
{
|
||||||
|
super(height, populators);
|
||||||
|
this.options = options;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome)
|
||||||
|
{
|
||||||
|
ChunkData chunk = this.createChunkData(world);
|
||||||
|
PerlinNoiseGenerator generator = new PerlinNoiseGenerator(new Random(world.getSeed()));
|
||||||
|
for (int xx = 0; xx < 16; xx++)
|
||||||
|
{
|
||||||
|
for (int zz = 0; zz < 16; zz++)
|
||||||
|
{
|
||||||
|
height = (int) generator.noise(options.getX(), options.getY(), options.getFrequency(), options.getAmplitude(), options.isNormalized());
|
||||||
|
createLoopChunkData(xx, height, zz, chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return chunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void createLoopChunkData(int x, int y, int z, ChunkData chunk);
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
public class NoiseOptions
|
||||||
|
{
|
||||||
|
@Getter
|
||||||
|
private final int x;
|
||||||
|
@Getter
|
||||||
|
private final int y;
|
||||||
|
@Getter
|
||||||
|
private final double frequency;
|
||||||
|
@Getter
|
||||||
|
private final double amplitude;
|
||||||
|
@Getter
|
||||||
|
private final boolean normalized;
|
||||||
|
|
||||||
|
public NoiseOptions(int x, int y, double frequency, double amplitude, boolean normalized)
|
||||||
|
{
|
||||||
|
this.x = x;
|
||||||
|
this.y = y;
|
||||||
|
this.frequency = frequency;
|
||||||
|
this.amplitude = amplitude;
|
||||||
|
this.normalized = normalized;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.generator.BlockPopulator;
|
||||||
|
import org.bukkit.util.noise.PerlinOctaveGenerator;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public abstract class OctaveChunkGenerator extends CustomChunkGenerator
|
||||||
|
{
|
||||||
|
private OctaveOptions options;
|
||||||
|
|
||||||
|
public OctaveChunkGenerator(int height, OctaveOptions options, BlockPopulator... populators)
|
||||||
|
{
|
||||||
|
super(height, populators);
|
||||||
|
this.options = options;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ChunkData generateChunkData(World world, Random random, int x, int z, BiomeGrid biome)
|
||||||
|
{
|
||||||
|
ChunkData chunk = this.createChunkData(world);
|
||||||
|
PerlinOctaveGenerator generator = new PerlinOctaveGenerator(new Random(world.getSeed()), options.getOctaves());
|
||||||
|
for (int xx = 0; xx < 16; xx++)
|
||||||
|
{
|
||||||
|
for (int zz = 0; zz < 16; zz++)
|
||||||
|
{
|
||||||
|
height = (int) generator.noise(options.getX(), options.getY(), options.getFrequency(), options.getAmplitude(), options.isNormalized());
|
||||||
|
createLoopChunkData(xx, height, zz, chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return chunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void createLoopChunkData(int x, int y, int z, ChunkData chunk);
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
package me.totalfreedom.plex.world.impl;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
public class OctaveOptions extends NoiseOptions
|
||||||
|
{
|
||||||
|
@Getter
|
||||||
|
private final int octaves;
|
||||||
|
|
||||||
|
public OctaveOptions(int x, int y, double frequency, double amplitude, boolean normalized, int octaves)
|
||||||
|
{
|
||||||
|
super(x, y, frequency, amplitude, normalized);
|
||||||
|
this.octaves = octaves;
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,14 @@
|
|||||||
server:
|
server:
|
||||||
test: "test string"
|
test: "test string"
|
||||||
|
|
||||||
|
flatlands:
|
||||||
|
generate: true
|
||||||
|
parameters:
|
||||||
|
grass_block: 1
|
||||||
|
dirt: 32
|
||||||
|
stone: 16
|
||||||
|
bedrock: 1
|
||||||
|
|
||||||
data:
|
data:
|
||||||
central:
|
central:
|
||||||
storage: sqlite # use mariadb, mongodb, or sqlite here
|
storage: sqlite # use mariadb, mongodb, or sqlite here
|
||||||
|
Loading…
Reference in New Issue
Block a user