123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319 |
- package me.km.world;
- import net.minecraft.world.Difficulty;
- import net.minecraft.world.storage.DerivedWorldInfo;
- import net.minecraft.world.storage.WorldInfo;
- import me.hammerle.snuviscript.config.SnuviConfig;
- import me.km.ObjectRegistry;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.nbt.CompoundNBT;
- import net.minecraft.nbt.ListNBT;
- import net.minecraft.server.MinecraftServer;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.GameRules;
- import static net.minecraft.world.GameRules.*;
- import net.minecraft.world.WorldType;
- import net.minecraft.world.biome.provider.BiomeProviderType;
- import net.minecraft.world.biome.provider.OverworldBiomeProviderSettings;
- public class ModWorldInfo extends DerivedWorldInfo {
- public static enum Type {
- VANILLA, VOID, DESERT, SNOW;
- public BiomeProviderType<OverworldBiomeProviderSettings, ModBiomeProvider> getProvider() {
- switch(this) {
- case DESERT:
- return ObjectRegistry.DESERT_BIOME_PROVIDER;
- case SNOW:
- return ObjectRegistry.SNOW_BIOME_PROVIDER;
- }
- return null;
- }
- }
- private final SnuviConfig config;
- private long gameTime;
- private long dayTime;
- private int clearWeatherTime;
- private boolean raining;
- private int rainTime;
- private boolean thundering;
- private int thunderTime;
- private Difficulty difficulty;
- private final GameRules gameRules = new GameRules();
- private int spawnX;
- private int spawnY;
- private int spawnZ;
- private long seed = -1;
- private Type type;
- public ModWorldInfo(WorldInfo info, String name, MinecraftServer server) {
- super(info);
- config = new SnuviConfig("worlddata", name);
- if(config.exists()) {
- config.load(null);
- }
- onLoad(info, server);
- org.apache.logging.log4j.LogManager.getLogger().warn("status: " + type);
- }
- private void onLoad(WorldInfo info, MinecraftServer server) {
- String configSeed = config.getString(null, "seed", null);
- if(configSeed != null) {
- seed = configSeed.hashCode();
- }
- spawnX = config.getInt(null, "spawnX", info.getSpawnX());
- spawnY = config.getInt(null, "spawnY", info.getSpawnY());
- spawnZ = config.getInt(null, "spawnZ", info.getSpawnZ());
- gameTime = config.getLong(null, "gameTime", info.getGameTime());
- dayTime = config.getLong(null, "dayTime", info.getDayTime());
- clearWeatherTime = config.getInt(null, "clearWeatherTime", info.getClearWeatherTime());
- raining = config.getBoolean(null, "raining", info.isRaining());
- rainTime = config.getInt(null, "rainTime", info.getRainTime());
- thundering = config.getBoolean(null, "thundering", info.isThundering());
- thunderTime = config.getInt(null, "thunderTime", info.getThunderTime());
- String diffi = config.getString(null, "difficulty");
- if(diffi == null) {
- difficulty = info.getDifficulty();
- } else {
- try {
- difficulty = Difficulty.valueOf(diffi);
- } catch(Exception ex) {
- difficulty = info.getDifficulty();
- }
- }
- GameRules rules = info.getGameRulesInstance();
- gameRules.get(DO_FIRE_TICK).set(config.getBoolean(null, "doFireTick", rules.getBoolean(DO_FIRE_TICK)), server);
- gameRules.get(MOB_GRIEFING).set(config.getBoolean(null, "mobGriefing", rules.getBoolean(MOB_GRIEFING)), server);
- gameRules.get(KEEP_INVENTORY).set(config.getBoolean(null, "keepInventory", rules.getBoolean(KEEP_INVENTORY)), server);
- gameRules.get(DO_MOB_SPAWNING).set(config.getBoolean(null, "doMobSpawning", rules.getBoolean(DO_MOB_SPAWNING)), server);
- gameRules.get(DO_MOB_LOOT).set(config.getBoolean(null, "doMobLoot", rules.getBoolean(DO_MOB_LOOT)), server);
- gameRules.get(DO_TILE_DROPS).set(config.getBoolean(null, "doTileDrops", rules.getBoolean(DO_TILE_DROPS)), server);
- gameRules.get(DO_ENTITY_DROPS).set(config.getBoolean(null, "doEntityDrops", rules.getBoolean(DO_ENTITY_DROPS)), server);
- gameRules.get(COMMAND_BLOCK_OUTPUT).set(config.getBoolean(null, "commandBlockOutput", rules.getBoolean(COMMAND_BLOCK_OUTPUT)), server);
- gameRules.get(NATURAL_REGENERATION).set(config.getBoolean(null, "naturalRegeneration", rules.getBoolean(NATURAL_REGENERATION)), server);
- gameRules.get(DO_DAYLIGHT_CYCLE).set(config.getBoolean(null, "doDaylightCycle", rules.getBoolean(DO_DAYLIGHT_CYCLE)), server);
- gameRules.get(LOG_ADMIN_COMMANDS).set(config.getBoolean(null, "logAdminCommands", rules.getBoolean(LOG_ADMIN_COMMANDS)), server);
- gameRules.get(SHOW_DEATH_MESSAGES).set(config.getBoolean(null, "showDeathMessages", rules.getBoolean(SHOW_DEATH_MESSAGES)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(RANDOM_TICK_SPEED), config.getInt(null, "randomTickSpeed", rules.getInt(RANDOM_TICK_SPEED)));
- gameRules.get(SEND_COMMAND_FEEDBACK).set(config.getBoolean(null, "sendCommandFeedback", rules.getBoolean(SEND_COMMAND_FEEDBACK)), server);
- gameRules.get(REDUCED_DEBUG_INFO).set(config.getBoolean(null, "reducedDebugInfo", rules.getBoolean(REDUCED_DEBUG_INFO)), server);
- gameRules.get(SPECTATORS_GENERATE_CHUNKS).set(config.getBoolean(null, "spectatorsGenerateChunks", rules.getBoolean(SPECTATORS_GENERATE_CHUNKS)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(SPAWN_RADIUS), config.getInt(null, "spawnRadius", rules.getInt(SPAWN_RADIUS)));
- gameRules.get(DISABLE_ELYTRA_MOVEMENT_CHECK).set(config.getBoolean(null, "disableElytraMovementCheck", rules.getBoolean(DISABLE_ELYTRA_MOVEMENT_CHECK)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(MAX_ENTITY_CRAMMING), config.getInt(null, "maxEntityCramming", rules.getInt(MAX_ENTITY_CRAMMING)));
- gameRules.get(DO_WEATHER_CYCLE).set(config.getBoolean(null, "doWeatherCycle", rules.getBoolean(DO_WEATHER_CYCLE)), server);
- gameRules.get(DO_LIMITED_CRAFTING).set(config.getBoolean(null, "doLimitedCrafting", rules.getBoolean(DO_LIMITED_CRAFTING)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(MAX_COMMAND_CHAIN_LENGTH), config.getInt(null, "maxCommandChainLength", rules.getInt(MAX_COMMAND_CHAIN_LENGTH)));
- gameRules.get(ANNOUNCE_ADVANCEMENTS).set(config.getBoolean(null, "announceAdvancements", rules.getBoolean(ANNOUNCE_ADVANCEMENTS)), server);
- gameRules.get(DISABLE_RAIDS).set(config.getBoolean(null, "disableRaids", rules.getBoolean(DISABLE_RAIDS)), server);
- gameRules.get(DO_INSOMNIA).set(config.getBoolean(null, "doInsomnia", rules.getBoolean(DO_INSOMNIA)), server);
- gameRules.get(DO_IMMEDIATE_RESPAWN).set(config.getBoolean(null, "doImmediateRespawn", rules.getBoolean(DO_IMMEDIATE_RESPAWN)), server);
- try {
- type = Type.valueOf(config.getString(null, "type", ""));
- } catch(IllegalArgumentException ex) {
- type = Type.VOID;
- }
- }
- public void onSave() {
- config.set("spawnX", spawnX);
- config.set("spawnY", spawnY);
- config.set("spawnZ", spawnZ);
- config.set("gameTime", gameTime);
- config.set("dayTime", dayTime);
- config.set("clearWeatherTime", clearWeatherTime);
- config.set("raining", raining);
- config.set("rainTime", rainTime);
- config.set("thundering", thundering);
- config.set("thunderTime", thunderTime);
- config.set("difficulty", difficulty);
- config.set("doFireTick", gameRules.getBoolean(DO_FIRE_TICK));
- config.set("mobGriefing", gameRules.getBoolean(MOB_GRIEFING));
- config.set("keepInventory", gameRules.getBoolean(KEEP_INVENTORY));
- config.set("doMobSpawning", gameRules.getBoolean(DO_MOB_SPAWNING));
- config.set("doMobLoot", gameRules.getBoolean(DO_MOB_LOOT));
- config.set("doTileDrops", gameRules.getBoolean(DO_TILE_DROPS));
- config.set("doEntityDrops", gameRules.getBoolean(DO_ENTITY_DROPS));
- config.set("commandBlockOutput", gameRules.getBoolean(COMMAND_BLOCK_OUTPUT));
- config.set("naturalRegeneration", gameRules.getBoolean(NATURAL_REGENERATION));
- config.set("doDaylightCycle", gameRules.getBoolean(DO_DAYLIGHT_CYCLE));
- config.set("logAdminCommands", gameRules.getBoolean(LOG_ADMIN_COMMANDS));
- config.set("showDeathMessages", gameRules.getBoolean(SHOW_DEATH_MESSAGES));
- config.set("randomTickSpeed", gameRules.getInt(RANDOM_TICK_SPEED));
- config.set("sendCommandFeedback", gameRules.getBoolean(SEND_COMMAND_FEEDBACK));
- config.set("reducedDebugInfo", gameRules.getBoolean(REDUCED_DEBUG_INFO));
- config.set("spectatorsGenerateChunks", gameRules.getBoolean(SPECTATORS_GENERATE_CHUNKS));
- config.set("spawnRadius", gameRules.getInt(SPAWN_RADIUS));
- config.set("disableElytraMovementCheck", gameRules.getBoolean(DISABLE_ELYTRA_MOVEMENT_CHECK));
- config.set("maxEntityCramming", gameRules.getInt(MAX_ENTITY_CRAMMING));
- config.set("doWeatherCycle", gameRules.getBoolean(DO_WEATHER_CYCLE));
- config.set("doLimitedCrafting", gameRules.getBoolean(DO_LIMITED_CRAFTING));
- config.set("maxCommandChainLength", gameRules.getInt(MAX_COMMAND_CHAIN_LENGTH));
- config.set("announceAdvancements", gameRules.getBoolean(ANNOUNCE_ADVANCEMENTS));
- config.set("disableRaids", gameRules.getBoolean(DISABLE_RAIDS));
- config.set("doInsomnia", gameRules.getBoolean(DO_INSOMNIA));
- config.set("doImmediateRespawn", gameRules.getBoolean(DO_IMMEDIATE_RESPAWN));
- config.set("type", type);
- config.save(null);
- }
- @Override
- public long getGameTime() {
- return this.gameTime;
- }
- @Override
- public long getDayTime() {
- return this.dayTime;
- }
- @Override
- public void setGameTime(long time) {
- this.gameTime = time;
- }
- @Override
- public void setDayTime(long time) {
- this.dayTime = time;
- }
- @Override
- public int getClearWeatherTime() {
- return this.clearWeatherTime;
- }
- @Override
- public void setClearWeatherTime(int cleanWeatherTimeIn) {
- this.clearWeatherTime = cleanWeatherTimeIn;
- }
- @Override
- public boolean isThundering() {
- return this.thundering;
- }
- @Override
- public void setThundering(boolean thunderingIn) {
- this.thundering = thunderingIn;
- }
- @Override
- public int getThunderTime() {
- return this.thunderTime;
- }
- @Override
- public void setThunderTime(int time) {
- this.thunderTime = time;
- }
- @Override
- public boolean isRaining() {
- return this.raining;
- }
- @Override
- public void setRaining(boolean isRaining) {
- this.raining = isRaining;
- }
- @Override
- public int getRainTime() {
- return this.rainTime;
- }
- @Override
- public void setRainTime(int time) {
- this.rainTime = time;
- }
- @Override
- public Difficulty getDifficulty() {
- return this.difficulty;
- }
- @Override
- public void setDifficulty(Difficulty newDifficulty) {
- this.difficulty = newDifficulty;
- }
- @Override
- public GameRules getGameRulesInstance() {
- return gameRules;
- }
- @Override
- public WorldType getGenerator() {
- if(type == Type.VOID) {
- return WorldType.FLAT;
- }
- return super.getGenerator();
- }
- public Type getType() {
- return type;
- }
- @Override
- public CompoundNBT getGeneratorOptions() {
- if(type == Type.VOID) {
- CompoundNBT base = new CompoundNBT();
- base.putString("biome", "minecraft:the_void");
- ListNBT list = new ListNBT();
- base.put("layers", list);
- CompoundNBT layer = new CompoundNBT();
- layer.putString("block", "minecraft:air");
- layer.putByte("height", (byte) 1);
- list.add(layer);
- return base;
- }
- return super.getGeneratorOptions();
- }
- @Override
- public void setSpawn(BlockPos spawnPoint) {
- spawnX = spawnPoint.getX();
- spawnY = spawnPoint.getY();
- spawnZ = spawnPoint.getZ();
- }
- @Override
- public int getSpawnX() {
- return spawnX;
- }
- @Override
- public int getSpawnY() {
- return spawnY;
- }
- @Override
- public int getSpawnZ() {
- return spawnZ;
- }
- @Override
- public long getSeed() {
- if(seed != -1) {
- return seed;
- }
- return super.getSeed();
- }
- }
|