From 0464fa576471dd670c80ea05748d881e76840f8a Mon Sep 17 00:00:00 2001 From: Forwolk Date: Fri, 27 Jul 2018 09:10:19 +0300 Subject: [PATCH] More biomes --- core/src/main/java/mc/core/world/Biome.java | 25 +++++++++++++++++-- core/src/main/java/mc/core/world/Chunk.java | 6 ++--- core/src/main/java/mc/core/world/Region.java | 10 ++++++++ core/src/main/java/mc/core/world/World.java | 22 ++++++++++++++++ .../main/java/mc/world/flat/SimpleChunk.java | 2 +- 5 files changed, 58 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/mc/core/world/Biome.java b/core/src/main/java/mc/core/world/Biome.java index 4d05677..ef59d8f 100644 --- a/core/src/main/java/mc/core/world/Biome.java +++ b/core/src/main/java/mc/core/world/Biome.java @@ -3,8 +3,29 @@ package mc.core.world; import lombok.Getter; public enum Biome { - PLAIN(0, "Plain"), - DESERT(1, "Desert"); + OCEAN(0, "Ocean"), + PLAINS(1, "Plains"), + DESERT(2, "Desert"), + EXTREME_HILLS(3, "Extreme hills"), + FOREST(4, "Forest"), + TAIGA(5, "Taiga"), + SWAMPLAND(6, "Swampland"), + RIVER(7, "River"), + HELL(8, "Hell"), + SKY(9, "Sky"), + FROZEN_OCEAN(10, "Frozen ocean"), + FROZEN_RIVER(11, "Frozen river"), + ICE_PLAINS(12, "Ice plains"), + ICE_MOUNTAINS(13, "Ice mountains"), + MUSHROOM_ISLAND(14, "Mushroom island"), + MUSHROOM_ISLAND_SHORE(15, "Mushroom island shore"), + BEACH(16, "Beach"), + DESERT_HILLS(17, "Desert hills"), + FOREST_HILLS(18, "Forest hills"), + TAIGA_HILLS(19, "Taiga hills"), + EXTREME_HILLS_EDGE(20, "Extreme hills edge"), + JUNGLE(21, "Jungle"), + JUNGLE_HILLS(22, "Jungle hills"); @Getter private final int id; diff --git a/core/src/main/java/mc/core/world/Chunk.java b/core/src/main/java/mc/core/world/Chunk.java index 4effb4e..6d7f889 100644 --- a/core/src/main/java/mc/core/world/Chunk.java +++ b/core/src/main/java/mc/core/world/Chunk.java @@ -12,8 +12,6 @@ import mc.core.block.Block; * +-------------+----------------+------------+ * | param | range | bits | * +-------------+----------------+------------+ - * | biomeMap | 16x16 0-16 | 4096 | - * +-------------+----------------+------------+ * | | | 3 | * +-------------+----------------+------------+ * | block_count | 0:4096 | 13 | @@ -21,8 +19,8 @@ import mc.core.block.Block; * | blocks | array | 24*count | * +-------------+----------------+------------+ * - * Total: 4112 bits header (514 bytes) + 24 * block_count bits (3 * block_count bytes) - * Max size: 12802 bytes (~13 Mb per chunk) + * Total: 16 bits header (2 bytes) + 24 * block_count bits (3 * block_count bytes) + * Max size: 12290 bytes (~12 Mb per chunk) * */ /* 16x16x16 */ diff --git a/core/src/main/java/mc/core/world/Region.java b/core/src/main/java/mc/core/world/Region.java index 615af3e..2e35834 100644 --- a/core/src/main/java/mc/core/world/Region.java +++ b/core/src/main/java/mc/core/world/Region.java @@ -3,6 +3,16 @@ package mc.core.world; /** * Simple world generation unit * 16x16x16 chunks + * + * + * +-------------+----------------+------------+ + * | param | range | bits | + * +-------------+----------------+------------+ + * | biome_map | 256x256 0-32 | 2097152 | + * +-------------+----------------+------------+ + * + * Total: 2097152 bits (262144 bytes = 256 Mb) + * */ public interface Region { Chunk getChunkAt(int x, int y, int z); diff --git a/core/src/main/java/mc/core/world/World.java b/core/src/main/java/mc/core/world/World.java index 4491769..2c0f69a 100644 --- a/core/src/main/java/mc/core/world/World.java +++ b/core/src/main/java/mc/core/world/World.java @@ -8,6 +8,26 @@ import mc.core.Location; import java.util.UUID; +/** + * WorldInfo + * +-------------+----------------+------------+ + * | param | range | bits | + * +-------------+----------------+------------+ + * | worldId | uuid | 128 | + * +-------------+----------------+------------+ + * | worldName | string [0-64] | 512 | + * +-------------+----------------+------------+ + * | spawnX | -524288:524287 | 20 | + * +-------------+----------------+------------+ + * | spawnY | 0:255 | 8 | + * +-------------+----------------+------------+ + * | spawnZ | -524288:524287 | 20 | + * +-------------+----------------+------------+ + * | seed | long | 64 | + * +-------------+----------------+------------+ + * + */ + public interface World { UUID getWorldId(); IWorldType getWorldType(); @@ -17,4 +37,6 @@ public interface World { Chunk getChunk(int x, int y, int z); void setChunk(int x, int y, int z, Chunk chunk); + + long getSeed (); } diff --git a/flat_world/src/main/java/mc/world/flat/SimpleChunk.java b/flat_world/src/main/java/mc/world/flat/SimpleChunk.java index fbc6b44..09cbb5d 100644 --- a/flat_world/src/main/java/mc/world/flat/SimpleChunk.java +++ b/flat_world/src/main/java/mc/world/flat/SimpleChunk.java @@ -65,7 +65,7 @@ public class SimpleChunk implements Chunk { @Override public Biome getBiome(int x, int z) { - return Biome.PLAIN; + return Biome.PLAINS; } @Override