123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- 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.Server;
- import me.km.utils.ReflectionUtils;
- import net.minecraft.nbt.CompoundNBT;
- import net.minecraft.nbt.ListNBT;
- import net.minecraft.server.MinecraftServer;
- 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 Type type;
-
- public ModWorldInfo(WorldInfo info, String name, MinecraftServer server)
- {
- super(info);
-
- config = new SnuviConfig(Server.getLogger(), "worlddata", name);
- if(config.exists())
- {
- config.load();
- }
- onLoad(info, server);
-
- org.apache.logging.log4j.LogManager.getLogger().warn("status: " + type);
- }
-
- private void onLoad(WorldInfo info, MinecraftServer server)
- {
- gameTime = config.getLong("gameTime", info.getGameTime());
- dayTime = config.getLong("dayTime", info.getDayTime());
- clearWeatherTime = config.getInt("clearWeatherTime", info.getClearWeatherTime());
- raining = config.getBoolean("raining", info.isRaining());
- rainTime = config.getInt("rainTime", info.getRainTime());
- thundering = config.getBoolean("thundering", info.isThundering());
- thunderTime = config.getInt("thunderTime", info.getThunderTime());
-
- String diffi = config.getString("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("doFireTick", rules.getBoolean(DO_FIRE_TICK)), server);
- gameRules.get(MOB_GRIEFING).set(config.getBoolean("mobGriefing", rules.getBoolean(MOB_GRIEFING)), server);
- gameRules.get(KEEP_INVENTORY).set(config.getBoolean("keepInventory", rules.getBoolean(KEEP_INVENTORY)), server);
- gameRules.get(DO_MOB_SPAWNING).set(config.getBoolean("doMobSpawning", rules.getBoolean(DO_MOB_SPAWNING)), server);
- gameRules.get(DO_MOB_LOOT).set(config.getBoolean("doMobLoot", rules.getBoolean(DO_MOB_LOOT)), server);
- gameRules.get(DO_TILE_DROPS).set(config.getBoolean("doTileDrops", rules.getBoolean(DO_TILE_DROPS)), server);
- gameRules.get(DO_ENTITY_DROPS).set(config.getBoolean("doEntityDrops", rules.getBoolean(DO_ENTITY_DROPS)), server);
- gameRules.get(COMMAND_BLOCK_OUTPUT).set(config.getBoolean("commandBlockOutput", rules.getBoolean(COMMAND_BLOCK_OUTPUT)), server);
- gameRules.get(NATURAL_REGENERATION).set(config.getBoolean("naturalRegeneration", rules.getBoolean(NATURAL_REGENERATION)), server);
- gameRules.get(DO_DAYLIGHT_CYCLE).set(config.getBoolean("doDaylightCycle", rules.getBoolean(DO_DAYLIGHT_CYCLE)), server);
- gameRules.get(LOG_ADMIN_COMMANDS).set(config.getBoolean("logAdminCommands", rules.getBoolean(LOG_ADMIN_COMMANDS)), server);
- gameRules.get(SHOW_DEATH_MESSAGES).set(config.getBoolean("showDeathMessages", rules.getBoolean(SHOW_DEATH_MESSAGES)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(RANDOM_TICK_SPEED), config.getInt("randomTickSpeed", rules.getInt(RANDOM_TICK_SPEED)));
- gameRules.get(SEND_COMMAND_FEEDBACK).set(config.getBoolean("sendCommandFeedback", rules.getBoolean(SEND_COMMAND_FEEDBACK)), server);
- gameRules.get(REDUCED_DEBUG_INFO).set(config.getBoolean("reducedDebugInfo", rules.getBoolean(REDUCED_DEBUG_INFO)), server);
- gameRules.get(SPECTATORS_GENERATE_CHUNKS).set(config.getBoolean("spectatorsGenerateChunks", rules.getBoolean(SPECTATORS_GENERATE_CHUNKS)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(SPAWN_RADIUS), config.getInt("spawnRadius", rules.getInt(SPAWN_RADIUS)));
- gameRules.get(DISABLE_ELYTRA_MOVEMENT_CHECK).set(config.getBoolean("disableElytraMovementCheck", rules.getBoolean(DISABLE_ELYTRA_MOVEMENT_CHECK)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(MAX_ENTITY_CRAMMING), config.getInt("maxEntityCramming", rules.getInt(MAX_ENTITY_CRAMMING)));
- gameRules.get(DO_WEATHER_CYCLE).set(config.getBoolean("doWeatherCycle", rules.getBoolean(DO_WEATHER_CYCLE)), server);
- gameRules.get(DO_LIMITED_CRAFTING).set(config.getBoolean("doLimitedCrafting", rules.getBoolean(DO_LIMITED_CRAFTING)), server);
- ReflectionUtils.setIntegerValue(gameRules.get(MAX_COMMAND_CHAIN_LENGTH), config.getInt("maxCommandChainLength", rules.getInt(MAX_COMMAND_CHAIN_LENGTH)));
- gameRules.get(ANNOUNCE_ADVANCEMENTS).set(config.getBoolean("announceAdvancements", rules.getBoolean(ANNOUNCE_ADVANCEMENTS)), server);
- gameRules.get(DISABLE_RAIDS).set(config.getBoolean("disableRaids", rules.getBoolean(DISABLE_RAIDS)), server);
- gameRules.get(DO_INSOMNIA).set(config.getBoolean("doInsomnia", rules.getBoolean(DO_INSOMNIA)), server);
- gameRules.get(DO_IMMEDIATE_RESPAWN).set(config.getBoolean("doImmediateRespawn", rules.getBoolean(DO_IMMEDIATE_RESPAWN)), server);
-
- try
- {
- type = Type.valueOf(config.getString("type", ""));
- }
- catch(IllegalArgumentException ex)
- {
- type = Type.VOID;
- }
- }
-
- public void onSave()
- {
- 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();
- }
- @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();
- }
- }
|