Minecraft 1.21.5

This commit is contained in:
LOOHP 2025-04-15 23:15:08 +01:00
parent 0b6013629a
commit 13a89914d5
106 changed files with 114896 additions and 113538 deletions

View File

@ -1,6 +1,6 @@
# Limbo # Limbo
[![Build Status](http://ci.loohpjames.com/job/Limbo/badge/icon)](http://ci.loohpjames.com/job/Limbo/) [![Build Status](http://ci.loohpjames.com/job/Limbo/badge/icon)](http://ci.loohpjames.com/job/Limbo/)
## Standalone Limbo Minecraft Server (Currently 1.21.4) ## Standalone Limbo Minecraft Server (Currently 1.21.5)
https://www.spigotmc.org/resources/82468/ https://www.spigotmc.org/resources/82468/
@ -18,7 +18,7 @@ IP: mc.loohpjames.com
``` ```
![Server Banner](https://api.loohpjames.com/serverbanner.png?ip=mc.loohpjames.com&width=918&name=IP:%20mc.loohpjames.com) ![Server Banner](https://api.loohpjames.com/serverbanner.png?ip=mc.loohpjames.com&width=918&name=IP:%20mc.loohpjames.com)
*** ***
### Downloads (1.17.1-1.21.4) ### Downloads (1.17.1-1.21.5)
- [Jenkins](http://ci.loohpjames.com/job/Limbo/) - [Jenkins](http://ci.loohpjames.com/job/Limbo/)
*** ***
### Offical Plugins ### Offical Plugins

14
pom.xml
View File

@ -24,7 +24,7 @@
<groupId>com.loohp</groupId> <groupId>com.loohp</groupId>
<artifactId>Limbo</artifactId> <artifactId>Limbo</artifactId>
<name>Limbo</name> <name>Limbo</name>
<version>0.7.12-ALPHA</version> <version>0.7.13-ALPHA</version>
<description>Standalone Limbo Minecraft Server.</description> <description>Standalone Limbo Minecraft Server.</description>
<url>https://github.com/LOOHP/Limbo</url> <url>https://github.com/LOOHP/Limbo</url>
@ -136,7 +136,7 @@
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
<finalName>${project.artifactId}-${project.version}-1.21.4</finalName> <finalName>${project.artifactId}-${project.version}-1.21.5</finalName>
</build> </build>
<profiles> <profiles>
@ -265,31 +265,31 @@
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-gson</artifactId> <artifactId>adventure-text-serializer-gson</artifactId>
<version>4.17.0</version> <version>4.18.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-legacy</artifactId> <artifactId>adventure-text-serializer-legacy</artifactId>
<version>4.17.0</version> <version>4.18.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-text-serializer-plain</artifactId> <artifactId>adventure-text-serializer-plain</artifactId>
<version>4.17.0</version> <version>4.18.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-api</artifactId> <artifactId>adventure-api</artifactId>
<version>4.17.0</version> <version>4.18.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.kyori</groupId> <groupId>net.kyori</groupId>
<artifactId>adventure-nbt</artifactId> <artifactId>adventure-nbt</artifactId>
<version>4.17.0</version> <version>4.18.0</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>

Binary file not shown.

View File

@ -132,8 +132,8 @@ public final class Limbo {
//=========================== //===========================
public final String SERVER_IMPLEMENTATION_VERSION = "1.21.4"; public final String SERVER_IMPLEMENTATION_VERSION = "1.21.5";
public final int SERVER_IMPLEMENTATION_PROTOCOL = 769; public final int SERVER_IMPLEMENTATION_PROTOCOL = 770;
public final String LIMBO_IMPLEMENTATION_VERSION; public final String LIMBO_IMPLEMENTATION_VERSION;
private final AtomicBoolean isRunning; private final AtomicBoolean isRunning;
@ -163,7 +163,6 @@ public final class Limbo {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
private Unsafe unsafe; private Unsafe unsafe;
@SuppressWarnings("unchecked")
public Limbo() throws IOException, ParseException, NumberFormatException, ClassNotFoundException, InterruptedException { public Limbo() throws IOException, ParseException, NumberFormatException, ClassNotFoundException, InterruptedException {
instance = this; instance = this;
unsafe = new Unsafe(this); unsafe = new Unsafe(this);

View File

@ -31,8 +31,8 @@ import java.util.Map.Entry;
public class DataWatcher { public class DataWatcher {
private Entity entity; private final Entity entity;
private Map<Field, WatchableObject> values; private final Map<Field, WatchableObject> values;
public DataWatcher(Entity entity) { public DataWatcher(Entity entity) {
this.entity = entity; this.entity = entity;
@ -147,7 +147,7 @@ public class DataWatcher {
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD) @Target(ElementType.FIELD)
public static @interface WatchableField { public @interface WatchableField {
int MetadataIndex(); int MetadataIndex();
WatchableObjectType WatchableObjectType(); WatchableObjectType WatchableObjectType();
boolean IsOptional() default false; boolean IsOptional() default false;
@ -155,26 +155,37 @@ public class DataWatcher {
int Bitmask() default 0x00; int Bitmask() default 0x00;
} }
public static enum WatchableObjectType { public enum WatchableObjectType {
BYTE(0), BYTE(0),
VARINT(1, 17), VARINT(1, 20),
FLOAT(2), VARLONG(2, 17),
STRING(3), FLOAT(3),
CHAT(4, 5), STRING(4),
SLOT(6), CHAT(5, 6),
BOOLEAN(7), SLOT(7),
ROTATION(8), BOOLEAN(8),
POSITION(9, 10), ROTATION(9),
DIRECTION(11), POSITION(10, 11),
UUID(-1, 12), DIRECTION(12),
BLOCKID(-1, 13), UUID(-1, 13),
NBT(14), BLOCKID(14, 15),
PARTICLE(15), NBT(16),
VILLAGER_DATA(16), PARTICLE(17),
POSE(18); PARTICLES(18),
VILLAGER_DATA(19),
POSE(21),
CAT_VARIANT(22),
WOLF_VARIANT(23),
FROG_VARIANT(24),
GLOBAL_POSITION(-1, 25),
PAINTING_VARIANT(26),
SNIFFER_STATE(27),
ARMADILLO_STATE(28),
VECTOR3(29),
QUATERNION(30);
int typeId; private final int typeId;
int optionalTypeId; private final int optionalTypeId;
WatchableObjectType(int typeId, int optionalTypeId) { WatchableObjectType(int typeId, int optionalTypeId) {
this.typeId = typeId; this.typeId = typeId;

View File

@ -601,6 +601,7 @@ public class ClientConnection extends Thread {
PacketPlayOutGameStateChange gameEvent = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.GameStateChangeEvent.LEVEL_CHUNKS_LOAD_START, 0); PacketPlayOutGameStateChange gameEvent = new PacketPlayOutGameStateChange(PacketPlayOutGameStateChange.GameStateChangeEvent.LEVEL_CHUNKS_LOAD_START, 0);
sendPacket(gameEvent); sendPacket(gameEvent);
player.playerInteractManager.update(); player.playerInteractManager.update();
PacketPlayOutDeclareCommands declare = DeclareCommands.getDeclareCommandsPacket(player); PacketPlayOutDeclareCommands declare = DeclareCommands.getDeclareCommandsPacket(player);

View File

@ -28,6 +28,7 @@ import com.loohp.limbo.world.GeneratedBlockDataMappings;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.querz.mca.Chunk; import net.querz.mca.Chunk;
import net.querz.mca.Section; import net.querz.mca.Section;
import net.querz.nbt.io.SNBTUtil;
import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag; import net.querz.nbt.tag.ListTag;
@ -120,7 +121,14 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
output.writeInt(chunkX); output.writeInt(chunkX);
output.writeInt(chunkZ); output.writeInt(chunkZ);
DataTypeIO.writeTag(output, chunk.getHeightMaps());
DataTypeIO.writeVarInt(output, 1);
DataTypeIO.writeVarInt(output, 4);
long[] motionBlocking = chunk.getHeightMaps().getLongArray("MOTION_BLOCKING");
DataTypeIO.writeVarInt(output, motionBlocking.length);
for (long l : motionBlocking) {
output.writeLong(l);
}
ByteArrayOutputStream dataBuffer = new ByteArrayOutputStream(); ByteArrayOutputStream dataBuffer = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(dataBuffer); DataOutputStream dataOut = new DataOutputStream(dataBuffer);
@ -164,7 +172,7 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
long[] formattedLongs = bits.toLongArray(); long[] formattedLongs = bits.toLongArray();
//Limbo.getInstance().getConsole().sendMessage(longsNeeded + ""); //Limbo.getInstance().getConsole().sendMessage(longsNeeded + "");
DataTypeIO.writeVarInt(dataOut, longsNeeded); //DataTypeIO.writeVarInt(dataOut, longsNeeded); ???
for (int u = 0; u < longsNeeded; u++) { for (int u = 0; u < longsNeeded; u++) {
if (u < formattedLongs.length) { if (u < formattedLongs.length) {
dataOut.writeLong(formattedLongs[u]); dataOut.writeLong(formattedLongs[u]);
@ -203,7 +211,7 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
currentLong = currentLong << 16; currentLong = currentLong << 16;
currentLong |= id; currentLong |= id;
} }
DataTypeIO.writeVarInt(dataOut, longsNeeded); //DataTypeIO.writeVarInt(dataOut, longsNeeded); ???
for (int j = 0; j < longsNeeded; j++) { for (int j = 0; j < longsNeeded; j++) {
if (j < globalLongs.size()) { if (j < globalLongs.size()) {
dataOut.writeLong(globalLongs.get(j)); dataOut.writeLong(globalLongs.get(j));
@ -219,21 +227,21 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
dataOut.writeShort(0); dataOut.writeShort(0);
dataOut.writeByte(0); dataOut.writeByte(0);
DataTypeIO.writeVarInt(dataOut, 0); DataTypeIO.writeVarInt(dataOut, 0);
DataTypeIO.writeVarInt(dataOut, 0); //DataTypeIO.writeVarInt(dataOut, 0); ???
} }
int biome; int biome;
if (environment.equals(Environment.END)) { if (environment.equals(Environment.END)) {
biome = 55; //the_end biome = 56; //the_end
} else if (environment.equals(Environment.NETHER)) { } else if (environment.equals(Environment.NETHER)) {
biome = 34; //nether_waste biome = 34; //nether_waste
} else if (environment.equals(Environment.NORMAL)) { } else if (environment.equals(Environment.NORMAL)) {
biome = 39; //plains biome = 40; //plains
} else { } else {
biome = 39; //plains biome = 40; //plains
} }
dataOut.writeByte(0); dataOut.writeByte(0);
DataTypeIO.writeVarInt(dataOut, biome); DataTypeIO.writeVarInt(dataOut, biome);
DataTypeIO.writeVarInt(dataOut, 0); //DataTypeIO.writeVarInt(dataOut, 0); ???
} }
byte[] data = dataBuffer.toByteArray(); byte[] data = dataBuffer.toByteArray();
@ -246,10 +254,14 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
int x = each.getInt("x") % 16; int x = each.getInt("x") % 16;
int y = each.getInt("y"); int y = each.getInt("y");
int z = each.getInt("z") % 16; int z = each.getInt("z") % 16;
Key key = Key.key(chunk.getBlockStateAt(x, y, z).getString("Name"));
int id = BuiltInRegistries.BLOCK_ENTITY_TYPE.getId(key);
if (id < 0) {
new IllegalStateException("Unable to get block entity type for " + key + " (Is this scheme created in the same Minecraft version as Limbo?)").printStackTrace();
}
output.writeByte(((x & 15) << 4) | (z & 15)); output.writeByte(((x & 15) << 4) | (z & 15));
output.writeShort(y); output.writeShort(y);
Integer id = BuiltInRegistries.BLOCK_ENTITY_TYPE.getId(Key.key(chunk.getBlockStateAt(x, y, z).getString("Name"))); DataTypeIO.writeVarInt(output, Math.max(0, id));
DataTypeIO.writeVarInt(output, id == null ? -1 : id);
DataTypeIO.writeTag(output, each); DataTypeIO.writeTag(output, each);
} }
@ -276,8 +288,8 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
if (array != null) { if (array != null) {
DataTypeIO.writeVarInt(output, 2048); DataTypeIO.writeVarInt(output, 2048);
//System.out.println(Arrays.toString(ArrayUtils.toPrimitive(array))); //System.out.println(Arrays.toString(ArrayUtils.toPrimitive(array)));
for (int u = 0; u < array.length; u++) { for (Byte aByte : array) {
output.writeByte(array[u]); output.writeByte(aByte);
} }
} }
} }
@ -288,8 +300,8 @@ public class ClientboundLevelChunkWithLightPacket extends PacketOut {
if (array != null) { if (array != null) {
DataTypeIO.writeVarInt(output, 2048); DataTypeIO.writeVarInt(output, 2048);
//System.out.println(Arrays.toString(ArrayUtils.toPrimitive(array))); //System.out.println(Arrays.toString(ArrayUtils.toPrimitive(array)));
for (int u = 0; u < array.length; u++) { for (Byte aByte : array) {
output.writeByte(array[u]); output.writeByte(aByte);
} }
} }
} }

View File

@ -72,11 +72,11 @@ public class PacketPlayOutPlayerAbilities extends PacketOut {
DataOutputStream output = new DataOutputStream(buffer); DataOutputStream output = new DataOutputStream(buffer);
output.writeByte(PacketRegistry.getPacketId(getClass())); output.writeByte(PacketRegistry.getPacketId(getClass()));
byte value = 0; byte value = 0;
for (PlayerAbilityFlags flag : flags) { for (PlayerAbilityFlags flag : flags) {
value = (byte) (value | flag.getValue()); value = (byte) (value | flag.getValue());
} }
output.writeByte(value); output.writeByte(value);
output.writeFloat(flySpeed); output.writeFloat(flySpeed);
output.writeFloat(fieldOfField); output.writeFloat(fieldOfField);

View File

@ -20,6 +20,8 @@
package com.loohp.limbo.network.protocol.packets; package com.loohp.limbo.network.protocol.packets;
import com.loohp.limbo.registry.PacketRegistry; import com.loohp.limbo.registry.PacketRegistry;
import com.loohp.limbo.utils.DataTypeIO;
import com.loohp.limbo.world.ChunkPosition;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream; import java.io.DataOutputStream;
@ -27,20 +29,14 @@ import java.io.IOException;
public class PacketPlayOutUnloadChunk extends PacketOut { public class PacketPlayOutUnloadChunk extends PacketOut {
private final int chunkX; private final ChunkPosition chunkPosition;
private final int chunkZ;
public PacketPlayOutUnloadChunk(int chunkX, int chunkZ) { public PacketPlayOutUnloadChunk(ChunkPosition chunkPosition) {
this.chunkX = chunkX; this.chunkPosition = chunkPosition;
this.chunkZ = chunkZ;
} }
public int getChunkX() { public ChunkPosition getChunkPosition() {
return chunkX; return chunkPosition;
}
public int getChunkZ() {
return chunkZ;
} }
@Override @Override
@ -49,8 +45,7 @@ public class PacketPlayOutUnloadChunk extends PacketOut {
DataOutputStream output = new DataOutputStream(buffer); DataOutputStream output = new DataOutputStream(buffer);
output.writeByte(PacketRegistry.getPacketId(getClass())); output.writeByte(PacketRegistry.getPacketId(getClass()));
output.writeInt(chunkX); DataTypeIO.writeChunkPosition(output, chunkPosition);
output.writeInt(chunkZ);
return buffer.toByteArray(); return buffer.toByteArray();
} }

View File

@ -121,7 +121,7 @@ public class PlayerInteractManager {
for (Entry<ChunkPosition, Chunk> entry : currentViewing.entrySet()) { for (Entry<ChunkPosition, Chunk> entry : currentViewing.entrySet()) {
ChunkPosition chunkPos = entry.getKey(); ChunkPosition chunkPos = entry.getKey();
if (!chunksInRange.containsKey(chunkPos)) { if (!chunksInRange.containsKey(chunkPos)) {
PacketPlayOutUnloadChunk packet = new PacketPlayOutUnloadChunk(chunkPos.getChunkX(), chunkPos.getChunkZ()); PacketPlayOutUnloadChunk packet = new PacketPlayOutUnloadChunk(chunkPos);
player.clientConnection.sendPacket(packet); player.clientConnection.sendPacket(packet);
} }
} }

View File

@ -42,10 +42,16 @@ public class RegistryCustom {
private static final Map<Key, RegistryCustom> REGISTRIES = new HashMap<>(); private static final Map<Key, RegistryCustom> REGISTRIES = new HashMap<>();
public static final RegistryCustom CAT_VARIANT = register("cat_variant");
public static final RegistryCustom CHAT_TYPE = register("chat_type"); public static final RegistryCustom CHAT_TYPE = register("chat_type");
public static final RegistryCustom CHICKEN_VARIANT = register("chicken_variant");
public static final RegistryCustom COW_VARIANT = register("cow_variant");
public static final RegistryCustom DAMAGE_TYPE = register("damage_type"); public static final RegistryCustom DAMAGE_TYPE = register("damage_type");
public static final RegistryCustom DIMENSION_TYPE = register("dimension_type"); public static final RegistryCustom DIMENSION_TYPE = register("dimension_type");
public static final RegistryCustom FROG_VARIANT = register("frog_variant");
public static final RegistryCustom PAINTING_VARIANT = register("painting_variant"); public static final RegistryCustom PAINTING_VARIANT = register("painting_variant");
public static final RegistryCustom PIG_VARIANT = register("pig_variant");
public static final RegistryCustom WOLF_SOUND_VARIANT = register("wolf_sound_variant");
public static final RegistryCustom WOLF_VARIANT = register("wolf_variant"); public static final RegistryCustom WOLF_VARIANT = register("wolf_variant");
public static final RegistryCustom WORLDGEN_BIOME = register("worldgen/biome"); public static final RegistryCustom WORLDGEN_BIOME = register("worldgen/biome");

View File

@ -27,6 +27,7 @@ import com.loohp.limbo.location.Vector;
import com.loohp.limbo.registry.BuiltInRegistries; import com.loohp.limbo.registry.BuiltInRegistries;
import com.loohp.limbo.registry.DataComponentType; import com.loohp.limbo.registry.DataComponentType;
import com.loohp.limbo.world.BlockPosition; import com.loohp.limbo.world.BlockPosition;
import com.loohp.limbo.world.ChunkPosition;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer; import net.kyori.adventure.text.serializer.gson.GsonComponentSerializer;
@ -186,7 +187,7 @@ public class DataTypeIO {
tag = EndTag.INSTANCE; tag = EndTag.INSTANCE;
} }
out.writeByte(tag.getID()); out.writeByte(tag.getID());
if (tag.getID() != 0) { if (tag.getID() != EndTag.ID) {
new NBTOutputStream(out).writeRawTag(tag, Tag.DEFAULT_MAX_DEPTH); new NBTOutputStream(out).writeRawTag(tag, Tag.DEFAULT_MAX_DEPTH);
} }
} }
@ -194,7 +195,7 @@ public class DataTypeIO {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T extends Tag<?>> T readTag(DataInputStream in, Class<T> type) throws IOException { public static <T extends Tag<?>> T readTag(DataInputStream in, Class<T> type) throws IOException {
byte b = in.readByte(); byte b = in.readByte();
if (b == 0) { if (b == EndTag.ID) {
return type.isInstance(EndTag.INSTANCE) ? (T) EndTag.INSTANCE : null; return type.isInstance(EndTag.INSTANCE) ? (T) EndTag.INSTANCE : null;
} }
PushbackInputStream buffered = new PushbackInputStream(in); PushbackInputStream buffered = new PushbackInputStream(in);
@ -226,47 +227,31 @@ public class DataTypeIO {
} }
public static int readVarInt(DataInputStream in) throws IOException { public static int readVarInt(DataInputStream in) throws IOException {
int numRead = 0; int i = 0;
int result = 0; int j = 0;
byte read; byte b;
do { do {
read = in.readByte(); b = in.readByte();
int value = (read & 0b01111111); i |= (b & 127) << j++ * 7;
result |= (value << (7 * numRead)); if (j > 5) {
throw new RuntimeException("VarInt too big");
numRead++;
if (numRead > 5) {
throw new RuntimeException("VarInt is too big");
} }
} while ((read & 0b10000000) != 0); } while ((b & 128) == 128);
return i;
return result;
} }
public static void writeVarInt(DataOutputStream out, int value) throws IOException { public static void writeVarInt(DataOutputStream out, int value) throws IOException {
do { while ((value & -128) != 0) {
byte temp = (byte)(value & 0b01111111); out.writeByte(value & 127 | 128);
// Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone
value >>>= 7; value >>>= 7;
if (value != 0) {
temp |= 0b10000000;
} }
out.writeByte(temp); out.writeByte(value);
} while (value != 0);
} }
public static int getVarIntLength(int value) throws IOException { public static int getVarIntLength(int value) throws IOException {
ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ByteArrayOutputStream buffer = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(buffer); DataOutputStream out = new DataOutputStream(buffer);
do { writeVarInt(out, value);
byte temp = (byte)(value & 0b01111111);
// Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone
value >>>= 7;
if (value != 0) {
temp |= 0b10000000;
}
out.writeByte(temp);
} while (value != 0);
return buffer.toByteArray().length; return buffer.toByteArray().length;
} }
@ -316,4 +301,9 @@ public class DataTypeIO {
writeTag(out, tag); writeTag(out, tag);
} }
public static void writeChunkPosition(DataOutputStream out, ChunkPosition chunkPosition) throws IOException {
long l = (long) chunkPosition.getChunkX() & 4294967295L | ((long) chunkPosition.getChunkZ() & 4294967295L) << 32;
out.writeLong(l);
}
} }

View File

@ -65,19 +65,22 @@ public class LastSeenMessages {
private final int offset; private final int offset;
private final BitSet acknowledged; private final BitSet acknowledged;
private final byte checksum;
public b(int offset, BitSet acknowledged) { public b(int offset, BitSet acknowledged, byte checksum) {
this.offset = offset; this.offset = offset;
this.acknowledged = acknowledged; this.acknowledged = acknowledged;
this.checksum = checksum;
} }
public b(DataInputStream in) throws IOException { public b(DataInputStream in) throws IOException {
this(DataTypeIO.readVarInt(in), DataTypeIO.readFixedBitSet(in, 20)); this(DataTypeIO.readVarInt(in), DataTypeIO.readFixedBitSet(in, 20), in.readByte());
} }
public void write(DataOutputStream out) throws IOException { public void write(DataOutputStream out) throws IOException {
DataTypeIO.writeVarInt(out, this.offset); DataTypeIO.writeVarInt(out, this.offset);
DataTypeIO.writeFixedBitSet(out, this.acknowledged, 20); DataTypeIO.writeFixedBitSet(out, this.acknowledged, 20);
out.writeByte(checksum);
} }
} }

View File

@ -21,6 +21,9 @@ package com.loohp.limbo.utils;
import net.kyori.adventure.key.Key; import net.kyori.adventure.key.Key;
import net.querz.nbt.tag.CompoundTag; import net.querz.nbt.tag.CompoundTag;
import net.querz.nbt.tag.ListTag;
import net.querz.nbt.tag.StringTag;
import net.querz.nbt.tag.Tag;
public class SchematicConversionUtils { public class SchematicConversionUtils {
@ -31,6 +34,27 @@ public class SchematicConversionUtils {
tag.putInt("x", pos[0]); tag.putInt("x", pos[0]);
tag.putInt("y", pos[1]); tag.putInt("y", pos[1]);
tag.putInt("z", pos[2]); tag.putInt("z", pos[2]);
for (Tag<?> subTag : tag.values()) {
removeStringTagQuote(subTag);
}
return tag;
}
public static Tag<?> removeStringTagQuote(Tag<?> tag) {
if (tag instanceof StringTag) {
String value = ((StringTag) tag).getValue();
if (value.startsWith("\"") && value.endsWith("\"")) {
((StringTag) tag).setValue(value.substring(1, value.length() - 1));
}
} else if (tag instanceof CompoundTag) {
for (Tag<?> subTag : ((CompoundTag) tag).values()) {
removeStringTagQuote(subTag);
}
} else if (tag instanceof ListTag<?>) {
for (Tag<?> subTag : (ListTag<?>) tag) {
removeStringTagQuote(subTag);
}
}
return tag; return tag;
} }

View File

@ -66,7 +66,7 @@ public class World {
EMPTY_CHUNK.cleanupPalettesAndBlockStates(); EMPTY_CHUNK.cleanupPalettesAndBlockStates();
EMPTY_CHUNK.setHeightMaps(HEIGHT_MAP.clone()); EMPTY_CHUNK.setHeightMaps(HEIGHT_MAP.clone());
EMPTY_CHUNK.setBiomes(new int[256]); EMPTY_CHUNK.setBiomes(new int[256]);
EMPTY_CHUNK.setTileEntities(new ListTag<CompoundTag>(CompoundTag.class)); EMPTY_CHUNK.setTileEntities(new ListTag<>(CompoundTag.class));
} }
private String name; private String name;

View File

@ -0,0 +1,21 @@
{
"asset_id": "minecraft:entity/cat/all_black",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:structure",
"structures": "#minecraft:cats_spawn_as_black"
},
"priority": 1
},
{
"condition": {
"type": "minecraft:moon_brightness",
"range": {
"min": 0.9
}
},
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/black",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/british_shorthair",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/calico",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/jellie",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/persian",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/ragdoll",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/red",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/siamese",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/tabby",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cat/white",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,13 @@
{
"asset_id": "minecraft:entity/chicken/cold_chicken",
"model": "cold",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/chicken/temperate_chicken",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,12 @@
{
"asset_id": "minecraft:entity/chicken/warm_chicken",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,13 @@
{
"asset_id": "minecraft:entity/cow/cold_cow",
"model": "cold",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/cow/temperate_cow",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,13 @@
{
"asset_id": "minecraft:entity/cow/warm_cow",
"model": "warm",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,12 @@
{
"asset_id": "minecraft:entity/frog/cold_frog",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/frog/temperate_frog",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,12 @@
{
"asset_id": "minecraft:entity/frog/warm_frog",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,13 @@
{
"asset_id": "minecraft:entity/pig/cold_pig",
"model": "cold",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,8 @@
{
"asset_id": "minecraft:entity/pig/temperate_pig",
"spawn_conditions": [
{
"priority": 0
}
]
}

View File

@ -0,0 +1,12 @@
{
"asset_id": "minecraft:entity/pig/warm_pig",
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:plains"
},
"priority": 1
}
]
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_angry.ambient",
"death_sound": "minecraft:entity.wolf_angry.death",
"growl_sound": "minecraft:entity.wolf_angry.growl",
"hurt_sound": "minecraft:entity.wolf_angry.hurt",
"pant_sound": "minecraft:entity.wolf_angry.pant",
"whine_sound": "minecraft:entity.wolf_angry.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_big.ambient",
"death_sound": "minecraft:entity.wolf_big.death",
"growl_sound": "minecraft:entity.wolf_big.growl",
"hurt_sound": "minecraft:entity.wolf_big.hurt",
"pant_sound": "minecraft:entity.wolf_big.pant",
"whine_sound": "minecraft:entity.wolf_big.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf.ambient",
"death_sound": "minecraft:entity.wolf.death",
"growl_sound": "minecraft:entity.wolf.growl",
"hurt_sound": "minecraft:entity.wolf.hurt",
"pant_sound": "minecraft:entity.wolf.pant",
"whine_sound": "minecraft:entity.wolf.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_cute.ambient",
"death_sound": "minecraft:entity.wolf_cute.death",
"growl_sound": "minecraft:entity.wolf_cute.growl",
"hurt_sound": "minecraft:entity.wolf_cute.hurt",
"pant_sound": "minecraft:entity.wolf_cute.pant",
"whine_sound": "minecraft:entity.wolf_cute.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_grumpy.ambient",
"death_sound": "minecraft:entity.wolf_grumpy.death",
"growl_sound": "minecraft:entity.wolf_grumpy.growl",
"hurt_sound": "minecraft:entity.wolf_grumpy.hurt",
"pant_sound": "minecraft:entity.wolf_grumpy.pant",
"whine_sound": "minecraft:entity.wolf_grumpy.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_puglin.ambient",
"death_sound": "minecraft:entity.wolf_puglin.death",
"growl_sound": "minecraft:entity.wolf_puglin.growl",
"hurt_sound": "minecraft:entity.wolf_puglin.hurt",
"pant_sound": "minecraft:entity.wolf_puglin.pant",
"whine_sound": "minecraft:entity.wolf_puglin.whine"
}

View File

@ -0,0 +1,8 @@
{
"ambient_sound": "minecraft:entity.wolf_sad.ambient",
"death_sound": "minecraft:entity.wolf_sad.death",
"growl_sound": "minecraft:entity.wolf_sad.growl",
"hurt_sound": "minecraft:entity.wolf_sad.hurt",
"pant_sound": "minecraft:entity.wolf_sad.pant",
"whine_sound": "minecraft:entity.wolf_sad.whine"
}

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_ashen_angry", "assets": {
"biomes": "minecraft:snowy_taiga", "angry": "minecraft:entity/wolf/wolf_ashen_angry",
"tame_texture": "minecraft:entity/wolf/wolf_ashen_tame", "tame": "minecraft:entity/wolf/wolf_ashen_tame",
"wild_texture": "minecraft:entity/wolf/wolf_ashen" "wild": "minecraft:entity/wolf/wolf_ashen"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:snowy_taiga"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_black_angry", "assets": {
"biomes": "minecraft:old_growth_pine_taiga", "angry": "minecraft:entity/wolf/wolf_black_angry",
"tame_texture": "minecraft:entity/wolf/wolf_black_tame", "tame": "minecraft:entity/wolf/wolf_black_tame",
"wild_texture": "minecraft:entity/wolf/wolf_black" "wild": "minecraft:entity/wolf/wolf_black"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:old_growth_pine_taiga"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_chestnut_angry", "assets": {
"biomes": "minecraft:old_growth_spruce_taiga", "angry": "minecraft:entity/wolf/wolf_chestnut_angry",
"tame_texture": "minecraft:entity/wolf/wolf_chestnut_tame", "tame": "minecraft:entity/wolf/wolf_chestnut_tame",
"wild_texture": "minecraft:entity/wolf/wolf_chestnut" "wild": "minecraft:entity/wolf/wolf_chestnut"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:old_growth_spruce_taiga"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,12 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_angry", "assets": {
"biomes": "minecraft:taiga", "angry": "minecraft:entity/wolf/wolf_angry",
"tame_texture": "minecraft:entity/wolf/wolf_tame", "tame": "minecraft:entity/wolf/wolf_tame",
"wild_texture": "minecraft:entity/wolf/wolf" "wild": "minecraft:entity/wolf/wolf"
},
"spawn_conditions": [
{
"priority": 0
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_rusty_angry", "assets": {
"biomes": "minecraft:jungle", "angry": "minecraft:entity/wolf/wolf_rusty_angry",
"tame_texture": "minecraft:entity/wolf/wolf_rusty_tame", "tame": "minecraft:entity/wolf/wolf_rusty_tame",
"wild_texture": "minecraft:entity/wolf/wolf_rusty" "wild": "minecraft:entity/wolf/wolf_rusty"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:jungle"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_snowy_angry", "assets": {
"biomes": "minecraft:grove", "angry": "minecraft:entity/wolf/wolf_snowy_angry",
"tame_texture": "minecraft:entity/wolf/wolf_snowy_tame", "tame": "minecraft:entity/wolf/wolf_snowy_tame",
"wild_texture": "minecraft:entity/wolf/wolf_snowy" "wild": "minecraft:entity/wolf/wolf_snowy"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:grove"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_spotted_angry", "assets": {
"biomes": "minecraft:savanna", "angry": "minecraft:entity/wolf/wolf_spotted_angry",
"tame_texture": "minecraft:entity/wolf/wolf_spotted_tame", "tame": "minecraft:entity/wolf/wolf_spotted_tame",
"wild_texture": "minecraft:entity/wolf/wolf_spotted" "wild": "minecraft:entity/wolf/wolf_spotted"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:savanna"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_striped_angry", "assets": {
"biomes": "minecraft:badlands", "angry": "minecraft:entity/wolf/wolf_striped_angry",
"tame_texture": "minecraft:entity/wolf/wolf_striped_tame", "tame": "minecraft:entity/wolf/wolf_striped_tame",
"wild_texture": "minecraft:entity/wolf/wolf_striped" "wild": "minecraft:entity/wolf/wolf_striped"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:badlands"
},
"priority": 1
}
]
} }

View File

@ -1,6 +1,16 @@
{ {
"angry_texture": "minecraft:entity/wolf/wolf_woods_angry", "assets": {
"biomes": "minecraft:forest", "angry": "minecraft:entity/wolf/wolf_woods_angry",
"tame_texture": "minecraft:entity/wolf/wolf_woods_tame", "tame": "minecraft:entity/wolf/wolf_woods_tame",
"wild_texture": "minecraft:entity/wolf/wolf_woods" "wild": "minecraft:entity/wolf/wolf_woods"
},
"spawn_conditions": [
{
"condition": {
"type": "minecraft:biome",
"biomes": "minecraft:forest"
},
"priority": 1
}
]
} }

View File

@ -87,12 +87,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:patch_dry_grass_badlands",
"minecraft:patch_dead_bush_badlands", "minecraft:patch_dead_bush_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane_badlands", "minecraft:patch_sugar_cane_badlands",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_cactus_decorated" "minecraft:patch_cactus_decorated",
"minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"
@ -111,6 +113,30 @@
], ],
"axolotls": [], "axolotls": [],
"creature": [ "creature": [
{
"type": "minecraft:sheep",
"maxCount": 4,
"minCount": 4,
"weight": 12
},
{
"type": "minecraft:pig",
"maxCount": 4,
"minCount": 4,
"weight": 10
},
{
"type": "minecraft:chicken",
"maxCount": 4,
"minCount": 4,
"weight": 10
},
{
"type": "minecraft:cow",
"maxCount": 4,
"minCount": 4,
"weight": 8
},
{ {
"type": "minecraft:armadillo", "type": "minecraft:armadillo",
"maxCount": 2, "maxCount": 2,

View File

@ -88,8 +88,9 @@
"minecraft:patch_grass_jungle", "minecraft:patch_grass_jungle",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:vines", "minecraft:vines",
"minecraft:patch_melon" "minecraft:patch_melon"
], ],

View File

@ -75,8 +75,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -83,13 +83,16 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:forest_flowers", "minecraft:forest_flowers",
"minecraft:wildflowers_birch_forest",
"minecraft:trees_birch", "minecraft:trees_birch",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_forest", "minecraft:patch_grass_forest",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_cold", "minecraft:seagrass_cold",
"minecraft:kelp_cold" "minecraft:kelp_cold"
], ],

View File

@ -6,6 +6,7 @@
], ],
"downfall": 0.8, "downfall": 0.8,
"effects": { "effects": {
"dry_foliage_color": 8082228,
"fog_color": 12638463, "fog_color": 12638463,
"grass_color_modifier": "dark_forest", "grass_color_modifier": "dark_forest",
"mood_sound": { "mood_sound": {
@ -89,8 +90,10 @@
"minecraft:patch_grass_forest", "minecraft:patch_grass_forest",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_leaf_litter",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_deep_cold", "minecraft:seagrass_deep_cold",
"minecraft:kelp_cold" "minecraft:kelp_cold"
], ],

View File

@ -85,7 +85,6 @@
"minecraft:patch_grass_plain", "minecraft:patch_grass_plain",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_pumpkin"
], ],
[ [

View File

@ -80,8 +80,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_deep_warm", "minecraft:seagrass_deep_warm",
"minecraft:kelp_warm" "minecraft:kelp_warm"
], ],

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_deep", "minecraft:seagrass_deep",
"minecraft:kelp_cold" "minecraft:kelp_cold"
], ],

View File

@ -88,6 +88,7 @@
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:patch_dry_grass_desert",
"minecraft:patch_dead_bush_2", "minecraft:patch_dead_bush_2",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
@ -116,7 +117,13 @@
"type": "minecraft:rabbit", "type": "minecraft:rabbit",
"maxCount": 3, "maxCount": 3,
"minCount": 2, "minCount": 2,
"weight": 4 "weight": 12
},
{
"type": "minecraft:camel",
"maxCount": 1,
"minCount": 1,
"weight": 1
} }
], ],
"misc": [], "misc": [],

View File

@ -92,7 +92,6 @@
"minecraft:patch_grass_plain", "minecraft:patch_grass_plain",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_pumpkin"
], ],
[ [

View File

@ -87,12 +87,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:patch_dry_grass_badlands",
"minecraft:patch_dead_bush_badlands", "minecraft:patch_dead_bush_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane_badlands", "minecraft:patch_sugar_cane_badlands",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_cactus_decorated" "minecraft:patch_cactus_decorated",
"minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"
@ -111,6 +113,30 @@
], ],
"axolotls": [], "axolotls": [],
"creature": [ "creature": [
{
"type": "minecraft:sheep",
"maxCount": 4,
"minCount": 4,
"weight": 12
},
{
"type": "minecraft:pig",
"maxCount": 4,
"minCount": 4,
"weight": 10
},
{
"type": "minecraft:chicken",
"maxCount": 4,
"minCount": 4,
"weight": 10
},
{
"type": "minecraft:cow",
"maxCount": 4,
"minCount": 4,
"weight": 8
},
{ {
"type": "minecraft:armadillo", "type": "minecraft:armadillo",
"maxCount": 2, "maxCount": 2,

View File

@ -88,8 +88,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -83,13 +83,15 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:forest_flowers", "minecraft:forest_flowers",
"minecraft:trees_birch_and_oak", "minecraft:trees_birch_and_oak_leaf_litter",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_forest", "minecraft:patch_grass_forest",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -80,8 +80,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -72,12 +72,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:trees_water", "minecraft:trees_water",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -87,7 +87,6 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:trees_grove", "minecraft:trees_grove",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_pumpkin"
], ],
[ [

View File

@ -80,8 +80,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -88,8 +88,9 @@
"minecraft:patch_grass_jungle", "minecraft:patch_grass_jungle",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:vines", "minecraft:vines",
"minecraft:patch_melon" "minecraft:patch_melon"
], ],

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_warm", "minecraft:seagrass_warm",
"minecraft:kelp_warm" "minecraft:kelp_warm"
], ],

View File

@ -6,6 +6,7 @@
], ],
"downfall": 0.9, "downfall": 0.9,
"effects": { "effects": {
"dry_foliage_color": 8082228,
"fog_color": 12638463, "fog_color": 12638463,
"foliage_color": 9285927, "foliage_color": 9285927,
"grass_color_modifier": "swamp", "grass_color_modifier": "swamp",
@ -89,7 +90,8 @@
"minecraft:patch_grass_normal", "minecraft:patch_grass_normal",
"minecraft:patch_dead_bush", "minecraft:patch_dead_bush",
"minecraft:patch_waterlily", "minecraft:patch_waterlily",
"minecraft:seagrass_swamp" "minecraft:seagrass_swamp",
"minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -86,9 +86,10 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:patch_tall_grass_2", "minecraft:patch_tall_grass_2",
"minecraft:patch_grass_plain", "minecraft:patch_grass_meadow",
"minecraft:flower_meadow", "minecraft:flower_meadow",
"minecraft:trees_meadow" "minecraft:trees_meadow",
"minecraft:wildflowers_meadow"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -74,8 +74,9 @@
"minecraft:mushroom_island_vegetation", "minecraft:mushroom_island_vegetation",
"minecraft:brown_mushroom_taiga", "minecraft:brown_mushroom_taiga",
"minecraft:red_mushroom_taiga", "minecraft:red_mushroom_taiga",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_normal", "minecraft:seagrass_normal",
"minecraft:kelp_cold" "minecraft:kelp_cold"
], ],

View File

@ -83,13 +83,16 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:forest_flowers", "minecraft:forest_flowers",
"minecraft:wildflowers_birch_forest",
"minecraft:birch_tall", "minecraft:birch_tall",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_forest", "minecraft:patch_grass_forest",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -92,8 +92,9 @@
"minecraft:red_mushroom_old_growth", "minecraft:red_mushroom_old_growth",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:patch_berry_common" "minecraft:patch_berry_common"
], ],
[ [

View File

@ -92,8 +92,9 @@
"minecraft:red_mushroom_old_growth", "minecraft:red_mushroom_old_growth",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:patch_berry_common" "minecraft:patch_berry_common"
], ],
[ [

View File

@ -6,6 +6,7 @@
], ],
"downfall": 0.8, "downfall": 0.8,
"effects": { "effects": {
"dry_foliage_color": 10528412,
"fog_color": 8484720, "fog_color": 8484720,
"foliage_color": 8883574, "foliage_color": 8883574,
"grass_color": 7832178, "grass_color": 7832178,
@ -79,8 +80,9 @@
"minecraft:pale_garden_flowers", "minecraft:pale_garden_flowers",
"minecraft:flower_pale_garden", "minecraft:flower_pale_garden",
"minecraft:patch_grass_forest", "minecraft:patch_grass_forest",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -72,13 +72,15 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:patch_tall_grass_2", "minecraft:patch_tall_grass_2",
"minecraft:patch_bush",
"minecraft:trees_plains", "minecraft:trees_plains",
"minecraft:flower_plains", "minecraft:flower_plains",
"minecraft:patch_grass_plain", "minecraft:patch_grass_plain",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -72,12 +72,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:trees_water", "minecraft:trees_water",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:seagrass_river" "minecraft:seagrass_river"
], ],
[ [

View File

@ -77,8 +77,9 @@
"minecraft:patch_grass_savanna", "minecraft:patch_grass_savanna",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -77,8 +77,9 @@
"minecraft:patch_grass_savanna", "minecraft:patch_grass_savanna",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -75,8 +75,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -77,8 +77,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -86,7 +86,6 @@
], ],
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_pumpkin"
], ],
[ [

View File

@ -77,8 +77,9 @@
"minecraft:patch_grass_taiga_2", "minecraft:patch_grass_taiga_2",
"minecraft:brown_mushroom_taiga", "minecraft:brown_mushroom_taiga",
"minecraft:red_mushroom_taiga", "minecraft:red_mushroom_taiga",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:patch_berry_rare" "minecraft:patch_berry_rare"
], ],
[ [

View File

@ -87,8 +87,9 @@
"minecraft:patch_grass_jungle", "minecraft:patch_grass_jungle",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:vines", "minecraft:vines",
"minecraft:patch_melon_sparse" "minecraft:patch_melon_sparse"
], ],

View File

@ -75,8 +75,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -78,8 +78,9 @@
"minecraft:patch_grass_plain", "minecraft:patch_grass_plain",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -6,6 +6,7 @@
], ],
"downfall": 0.9, "downfall": 0.9,
"effects": { "effects": {
"dry_foliage_color": 8082228,
"fog_color": 12638463, "fog_color": 12638463,
"foliage_color": 6975545, "foliage_color": 6975545,
"grass_color_modifier": "swamp", "grass_color_modifier": "swamp",
@ -95,6 +96,8 @@
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane_swamp", "minecraft:patch_sugar_cane_swamp",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_firefly_bush_swamp",
"minecraft:patch_firefly_bush_near_water_swamp",
"minecraft:seagrass_swamp" "minecraft:seagrass_swamp"
], ],
[ [

View File

@ -77,8 +77,9 @@
"minecraft:patch_grass_taiga_2", "minecraft:patch_grass_taiga_2",
"minecraft:brown_mushroom_taiga", "minecraft:brown_mushroom_taiga",
"minecraft:red_mushroom_taiga", "minecraft:red_mushroom_taiga",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:patch_berry_common" "minecraft:patch_berry_common"
], ],
[ [

View File

@ -76,8 +76,9 @@
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin", "minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane",
"minecraft:patch_firefly_bush_near_water",
"minecraft:warm_ocean_vegetation", "minecraft:warm_ocean_vegetation",
"minecraft:seagrass_warm", "minecraft:seagrass_warm",
"minecraft:sea_pickle" "minecraft:sea_pickle"

View File

@ -75,12 +75,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:trees_windswept_forest", "minecraft:trees_windswept_forest",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

View File

@ -75,12 +75,14 @@
[ [
"minecraft:glow_lichen", "minecraft:glow_lichen",
"minecraft:trees_windswept_hills", "minecraft:trees_windswept_hills",
"minecraft:patch_bush",
"minecraft:flower_default", "minecraft:flower_default",
"minecraft:patch_grass_badlands", "minecraft:patch_grass_badlands",
"minecraft:brown_mushroom_normal", "minecraft:brown_mushroom_normal",
"minecraft:red_mushroom_normal", "minecraft:red_mushroom_normal",
"minecraft:patch_pumpkin",
"minecraft:patch_sugar_cane", "minecraft:patch_sugar_cane",
"minecraft:patch_pumpkin" "minecraft:patch_firefly_bush_near_water"
], ],
[ [
"minecraft:freeze_top_layer" "minecraft:freeze_top_layer"

Some files were not shown because too many files have changed in this diff Show More