package net.minecraft.world.level.storage; import java.util.Locale; import net.minecraft.CrashReportCategory; import net.minecraft.CrashReportDetail; import net.minecraft.core.BlockPos; import net.minecraft.world.Difficulty; import net.minecraft.world.level.LevelHeightAccessor; public interface LevelData { BlockPos getSpawnPos(); float getSpawnAngle(); long getGameTime(); /** * Get current world time */ long getDayTime(); /** * Returns {@code true} if it is thundering, {@code false} otherwise. */ boolean isThundering(); /** * Returns {@code true} if it is raining, {@code false} otherwise. */ boolean isRaining(); /** * Sets whether it is raining or not. */ void setRaining(boolean raining); /** * Returns {@code true} if hardcore mode is enabled, otherwise {@code false}. */ boolean isHardcore(); Difficulty getDifficulty(); boolean isDifficultyLocked(); default void fillCrashReportCategory(CrashReportCategory crashReportCategory, LevelHeightAccessor level) { crashReportCategory.setDetail("Level spawn location", (CrashReportDetail)(() -> CrashReportCategory.formatLocation(level, this.getSpawnPos()))); crashReportCategory.setDetail( "Level time", (CrashReportDetail)(() -> String.format(Locale.ROOT, "%d game time, %d day time", this.getGameTime(), this.getDayTime())) ); } }