Merge remote-tracking branch 'origin/master'

This commit is contained in:
adman
2026-08-17 18:08:08 +02:00
144 changed files with 431798 additions and 3650 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
.devres/
.idea/
.failed_packets/
.vscode/
.vscode/proto_generator
proto_generator
+4 -4
View File
@@ -19,8 +19,8 @@ import (
"github.com/admin-else/strom/cmd/strom/packet_inspector"
"github.com/admin-else/strom/cmd/strom/print_nbt"
"github.com/admin-else/strom/cmd/strom/print_replay"
"github.com/admin-else/strom/cmd/strom/raw_capture"
"github.com/admin-else/strom/cmd/strom/registry_data_hunter"
// "github.com/admin-else/strom/cmd/strom/raw_capture" // removed: use tcpflow instead for raw TCP capture
"github.com/admin-else/strom/cmd/strom/raw_to_tmcpr"
"github.com/admin-else/strom/cmd/strom/serve_tmcpr"
"github.com/admin-else/strom/cmd/strom/serve_world"
"github.com/admin-else/strom/cmd/strom/status"
@@ -61,8 +61,8 @@ var subcommands = map[string]func(args []string) error{
"extract-mca": extract_mca.Run,
"data": data.Run,
"print-replay": print_replay.Run,
"raw-capture": raw_capture.Run,
"registry-data-hunter": registry_data_hunter.Run,
// "raw-capture": raw_capture.Run, // removed: use tcpflow instead for raw TCP capture, then raw-to-tmcpr
"raw-to-tmcpr": raw_to_tmcpr.Run,
"serve-world": serve_world.Run,
"mca-to-tmcpr": mca_to_tmcpr.Run,
"serve-tmcpr": serve_tmcpr.Run,
+2 -1
View File
@@ -6,6 +6,7 @@ import (
"fmt"
"log/slog"
"os"
"path/filepath"
"github.com/admin-else/strom/mc/level"
"github.com/admin-else/strom/mc/level/anvil"
@@ -51,7 +52,7 @@ func GetChunkFromMca(x, z int32, version string) (b []byte, err error) {
z += anvil.ChunksWidthRegionFile
}
f, err := os.Open(fmt.Sprintf("./.devres/anvil_testdata/securechattestworld/region/r.%v.%v.mca", xmca, zmca))
f, err := os.Open(filepath.Join(*worldPath, "region", fmt.Sprintf("r.%v.%v.mca", xmca, zmca)))
if err != nil {
return
}
+47 -17
View File
@@ -16,6 +16,7 @@ import (
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
"github.com/admin-else/strom/mc/proto_generated/v1_8"
)
func stror(a, b string) string {
@@ -29,12 +30,14 @@ var (
cmd = flag.NewFlagSet("status", flag.ContinueOnError)
connectToFlag = cmd.String("addr", "", "server address to connect to")
accFlag = cmd.String("acc", stror(os.Getenv("STROM_ACC"), "strom_messenger"), "the name to use if longer will be treated as ygg token")
versionFlag = cmd.String("version", "26.2", "minecraft version to use (e.g. 1.8, 1.21.11)")
)
type Messenger struct {
*proto.Conn
chat *chat.Module
world *world.Module
chat *chat.Module
world *world.Module
legacy bool
}
func (m *Messenger) OnChat(e *v1_21_11.PlayToClientPacketPlayerChat) (err error) {
@@ -52,15 +55,27 @@ func (m *Messenger) OnChatSystem(e *v1_21_11.PlayToClientPacketSystemChat) (err
return
}
func (m *Messenger) OnChatLegacy(e *v1_8.PlayToClientPacketChat) (err error) {
m.Log.Info("chat", "m", e.Message)
return
}
func (m *Messenger) OnStdin(e event.Stdin) (err error) {
input := strings.TrimSpace(e.Val)
if strings.HasPrefix(input, ">say ") {
return m.chat.SendMessage(strings.TrimSpace(strings.TrimPrefix(input, ">say")))
return m.sendChat(strings.TrimSpace(strings.TrimPrefix(input, ">say")))
}
if strings.HasPrefix(input, ">getblock ") {
if !m.legacy && strings.HasPrefix(input, ">getblock ") {
return m.handleGetBlock(strings.TrimSpace(strings.TrimPrefix(input, ">getblock")))
}
return m.chat.SendMessage(input)
return m.sendChat(input)
}
func (m *Messenger) sendChat(message string) (err error) {
if m.legacy {
return m.Send(&v1_8.PlayToServerPacketChat{Message: message})
}
return m.chat.SendMessage(message)
}
func (m *Messenger) handleGetBlock(args string) (err error) {
@@ -105,30 +120,45 @@ func Run(args []string) (err error) {
if err != nil {
return
}
c, err := client.Login(*connectToFlag, acc)
c, err := client.Login(*connectToFlag, acc, client.WithVersion(*versionFlag))
if err != nil {
return
}
defer c.Close()
chatMod, err := chat.Start(c, acc)
if err != nil {
return
isLegacy := c.ProtocolVersion < 764
var chatMod *chat.Module
if !isLegacy {
chatMod, err = chat.Start(c, acc)
if err != nil {
return
}
}
// Shareable world storage. Other bots can subscribe to the same World.
w := world.NewWorld(c.Version, -64, 384)
m := &Messenger{
Conn: c,
chat: chatMod,
world: world.Start(c, w),
Conn: c,
chat: chatMod,
legacy: isLegacy,
}
if !isLegacy {
w := world.NewWorld(c.Version, -64, 384)
m.world = world.Start(c, w)
}
event.StartListingStdin(m.Loop)
m.Register(m.OnStdin)
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
keepalive.Start(m.Conn)
if isLegacy {
m.Register(m.OnChatLegacy)
} else {
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
}
if !isLegacy {
keepalive.Start(m.Conn)
}
return m.StartConn()
}
+5 -5
View File
@@ -4,15 +4,15 @@ import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/%v"
generated "github.com/admin-else/strom/mc/proto_generated/%v"
)
// Error: %v
func TestFailedPacket%10X(t *testing.T) {
p := &generated.%v{}
b := bytes.NewBuffer(%#v)
p := &generated.%v{}
b := bytes.NewReader(%#v)
err := p.Decode(b)
if err != nil {
t.Fatal(err)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
+43 -24
View File
@@ -15,7 +15,6 @@ import (
"reflect"
"strings"
"github.com/admin-else/strom/mc/data"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_base"
)
@@ -25,7 +24,7 @@ var (
FileFlag = cmd.String("file", "", "The tmcpr file to print")
ProtocolVersion = cmd.Int("protocol", -1, "The protocol version")
CreateTestsPath = cmd.String("create-tests", "", "")
StateFlag = cmd.String("state", "login", "Initial state: login, config, play")
StateFlag = cmd.String("state", "login", "Initial state: handshake, login, config, status, play")
DirectionFlag = cmd.String("direction", "clientbound", "Packet direction: clientbound (ToClient) or serverbound (ToServer)")
)
@@ -46,11 +45,8 @@ func SaveUnCodeAbleAsTest(packet *proto.UnCodablePacket) (err error) {
return
}
ret, err := data.LookUpVersionByProtocolVersion(packet.Info.ProtocolVersion)
if err != nil {
return
}
goPackage := "v" + strings.ReplaceAll(ret.MinecraftVersion, ".", "_")
typeStr := reflect.TypeOf(packet.Info.Type).String()
goPackage := typeStr[1:strings.LastIndex(typeStr, ".")]
typeName := reflect.TypeOf(packet.Info.Type).Elem().Name()
src := fmt.Sprintf(TestSrcF, goPackage, packet.Err, h, typeName, packet.Data)
@@ -106,22 +102,6 @@ func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, i proto_base
packet = &proto.UnCodablePacket{Err: proto.BadPacketIdErr, Data: packetData, Info: i}
return
}
switch direction {
case proto_base.ToClient:
switch i.Name {
case "success":
state = proto_base.Configuration
case "finish_configuration":
state = proto_base.Play
}
case proto_base.ToServer:
switch i.Name {
case "login_acknowledged":
state = proto_base.Configuration
case "finish_configuration":
state = proto_base.Play
}
}
packet = reflect.New(reflect.TypeOf(i.Type).Elem()).Interface().(proto_base.EncodeDecodeAble)
err = packet.Decode(b)
if err != nil {
@@ -132,9 +112,40 @@ func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, i proto_base
packet = &proto.UnCodablePacket{Err: proto.PacketNotFullyDecodedErr, Data: packetData[indexafterid:], Info: i}
return
}
trackState(packet, i)
return
}
func trackState(packet proto_base.EncodeDecodeAble, i proto_base.PacketInfo) {
switch i.Name {
case "set_protocol":
v := reflect.ValueOf(packet).Elem()
nsField := v.FieldByName("NextState")
if nsField.IsValid() && nsField.Kind() == reflect.Int32 {
switch nsField.Int() {
case 1:
state = proto_base.Status
case 2:
state = proto_base.Login
}
}
case "login_start":
if int32(*ProtocolVersion) <= 47 {
state = proto_base.Play
}
case "success":
if int32(*ProtocolVersion) >= 764 {
state = proto_base.Configuration
} else {
state = proto_base.Play
}
case "finish_configuration":
state = proto_base.Play
case "login_acknowledged":
state = proto_base.Configuration
}
}
func Run(args []string) (err error) {
err = cmd.Parse(args)
if err != nil {
@@ -147,12 +158,16 @@ func Run(args []string) (err error) {
return fmt.Errorf("no file specified")
}
switch *StateFlag {
case "handshake":
state = proto_base.Handshaking
case "login":
state = proto_base.Login
case "config":
state = proto_base.Configuration
case "play":
state = proto_base.Play
case "status":
state = proto_base.Status
default:
return fmt.Errorf("unknown state: %s", *StateFlag)
}
@@ -193,6 +208,10 @@ func Run(args []string) (err error) {
}
totalPackets++
}
fmt.Printf("Total packets: %d, failed packets: %d, %%failed: %.2f%%\n", totalPackets, failedPackets, float64(failedPackets)/float64(totalPackets)*100)
if totalPackets > 0 {
fmt.Printf("Total packets: %d, failed packets: %d, %%failed: %.2f%%\n", totalPackets, failedPackets, float64(failedPackets)/float64(totalPackets)*100)
} else {
fmt.Printf("Total packets: %d, failed packets: %d\n", totalPackets, failedPackets)
}
return
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacket0F8B37C94207F7BF(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x42, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacket6C9AD835672C5C51(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0xde, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacketA5D61E1C0F23E7FA(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x56, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacketCAA58159889F7E8A(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x2e, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacketD18FC4C0B2DF2972(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1b, 0xf2, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacketE81E82016DB04F28(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x6, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Error: unexpected EOF
func TestFailedPacketFE935CF2E584C649(t *testing.T) {
p := &generated.PlayToClientPacketUpdateTime{}
b := bytes.NewReader([]byte{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x1a, 0x0})
err := p.Decode(b)
if err == nil {
t.Fatalf("expected decode error but got nil")
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Decode regression: recipe_book_add (26.2) - SlotDisplay type fix
func TestRegressionPacket25D845B5D0023D22(t *testing.T) {
p := &generated.PlayToClientPacketRecipeBookAdd{}
b := bytes.NewReader([]byte{0x1, 0xbe, 0x2, 0x1, 0x2, 0x2, 0x4, 0x6, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x6, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x6, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x6, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x5, 0xe8, 0x2, 0x1, 0x0, 0x0, 0x4, 0xe8, 0x2, 0x0, 0x3, 0x1, 0x4, 0x0, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x0, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x0, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x0, 0x10, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6b, 0x73, 0x2, 0x1})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
@@ -0,0 +1,17 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Decode regression: declare_commands (26.2) - bitfield + extraNodeData fix
func TestRegressionPacket78C731784E6E834A(t *testing.T) {
p := &generated.PlayToClientPacketDeclareCommands{}
b := bytes.NewReader([]byte{0x1a, 0x0, 0xa, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0x1, 0x1, 0xb, 0x2, 0x6d, 0x65, 0x5, 0x1, 0xc, 0x4, 0x68, 0x65, 0x6c, 0x70, 0x5, 0x1, 0xd, 0x4, 0x6c, 0x69, 0x73, 0x74, 0x1, 0x1, 0xe, 0x3, 0x6d, 0x73, 0x67, 0x9, 0x0, 0x4, 0x4, 0x74, 0x65, 0x6c, 0x6c, 0x9, 0x0, 0x4, 0x1, 0x77, 0x1, 0x2, 0xf, 0x10, 0x6, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x1, 0x1, 0x11, 0x7, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x73, 0x67, 0x9, 0x0, 0x8, 0x2, 0x74, 0x6d, 0x1, 0x1, 0x12, 0x7, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x6, 0x0, 0x6, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x14, 0x6, 0x0, 0x7, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5, 0x2, 0x5, 0x0, 0x5, 0x75, 0x75, 0x69, 0x64, 0x73, 0x2, 0x1, 0x13, 0x7, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x6, 0x2, 0x1, 0x1, 0x14, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1, 0x1, 0x15, 0x4, 0x72, 0x6f, 0x6c, 0x6c, 0x6, 0x0, 0x7, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x14, 0x16, 0x2, 0x16, 0x17, 0x9, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x14, 0x6d, 0x69, 0x6e, 0x65, 0x63, 0x72, 0x61, 0x66, 0x74, 0x3a, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6, 0x0, 0x7, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x14, 0x6, 0x0, 0x5, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x6, 0x0, 0x5, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x27, 0x1, 0x1, 0x18, 0x3, 0x61, 0x64, 0x64, 0x1, 0x1, 0x19, 0x3, 0x73, 0x65, 0x74, 0x6, 0x0, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3, 0x0, 0x6, 0x0, 0x5, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3, 0x0, 0x0})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
)
// Decode regression: spawn_entity_living (1.8) - entityMetadata mergeCompareTo
func TestRegressionPacket2B76AF8B937B1E8F(t *testing.T) {
p := &generated.PlayToClientPacketSpawnEntityLiving{}
b := bytes.NewReader([]byte{0x4c, 0x65, 0xff, 0xff, 0xed, 0x66, 0x0, 0x0, 0x7, 0xe0, 0x0, 0x0, 0x29, 0xe6, 0x91, 0x0, 0x91, 0x0, 0x0, 0xfd, 0x8d, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1, 0x2c, 0x82, 0x0, 0x12, 0x4, 0x3, 0x0, 0x4, 0x0, 0x66, 0x41, 0x20, 0x0, 0x0, 0x47, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x9, 0x0, 0xc, 0x0, 0xf, 0x0, 0x7f})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
)
// Decode regression: entity_equipment (1.8) - nbt TAG_End fix
func TestRegressionPacket0C20C77EA68496BD(t *testing.T) {
p := &generated.PlayToClientPacketEntityEquipment{}
b := bytes.NewReader([]byte{0x89, 0x16, 0x0, 0x0, 0x1, 0x5, 0x1, 0x0, 0x0, 0x0})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v1_8"
)
// Decode regression: entity_metadata (1.8) - entityMetadataLoop mergeCompareTo
func TestRegressionPacketDF2DF88561529208(t *testing.T) {
p := &generated.PlayToClientPacketEntityMetadata{}
b := bytes.NewReader([]byte{0x69, 0x0, 0x0, 0x21, 0x1, 0x2c, 0x82, 0x0, 0x3, 0x0, 0x4, 0x0, 0x66, 0x40, 0x80, 0x0, 0x0, 0x47, 0x0, 0x0, 0x0, 0x0, 0x8, 0x0, 0x9, 0x0, 0xc, 0x0, 0xf, 0x0, 0x7f})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
@@ -0,0 +1,18 @@
package failed_packets_test
import (
"bytes"
"testing"
generated "github.com/admin-else/strom/mc/proto_generated/v26_2"
)
// Decode regression: entity_equipment (26.2) - topBitSetTerminatedArray
func TestRegressionPacket1D0089BBE86A1648(t *testing.T) {
p := &generated.PlayToClientPacketEntityEquipment{}
b := bytes.NewReader([]byte{0x81, 0x2, 0x0, 0x1, 0x9a, 0x7, 0x0, 0x0})
err := p.Decode(b)
if err != nil {
t.Fatalf("regression: decode failed: %v", err)
}
}
-253
View File
@@ -1,253 +0,0 @@
package raw_capture
import (
"flag"
"fmt"
"log/slog"
"os"
"time"
"github.com/admin-else/strom/mc/api"
"github.com/admin-else/strom/mc/client"
"github.com/admin-else/strom/mc/data"
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto/replay"
"github.com/admin-else/strom/mc/proto_base"
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
"github.com/admin-else/strom/mc/server"
"github.com/admin-else/strom/mc/text"
)
var Cmd = flag.NewFlagSet("raw-capture", flag.ContinueOnError)
var OfflineNameFlag = Cmd.String("name", "raw_capture", "offline player name")
var Token = Cmd.String("token", "", "token to use")
var TargetAddr = Cmd.String("addr", "127.0.0.1:25565", "address to connect to")
var ListenAddr = Cmd.String("listen", "127.0.0.1:25566", "address to listen on")
var ClientboundFile = Cmd.String("clientbound-file", "clientbound.tmcpr", "file to write clientbound packets to")
var ServerboundFile = Cmd.String("serverbound-file", "serverbound.tmcpr", "file to write serverbound packets to")
var Version = Cmd.String("version", "", "client protocol version (e.g. 26.1); if empty, detect from server status")
var StatusResponse = server.StatusResponse{
Version: server.StatusResponseVersion{
Name: text.Pretty("STROM raw-capture"),
Protocol: 0,
},
Players: server.StatusResponsePlayers{},
Description: text.Pretty("STROM raw-capture proxy"),
Favicon: "",
EnforcesSecureChat: false,
}
type Proxy struct {
Client, Servee *proto.Conn
clientboundFile *os.File
serverboundFile *os.File
clientboundWriter *replay.Writer
serverboundWriter *replay.Writer
startTime time.Time
}
func (p *Proxy) Start() (err error) {
p.startTime = time.Now()
p.Client.RegisterCritical(p.OnAnything)
p.Servee.RegisterCritical(p.OnAnything)
p.Client.RegisterCriticalUntilLatest(p.OnCompress)
p.Servee.RegisterCriticalUntilLatest(p.OnHandshake)
p.Servee.RegisterCriticalUntilLatest(p.OnLoginAcknowledged)
p.Servee.RegisterCriticalUntilLatest(p.OnFinishConfiguration)
errChan := make(chan error)
go func() {
errChan <- p.Client.StartConn()
}()
go func() {
errChan <- p.Servee.StartConn()
}()
err = <-errChan
return
}
func (p *Proxy) timestamp() uint32 {
return uint32(time.Since(p.startTime).Milliseconds())
}
func (p *Proxy) OnAnything(e event.Anything) (err error) {
packet, ok := e.Val.(proto_base.EncodeDecodeAble)
if !ok {
return
}
packetInfo, ok := proto.LookupPacketInfoByType(packet)
if !ok {
return
}
if packetInfo.Name == "encryption_begin" {
return fmt.Errorf("encryption requested by remote server; raw capture cannot continue")
}
switch packetInfo.Direction {
case proto_base.ToServer:
err = p.serverboundWriter.WritePacket(packet, p.timestamp())
if err != nil {
return
}
err = p.Client.Send(packet)
case proto_base.ToClient:
err = p.clientboundWriter.WritePacket(packet, p.timestamp())
if err != nil {
return
}
err = p.Servee.Send(packet)
}
return
}
func (p *Proxy) OnCompress(packet *v1_21_11.LoginToClientPacketCompress) (err error) {
err = p.clientboundWriter.WritePacket(packet, p.timestamp())
if err != nil {
return
}
err = p.Servee.Send(packet)
if err != nil {
return
}
p.Servee.SetCompressionThreshold(packet.Threshold)
p.Client.SetCompressionThreshold(packet.Threshold)
return event.DontForwardErr
}
func (p *Proxy) OnHandshake(packet *v1_21_11.HandshakingToServerPacketSetProtocol) (err error) {
state := proto_base.State(packet.NextState)
p.Servee.SetState(state)
return event.DontForwardErr
}
func (p *Proxy) OnLoginAcknowledged(packet *v1_21_11.LoginToServerPacketLoginAcknowledged) (err error) {
err = p.serverboundWriter.WritePacket(packet, p.timestamp())
if err != nil {
return
}
err = p.Client.Send(packet)
if err != nil {
return
}
p.Servee.SetState(proto_base.Configuration)
p.Client.SetState(proto_base.Configuration)
return event.DontForwardErr
}
func (p *Proxy) OnFinishConfiguration(packet *v1_21_11.ConfigurationToServerPacketFinishConfiguration) (err error) {
err = p.serverboundWriter.WritePacket(packet, p.timestamp())
if err != nil {
return
}
err = p.Client.Send(packet)
if err != nil {
return
}
p.Servee.SetState(proto_base.Play)
p.Client.SetState(proto_base.Play)
return event.DontForwardErr
}
func Run(args []string) (err error) {
err = Cmd.Parse(args)
if err != nil {
return
}
clientboundFile, err := os.Create(*ClientboundFile)
if err != nil {
return fmt.Errorf("create clientbound file: %w", err)
}
defer clientboundFile.Close()
serverboundFile, err := os.Create(*ServerboundFile)
if err != nil {
return fmt.Errorf("create serverbound file: %w", err)
}
defer serverboundFile.Close()
resolvedAddr, _, _, err := client.DoDNSChecked(nil, *TargetAddr, nil)
if err != nil {
return
}
var targetVersion string
var targetProtocol int32
if *Version == "" {
status, err := client.Status(nil, resolvedAddr)
if err != nil {
return fmt.Errorf("failed to detect server version: %w", err)
}
targetProtocol = status.Version.Protocol
versionInfo, err := data.LookUpVersionByProtocolVersion(targetProtocol)
if err != nil {
return fmt.Errorf("unknown protocol version %d: %w", targetProtocol, err)
}
targetVersion = versionInfo.MinecraftVersion
} else {
versionInfo, err := data.LookUpVersionByName(*Version)
if err != nil {
return fmt.Errorf("unknown version %s: %w", *Version, err)
}
targetVersion = versionInfo.MinecraftVersion
targetProtocol = versionInfo.Version
}
StatusResponse.Version.Name = text.Pretty("STROM raw-capture " + targetVersion)
StatusResponse.Version.Protocol = targetProtocol
StatusResponse.Description = text.Pretty(fmt.Sprintf("Raw capture proxy forwards to %s (%s)", resolvedAddr, targetVersion))
slog.Info("Starting raw capture", "listen", *ListenAddr, "target", resolvedAddr, "version", targetVersion, "protocol", targetProtocol, "clientbound", *ClientboundFile, "serverbound", *ServerboundFile)
err = server.StartServerWithOnConn(*ListenAddr, func(serveeConn *proto.Conn) (err error) {
proxy := &Proxy{
Servee: serveeConn,
clientboundFile: clientboundFile,
serverboundFile: serverboundFile,
clientboundWriter: replay.NewWriter(clientboundFile),
serverboundWriter: replay.NewWriter(serverboundFile),
}
acc := api.NewOfflineAccount(*OfflineNameFlag)
if *Token != "" {
acc, err = api.NewAccountFromYGG(*Token)
if err != nil {
return
}
}
_, err = server.ServeLogin(serveeConn, server.WithOtherAccount(acc), server.WithStatus(StatusResponse), server.WithoutOnlineMode(), server.WithoutEncryption())
if err != nil {
return
}
c, err := client.Connect(nil, resolvedAddr, targetVersion)
if err != nil {
return
}
defer c.Close()
err = client.LoginRaw(c, acc)
if err != nil {
return
}
proxy.Client = c
proxy.Client.AlwaysDecode = true
proxy.Servee.AlwaysDecode = true
return proxy.Start()
})
return
}
+256
View File
@@ -0,0 +1,256 @@
package raw_to_tmcpr
import (
"bytes"
"compress/zlib"
"errors"
"flag"
"fmt"
"io"
"os"
"time"
"github.com/admin-else/strom/mc/proto/replay"
"github.com/admin-else/strom/mc/proto_base"
)
var Cmd = flag.NewFlagSet("raw-to-tmcpr", flag.ContinueOnError)
var ClientboundIn = Cmd.String("clientbound", "", "raw tcpflow file for clientbound (server->client) direction")
var ServerboundIn = Cmd.String("serverbound", "", "raw tcpflow file for serverbound (client->server) direction")
var ClientboundOut = Cmd.String("clientbound-out", "clientbound.tmcpr", "output TMCPR file for clientbound")
var ServerboundOut = Cmd.String("serverbound-out", "serverbound.tmcpr", "output TMCPR file for serverbound")
var ClientboundState = Cmd.String("clientbound-state", "login", "initial state for clientbound: handshake, login, config, status, play")
var ServerboundState = Cmd.String("serverbound-state", "handshake", "initial state for serverbound: handshake, login, config, status, play")
var UseConfig = Cmd.Bool("config", false, "use Configuration state transitions (for protocol >= 764, Minecraft 1.20.2+)")
type captureReader struct {
r io.Reader
out *replay.Writer
state proto_base.State
threshold int32
startTime time.Time
haveStartTime bool
direction proto_base.Direction
pendingThreshold int32
useConfig bool
}
func (cr *captureReader) setStartTime() {
if !cr.haveStartTime {
cr.startTime = time.Now()
cr.haveStartTime = true
}
}
func (cr *captureReader) timestamp() uint32 {
return uint32(time.Since(cr.startTime).Milliseconds())
}
func readPacketBytes(r io.Reader, threshold int32) ([]byte, error) {
packetLen, err := proto_base.DecodeVarInt(r)
if err != nil {
return nil, fmt.Errorf("read packet length: %w", err)
}
rawBytes := make([]byte, packetLen)
_, err = io.ReadFull(r, rawBytes)
if err != nil {
return nil, fmt.Errorf("read packet data: %w", err)
}
if threshold >= 0 {
buf := bytes.NewReader(rawBytes)
uncompressedLen, err := proto_base.DecodeVarInt(buf)
if err != nil {
return nil, fmt.Errorf("read uncompressed length: %w", err)
}
if uncompressedLen == 0 {
return io.ReadAll(buf)
} else {
zReader, err := zlib.NewReader(buf)
if err != nil {
return nil, fmt.Errorf("zlib reader: %w", err)
}
defer zReader.Close()
decompressed, err := io.ReadAll(zReader)
if err != nil {
return nil, fmt.Errorf("decompress: %w", err)
}
return decompressed, nil
}
}
return rawBytes, nil
}
func (cr *captureReader) trackState(packetBytes []byte) {
buf := bytes.NewReader(packetBytes)
packetId, err := proto_base.DecodeVarInt(buf)
if err != nil {
return
}
switch cr.state {
case proto_base.Handshaking:
if cr.direction == proto_base.ToServer && packetId == 0 {
_, err = proto_base.DecodeVarInt(buf) // protocol version
if err != nil {
return
}
_, err = proto_base.DecodeString(buf) // server address
if err != nil {
return
}
portBytes := make([]byte, 2)
_, err = io.ReadFull(buf, portBytes)
if err != nil {
return
}
nextState, err := proto_base.DecodeVarInt(buf)
if err != nil {
return
}
if nextState == 2 {
cr.state = proto_base.Login
} else if nextState == 1 {
cr.state = proto_base.Status
}
}
case proto_base.Login:
if cr.direction == proto_base.ToClient {
if packetId == 0x03 {
threshold, err := proto_base.DecodeVarInt(buf)
if err == nil {
cr.threshold = threshold
}
} else if packetId == 0x02 {
if cr.useConfig {
cr.state = proto_base.Configuration
} else {
cr.state = proto_base.Play
}
}
} else if cr.direction == proto_base.ToServer && packetId == 0 {
if cr.pendingThreshold >= 0 {
cr.threshold = cr.pendingThreshold
}
}
case proto_base.Configuration:
if cr.direction == proto_base.ToClient && packetId == 0x02 {
cr.state = proto_base.Play
}
case proto_base.Status:
case proto_base.Play:
}
}
func (cr *captureReader) process() (count int, err error) {
for {
packetBytes, err := readPacketBytes(cr.r, cr.threshold)
if err != nil {
if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) {
return count, nil
}
return count, err
}
cr.setStartTime()
cr.trackState(packetBytes)
err = cr.out.WriteRaw(packetBytes, cr.timestamp())
if err != nil {
return count, fmt.Errorf("write TMCPR: %w", err)
}
count++
}
}
func Run(args []string) (err error) {
err = Cmd.Parse(args)
if err != nil {
return
}
if *ClientboundIn == "" && *ServerboundIn == "" {
return fmt.Errorf("at least one of -clientbound or -serverbound must be specified")
}
parseState := func(name string) (proto_base.State, error) {
switch name {
case "handshake":
return proto_base.Handshaking, nil
case "login":
return proto_base.Login, nil
case "config":
return proto_base.Configuration, nil
case "play":
return proto_base.Play, nil
case "status":
return proto_base.Status, nil
default:
return 0, fmt.Errorf("unknown state: %s (valid: handshake, login, config, status, play)", name)
}
}
var compressionThreshold int32 = -1
if *ClientboundIn != "" {
state, err := parseState(*ClientboundState)
if err != nil {
return err
}
compressionThreshold, err = processFile(*ClientboundIn, *ClientboundOut, state, proto_base.ToClient, -1, *UseConfig)
if err != nil {
return fmt.Errorf("clientbound: %w", err)
}
}
if *ServerboundIn != "" {
state, err := parseState(*ServerboundState)
if err != nil {
return err
}
_, err = processFile(*ServerboundIn, *ServerboundOut, state, proto_base.ToServer, compressionThreshold, *UseConfig)
if err != nil {
return fmt.Errorf("serverbound: %w", err)
}
}
return
}
func processFile(inPath, outPath string, initial proto_base.State, dir proto_base.Direction, initialThreshold int32, useConfig bool) (finalThreshold int32, err error) {
in, err := os.Open(inPath)
if err != nil {
return initialThreshold, fmt.Errorf("open input: %w", err)
}
defer in.Close()
out, err := os.Create(outPath)
if err != nil {
return initialThreshold, fmt.Errorf("create output: %w", err)
}
defer out.Close()
cr := &captureReader{
r: in,
out: replay.NewWriter(out),
state: initial,
threshold: -1,
direction: dir,
pendingThreshold: initialThreshold,
useConfig: useConfig,
}
if dir == proto_base.ToClient {
cr.threshold = initialThreshold
}
count, err := cr.process()
if err != nil {
return cr.threshold, err
}
fmt.Printf("%s: %d packets written to %s (threshold=%d)\n", inPath, count, outPath, cr.threshold)
return cr.threshold, nil
}
-152
View File
@@ -1,152 +0,0 @@
package registry_data_hunter
import (
"encoding/json"
"errors"
"log/slog"
"os"
"github.com/admin-else/strom/mc/api"
"github.com/admin-else/strom/mc/client"
"github.com/admin-else/strom/mc/data"
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/nbt"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_base"
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
"github.com/admin-else/strom/mc/server"
"github.com/admin-else/strom/mc/text"
)
func wontFail[T any](v T, err error) T {
if err != nil {
panic(err)
}
return v
}
var (
Version = "1.21.11"
SaveAs = "data/registry/" + Version + ".nbt"
CompatibleProtocolVersion = wontFail(data.LookUpVersionByName(Version)).Version
FinishedConfigErr = errors.New("finished configuration")
)
var Status = wontFail(json.Marshal(server.StatusResponse{
Version: server.StatusResponseVersion{
Name: nil,
Protocol: CompatibleProtocolVersion,
},
Description: text.Pretty("Registry data hunter"),
}))
type Proxy struct {
Client, Servee *proto.Conn
Data *nbt.Tag
}
func (p *Proxy) OnAnything(e event.Anything) (err error) {
packet, ok := e.Val.(proto_base.EncodeDecodeAble)
if !ok {
return
}
packetInfo, ok := proto.LookupPacketInfoByType(packet)
if !ok {
return
}
switch packetInfo.Direction {
case proto_base.ToServer:
err = p.Client.Send(packet)
case proto_base.ToClient:
err = p.Servee.Send(packet)
}
return
}
func (p *Proxy) OnFinishConfiguration(_ *v1_21_8.ConfigurationToClientPacketFinishConfiguration) (err error) {
err = FinishedConfigErr
return
}
func (p *Proxy) OnSelectKnownPacks(data *v1_21_8.ConfigurationToClientPacketCommonSelectKnownPacks) (err error) {
var entries []any
for _, entry := range data.Packs {
e := map[string]any{"Namespace": entry.Namespace, "Id": entry.Id, "Version": entry.Version}
entries = append(entries, e)
}
p.Data.Value.(map[string]any)["KnownPacks"] = entries
return
}
func (p *Proxy) OnData(data *v1_21_8.ConfigurationToClientPacketRegistryData) (err error) {
d := p.Data.Value.(map[string]any)["Registries"].([]any)
var entries []any
for _, entry := range data.Entries {
if entry.Value != nil {
entries = append(entries, map[string]any{"TagType": entry.Key, "Value": entry.Value.Value})
} else {
entries = append(entries, map[string]any{"TagType": entry.Key})
}
}
d = append(d, map[string]any{"Id": data.Id, "Entries": entries})
p.Data.Value.(map[string]any)["Registries"] = d
return
}
func (p *Proxy) OnTags(data *v1_21_8.ConfigurationToClientPacketTags) (err error) {
var tags []any
for _, tag := range data.Tags {
var entries []any
for _, entry := range tag.Tags.Val {
entries = append(entries, map[string]any{"TagName": entry.TagName, "Entries": entry.Entries})
}
tags = append(tags, map[string]any{"TagType": tag.TagType, "Entries": entries})
}
p.Data.Value.(map[string]any)["Tags"] = tags
return
}
func handleClient(c *proto.Conn) (err error) {
acc := api.NewOfflineAccount("RegistryHunter")
_, err = server.ServeLogin(c, server.WithOtherAccount(acc), server.WithCompatibleVersions(CompatibleProtocolVersion), server.WithRawStatus(Status))
if err != nil {
return
}
sockPuppet, err := client.Login(":25565", acc)
if err != nil {
return
}
defer sockPuppet.Close()
errChan := make(chan error)
p := &Proxy{Client: sockPuppet, Servee: c}
p.Data.Value = map[string]any{"Registries": []any{}}
p.Client.RegisterCritical(p.OnAnything)
p.Servee.RegisterCritical(p.OnAnything)
p.Client.RegisterCriticalUntilLatest(p.OnData)
p.Client.RegisterCriticalUntilLatest(p.OnTags)
p.Client.RegisterCriticalUntilLatest(p.OnSelectKnownPacks)
p.Client.RegisterCriticalUntilLatest(p.OnFinishConfiguration)
go func() {
errChan <- p.Client.StartConn()
}()
go func() {
errChan <- p.Servee.StartConn()
}()
err = <-errChan
f, err := os.Create(SaveAs)
if err != nil {
return
}
defer f.Close()
err = nbt.WriteUnstructuredFile(f, p.Data)
slog.Info("saved", "file", SaveAs)
return
}
func Run(args []string) error {
slog.SetLogLoggerLevel(slog.LevelDebug)
return server.StartServerWithOnConn(":25566", handleClient)
}
+9 -1
View File
@@ -15,6 +15,7 @@ import (
"github.com/admin-else/strom/mc/api"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
"github.com/admin-else/strom/mc/proto_generated/v1_8"
"github.com/google/uuid"
)
@@ -43,6 +44,9 @@ func Start(c *proto.Conn, acc *api.Account) (*Module, error) {
}
func (m *Module) initSigning(acc *api.Account) (err error) {
if m.Conn.ProtocolVersion < 764 {
return nil
}
keys, err := acc.FetchKeys()
if err != nil {
return fmt.Errorf("fetch profile keys: %w", err)
@@ -80,8 +84,12 @@ func (m *Module) initSigning(acc *api.Account) (err error) {
}
// SendMessage sends a chat message. If signing is enabled, the message is signed;
// otherwise it is sent unsigned.
// otherwise it is sent unsigned. For pre-1.19 protocol versions, uses the legacy
// chat packet format (plain string).
func (m *Module) SendMessage(message string) (err error) {
if m.Conn.ProtocolVersion < 764 {
return m.Conn.Send(&v1_8.PlayToServerPacketChat{Message: message})
}
if m.canSign {
return m.sendSigned(message)
}
+58 -21
View File
@@ -14,9 +14,12 @@ import (
"github.com/admin-else/strom/mc/event"
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_base"
"github.com/admin-else/strom/mc/proto_generated/v1_16_5"
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
"github.com/admin-else/strom/mc/proto_generated/v1_8"
"github.com/admin-else/strom/mc/proto_generated/v26_2"
"github.com/admin-else/strom/mc/text"
"github.com/google/uuid"
)
type LoginClient struct {
@@ -54,28 +57,36 @@ func (s *LoginClient) OnClose(_ event.Close) (err error) {
return
}
func (s *LoginClient) OnCompress(compress *v1_21_8.LoginToClientPacketCompress) (err error) {
s.SetCompressionThreshold(compress.Threshold)
func (s *LoginClient) OnCompress(packet *v1_8.LoginToClientPacketCompress) (err error) {
s.SetCompressionThreshold(packet.Threshold)
return
}
func (s *LoginClient) OnEncryptV1_8(packet *v1_8.LoginToClientPacketEncryptionBegin) (err error) {
return s.doEncrypt(packet.ServerId, packet.PublicKey, packet.VerifyToken, true)
}
func (s *LoginClient) OnEncrypt(packet *v1_21_8.LoginToClientPacketEncryptionBegin) (err error) {
return s.doEncrypt(packet.ServerId, packet.PublicKey, packet.VerifyToken, packet.ShouldAuthenticate)
}
func (s *LoginClient) doEncrypt(serverId string, publicKey []byte, verifyToken []byte, shouldAuthenticate bool) (err error) {
sharedSecret := make([]byte, 16)
_, _ = rand.Read(sharedSecret) //never fails
if packet.ShouldAuthenticate {
if shouldAuthenticate {
if s.Account.Ygg == "" {
err = NoTokenErr
return
}
serverId := crypto.AuthDigest([]byte(packet.ServerId), sharedSecret, packet.PublicKey)
err = s.Account.JoinServer(serverId)
hash := crypto.AuthDigest([]byte(serverId), sharedSecret, publicKey)
err = s.Account.JoinServer(hash)
if err != nil {
return
}
}
pubAny, err := x509.ParsePKIXPublicKey(packet.PublicKey)
pubAny, err := x509.ParsePKIXPublicKey(publicKey)
if err != nil {
return
}
@@ -84,7 +95,7 @@ func (s *LoginClient) OnEncrypt(packet *v1_21_8.LoginToClientPacketEncryptionBeg
err = BadPublicKeyTypeErr
return
}
verifyTokenEnc, err := rsa.EncryptPKCS1v15(rand.Reader, pub, packet.VerifyToken)
verifyTokenEnc, err := rsa.EncryptPKCS1v15(rand.Reader, pub, verifyToken)
if err != nil {
return
}
@@ -99,10 +110,9 @@ func (s *LoginClient) OnEncrypt(packet *v1_21_8.LoginToClientPacketEncryptionBeg
}
err = s.SetSecret(sharedSecret)
return
}
func (s *LoginClient) OnDisconnect(packet *v1_21_8.LoginToClientPacketDisconnect) (err error) {
func (s *LoginClient) OnDisconnect(packet *v1_8.LoginToClientPacketDisconnect) (err error) {
var reason text.Component
err = json.Unmarshal([]byte(packet.Reason), &reason)
if err != nil {
@@ -112,13 +122,27 @@ func (s *LoginClient) OnDisconnect(packet *v1_21_8.LoginToClientPacketDisconnect
return
}
func (s *LoginClient) OnSuccessV1_8(success *v1_8.LoginToClientPacketSuccess) (err error) {
s.GivenAccount = &v1_21_8.LoginToClientPacketSuccess{
Uuid: uuid.MustParse(success.Uuid),
Username: success.Username,
}
s.SetState(proto_base.Play)
err = event.HandlerDoneErr{}
return
}
func (s *LoginClient) OnSuccess(success *v1_21_8.LoginToClientPacketSuccess) (err error) {
s.GivenAccount = success
err = s.Send(&v1_21_8.LoginToServerPacketLoginAcknowledged{})
if err != nil {
return
if s.ProtocolVersion >= 764 {
err = s.Send(&v1_21_8.LoginToServerPacketLoginAcknowledged{})
if err != nil {
return
}
s.SetState(proto_base.Configuration)
} else {
s.SetState(proto_base.Play)
}
s.SetState(proto_base.Configuration)
err = event.HandlerDoneErr{}
return
}
@@ -131,6 +155,13 @@ func (s *LoginClient) OnSuccess26_2(success *v26_2.LoginToClientPacketSuccess) (
})
}
func (s *LoginClient) OnSuccess1_16_5(success *v1_16_5.LoginToClientPacketSuccess) (err error) {
return s.OnSuccess(&v1_21_8.LoginToClientPacketSuccess{
Uuid: success.Uuid,
Username: success.Username,
})
}
func (s *LoginClient) OnStart() (err error) {
return
}
@@ -150,11 +181,11 @@ func LoginRawAddr(c *proto.Conn, account *api.Account, hostAddr string) (err err
}
lc.RegisterCritical(lc.OnDefault)
lc.RegisterCritical(lc.OnClose)
lc.RegisterCriticalUntilLatest(lc.OnCompress)
lc.RegisterCriticalUntilLatest(lc.OnEncrypt)
lc.RegisterCriticalUntilLatest(lc.OnDisconnect)
lc.RegisterCriticalUntil("26.1", lc.OnSuccess)
lc.RegisterCriticalUntilLatest(lc.OnSuccess26_2)
lc.RegisterUntil("26.2", lc.OnCompress, lc.OnDisconnect, lc.OnEncrypt)
lc.RegisterUntil("26.1", lc.OnSuccess)
lc.RegisterUntilLatest(lc.OnSuccess26_2)
lc.RegisterUntil("1.14.4", lc.OnEncryptV1_8, lc.OnSuccessV1_8)
lc.RegisterUntil("1.16.5", lc.OnSuccess1_16_5)
var p proto_base.EncodeDecodeAble
if hostAddr != "" {
@@ -171,7 +202,11 @@ func LoginRawAddr(c *proto.Conn, account *api.Account, hostAddr string) (err err
return
}
lc.SetState(proto_base.Login)
err = lc.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: lc.Account.Name, PlayerUUID: lc.Account.Uuid})
if lc.Conn.ProtocolVersion < 759 {
err = lc.Send(&v1_8.LoginToServerPacketLoginStart{Username: lc.Account.Name})
} else {
err = lc.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: lc.Account.Name, PlayerUUID: lc.Account.Uuid})
}
err = lc.StartConn()
if err != nil {
@@ -248,6 +283,8 @@ func Login(connectTo string, account *api.Account, settings ...func(ls *loginSet
setting(ls)
}
hostAddr := connectTo
if ls.Conn != nil {
if ls.Version == "" {
return nil, ErrWithConnRequiresVersion
@@ -289,11 +326,11 @@ func Login(connectTo string, account *api.Account, settings ...func(ls *loginSet
}
}
err = LoginRawAddr(c, account, connectTo)
err = LoginRawAddr(c, account, hostAddr)
if err != nil {
return
}
if !ls.IgnoreConfig {
if !ls.IgnoreConfig && c.ProtocolVersion >= 764 {
err = IgnoreConfig(c)
}
return
+4 -4
View File
@@ -9,6 +9,7 @@ import (
"github.com/admin-else/strom/mc/proto"
"github.com/admin-else/strom/mc/proto_base"
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
"github.com/admin-else/strom/mc/proto_generated/v1_8"
"github.com/admin-else/strom/mc/server"
)
@@ -19,7 +20,7 @@ type StatusClient struct {
DoPingRoundTripTime bool
}
func (s *StatusClient) OnStatus(p *v1_21_8.StatusToClientPacketServerInfo) (err error) {
func (s *StatusClient) OnStatus(p *v1_8.StatusToClientPacketServerInfo) (err error) {
s.Status = p.Response
s.PingSendTime = time.Now()
if s.DoPingRoundTripTime {
@@ -30,7 +31,7 @@ func (s *StatusClient) OnStatus(p *v1_21_8.StatusToClientPacketServerInfo) (err
return
}
func (s *StatusClient) OnPong(p *v1_21_8.StatusToClientPacketPing) (err error) {
func (s *StatusClient) OnPong(p *v1_8.StatusToClientPacketPing) (err error) {
s.PingReceiveTime = time.Now()
err = event.HandlerDoneErr{}
return
@@ -57,8 +58,7 @@ func StatusRawWithVersion(ctx context.Context, addr, version string) (s *StatusC
s = &StatusClient{
Conn: c,
}
s.RegisterCriticalUntilLatest(s.OnStatus)
s.RegisterCriticalUntilLatest(s.OnPong)
s.RegisterUntil("26.2", s.OnStatus, s.OnPong)
p, err := MakeHandshakePacketAddr(s.Conn, proto_base.Status, addr)
if err != nil {
+10 -1
View File
@@ -6,7 +6,7 @@ set -xeuo pipefail
cd "$(dirname "$0")"
rm -rf minecraft-data/
git clone --depth 1 git@github.com:PrismarineJS/minecraft-data.git
git clone --depth 1 git@github.com:admin-else/minecraft-data.git
mv minecraft-data minecraft-data-untrimmed
mkdir minecraft-data
@@ -20,8 +20,17 @@ copy-mc() {
copy-mc common
# Legacy versions
copy-mc 1.8
copy-mc 1.12.2
copy-mc 1.14.4
copy-mc 1.16.5
# Modern versions
copy-mc 1.21.8
copy-mc 1.21.9
copy-mc 1.21.11
copy-mc 26.1
copy-mc 26.2
rm -rf minecraft-data-untrimmed
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.12.2",
"version":340,
"majorVersion": "1.12"
}
@@ -0,0 +1,953 @@
[
{
"id": 0,
"name": "ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1,
"dimension": "overworld",
"displayName": "Ocean",
"color": 112,
"rainfall": 0.5
},
{
"id": 1,
"name": "plains",
"category": "plains",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Plains",
"color": 9286496,
"rainfall": 0.4,
"child": 129
},
{
"id": 2,
"name": "desert",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Desert",
"color": 16421912,
"rainfall": 0,
"child": 130
},
{
"id": 3,
"name": "mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Mountains",
"color": 6316128,
"rainfall": 0.3,
"child": 131
},
{
"id": 4,
"name": "forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Forest",
"color": 353825,
"rainfall": 0.8,
"child": 132
},
{
"id": 5,
"name": "taiga",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Taiga",
"color": 747097,
"rainfall": 0.8,
"child": 133
},
{
"id": 6,
"name": "swamp",
"category": "swamp",
"temperature": 0.8,
"precipitation": "rain",
"depth": -0.2,
"dimension": "overworld",
"displayName": "Swamp",
"color": 522674,
"rainfall": 0.9,
"child": 134
},
{
"id": 7,
"name": "river",
"category": "river",
"temperature": 0.5,
"precipitation": "rain",
"depth": -0.5,
"dimension": "overworld",
"displayName": "River",
"color": 255,
"rainfall": 0.5
},
{
"id": 8,
"name": "nether_wastes",
"category": "nether",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"climates": [
{
"temperature": 0,
"humidity": 0,
"altitude": 0,
"weirdness": 0,
"offset": 0
}
],
"dimension": "nether",
"displayName": "Nether Wastes",
"color": 12532539,
"rainfall": 0
},
{
"id": 9,
"name": "the_end",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "The End",
"color": 8421631,
"rainfall": 0.5
},
{
"id": 10,
"name": "frozen_ocean",
"category": "ocean",
"temperature": 0,
"precipitation": "snow",
"depth": -1,
"dimension": "overworld",
"displayName": "Frozen Ocean",
"color": 7368918,
"rainfall": 0.5
},
{
"id": 11,
"name": "frozen_river",
"category": "river",
"temperature": 0,
"precipitation": "snow",
"depth": -0.5,
"dimension": "overworld",
"displayName": "Frozen River",
"color": 10526975,
"rainfall": 0.5
},
{
"id": 12,
"name": "snowy_tundra",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Snowy Tundra",
"color": 16777215,
"rainfall": 0.5,
"child": 140
},
{
"id": 13,
"name": "snowy_mountains",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Snowy Mountains",
"color": 10526880,
"rainfall": 0.5
},
{
"id": 14,
"name": "mushroom_fields",
"category": "mushroom",
"temperature": 0.9,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Mushroom Fields",
"color": 16711935,
"rainfall": 1
},
{
"id": 15,
"name": "mushroom_field_shore",
"category": "mushroom",
"temperature": 0.9,
"precipitation": "rain",
"depth": 0,
"dimension": "overworld",
"displayName": "Mushroom Fields Shore",
"color": 10486015,
"rainfall": 1
},
{
"id": 16,
"name": "beach",
"category": "beach",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0,
"dimension": "overworld",
"displayName": "Beach",
"color": 16440917,
"rainfall": 0.4
},
{
"id": 17,
"name": "desert_hills",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Desert Hills",
"color": 13786898,
"rainfall": 0
},
{
"id": 18,
"name": "wooded_hills",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Wooded Hills",
"color": 2250012,
"rainfall": 0.8
},
{
"id": 19,
"name": "taiga_hills",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Taiga Hills",
"color": 1456435,
"rainfall": 0.8
},
{
"id": 20,
"name": "mountain_edge",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 0.8,
"dimension": "overworld",
"displayName": "Mountain Edge",
"color": 7501978,
"rainfall": 0.3
},
{
"id": 21,
"name": "jungle",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Jungle",
"color": 5470985,
"rainfall": 0.9,
"child": 149
},
{
"id": 22,
"name": "jungle_hills",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Jungle Hills",
"color": 2900485,
"rainfall": 0.9
},
{
"id": 23,
"name": "jungle_edge",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Jungle Edge",
"color": 6458135,
"rainfall": 0.8,
"child": 151
},
{
"id": 24,
"name": "deep_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Ocean",
"color": 48,
"rainfall": 0.5
},
{
"id": 25,
"name": "stone_shore",
"category": "none",
"temperature": 0.2,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Stone Shore",
"color": 10658436,
"rainfall": 0.3
},
{
"id": 26,
"name": "snowy_beach",
"category": "beach",
"temperature": 0.05,
"precipitation": "snow",
"depth": 0,
"dimension": "overworld",
"displayName": "Snowy Beach",
"color": 16445632,
"rainfall": 0.3
},
{
"id": 27,
"name": "birch_forest",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Birch Forest",
"color": 3175492,
"rainfall": 0.6,
"child": 155
},
{
"id": 28,
"name": "birch_forest_hills",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Birch Forest Hills",
"color": 2055986,
"rainfall": 0.6,
"child": 156
},
{
"id": 29,
"name": "dark_forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Dark Forest",
"color": 4215066,
"rainfall": 0.8,
"child": 157
},
{
"id": 30,
"name": "snowy_taiga",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Snowy Taiga",
"color": 3233098,
"rainfall": 0.4,
"child": 158
},
{
"id": 31,
"name": "snowy_taiga_hills",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Snowy Taiga Hills",
"color": 2375478,
"rainfall": 0.4
},
{
"id": 32,
"name": "giant_tree_taiga",
"category": "taiga",
"temperature": 0.3,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Giant Tree Taiga",
"color": 5858897,
"rainfall": 0.8,
"child": 160
},
{
"id": 33,
"name": "giant_tree_taiga_hills",
"category": "taiga",
"temperature": 0.3,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Giant Tree Taiga Hills",
"color": 4542270,
"rainfall": 0.8,
"child": 161
},
{
"id": 34,
"name": "wooded_mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Wooded Mountains",
"color": 5271632,
"rainfall": 0.3,
"child": 162
},
{
"id": 35,
"name": "savanna",
"category": "savanna",
"temperature": 1.2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Savanna",
"color": 12431967,
"rainfall": 0,
"child": 163
},
{
"id": 36,
"name": "savanna_plateau",
"category": "savanna",
"temperature": 1,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Savanna Plateau",
"color": 10984804,
"rainfall": 0,
"child": 164
},
{
"id": 37,
"name": "badlands",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Badlands",
"color": 14238997,
"rainfall": 0,
"child": 165
},
{
"id": 38,
"name": "wooded_badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Wooded Badlands Plateau",
"color": 11573093,
"rainfall": 0,
"child": 166
},
{
"id": 39,
"name": "badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Badlands Plateau",
"color": 13274213,
"rainfall": 0,
"child": 167
},
{
"id": 40,
"name": "small_end_islands",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "Small End Islands",
"color": 42,
"rainfall": 0.5
},
{
"id": 41,
"name": "end_midlands",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "End Midlands",
"color": 15464630,
"rainfall": 0.5
},
{
"id": 42,
"name": "end_highlands",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "End Highlands",
"color": 12828041,
"rainfall": 0.5
},
{
"id": 43,
"name": "end_barrens",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "End Barrens",
"color": 9474162,
"rainfall": 0.5
},
{
"id": 44,
"name": "warm_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1,
"dimension": "overworld",
"displayName": "Warm Ocean",
"color": 172,
"rainfall": 0.5
},
{
"id": 45,
"name": "lukewarm_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1,
"dimension": "overworld",
"displayName": "Lukewarm Ocean",
"color": 144,
"rainfall": 0.5
},
{
"id": 46,
"name": "cold_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1,
"dimension": "overworld",
"displayName": "Cold Ocean",
"color": 2105456,
"rainfall": 0.5
},
{
"id": 47,
"name": "deep_warm_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Warm Ocean",
"color": 80,
"rainfall": 0.5
},
{
"id": 48,
"name": "deep_lukewarm_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Lukewarm Ocean",
"color": 64,
"rainfall": 0.5
},
{
"id": 49,
"name": "deep_cold_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Cold Ocean",
"color": 2105400,
"rainfall": 0.5
},
{
"id": 50,
"name": "deep_frozen_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Frozen Ocean",
"color": 4210832,
"rainfall": 0.5
},
{
"id": 127,
"name": "the_void",
"category": "none",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "the_void",
"rainfall": 0.5,
"color": 0
},
{
"id": 129,
"name": "sunflower_plains",
"category": "plains",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Sunflower Plains",
"color": 11918216,
"parent": "plains",
"rainfall": 0.4
},
{
"id": 130,
"name": "desert_lakes",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Desert Lakes",
"color": 16759872,
"parent": "desert",
"rainfall": 0
},
{
"id": 131,
"name": "gravelly_mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Gravelly Mountains",
"color": 8947848,
"parent": "mountains",
"rainfall": 0.3
},
{
"id": 132,
"name": "flower_forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Flower Forest",
"color": 2985545,
"parent": "forest",
"rainfall": 0.8
},
{
"id": 133,
"name": "taiga_mountains",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.3,
"dimension": "overworld",
"displayName": "Taiga Mountains",
"color": 3378817,
"parent": "taiga",
"rainfall": 0.8
},
{
"id": 134,
"name": "swamp_hills",
"category": "swamp",
"temperature": 0.8,
"precipitation": "rain",
"depth": -0.1,
"dimension": "overworld",
"displayName": "Swamp Hills",
"color": 3145690,
"parent": "swamp",
"rainfall": 0.9
},
{
"id": 140,
"name": "ice_spikes",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.425,
"dimension": "overworld",
"displayName": "Ice Spikes",
"color": 11853020,
"parent": "snowy_tundra",
"rainfall": 0.5
},
{
"id": 149,
"name": "modified_jungle",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Modified Jungle",
"color": 8102705,
"parent": "jungle",
"rainfall": 0.9
},
{
"id": 151,
"name": "modified_jungle_edge",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Modified Jungle Edge",
"color": 9089855,
"parent": "jungle_edge",
"rainfall": 0.8
},
{
"id": 155,
"name": "tall_birch_forest",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Tall Birch Forest",
"color": 5807212,
"parent": "birch_forest",
"rainfall": 0.6
},
{
"id": 156,
"name": "tall_birch_hills",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.55,
"dimension": "overworld",
"displayName": "Tall Birch Hills",
"color": 4687706,
"parent": "birch_forest_hills",
"rainfall": 0.6
},
{
"id": 157,
"name": "dark_forest_hills",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Dark Forest Hills",
"color": 6846786,
"parent": "dark_forest",
"rainfall": 0.8
},
{
"id": 158,
"name": "snowy_taiga_mountains",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.3,
"dimension": "overworld",
"displayName": "Snowy Taiga Mountains",
"color": 5864818,
"parent": "snowy_taiga",
"rainfall": 0.4
},
{
"id": 160,
"name": "giant_spruce_taiga",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Giant Spruce Taiga",
"color": 8490617,
"parent": "giant_tree_taiga",
"rainfall": 0.8
},
{
"id": 161,
"name": "giant_spruce_taiga_hills",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Giant Spruce Taiga Hills",
"color": 7173990,
"parent": "giant_tree_taiga_hills",
"rainfall": 0.8
},
{
"id": 162,
"name": "modified_gravelly_mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Gravelly Mountains+",
"color": 7903352,
"parent": "wooded_mountains",
"rainfall": 0.3
},
{
"id": 163,
"name": "shattered_savanna",
"category": "savanna",
"temperature": 1.1,
"precipitation": "none",
"depth": 0.3625,
"dimension": "overworld",
"displayName": "Shattered Savanna",
"color": 15063687,
"parent": "savanna",
"rainfall": 0
},
{
"id": 164,
"name": "shattered_savanna_plateau",
"category": "savanna",
"temperature": 1,
"precipitation": "none",
"depth": 1.05,
"dimension": "overworld",
"displayName": "Shattered Savanna Plateau",
"color": 13616524,
"parent": "savanna_plateau",
"rainfall": 0
},
{
"id": 165,
"name": "eroded_badlands",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Eroded Badlands",
"color": 16739645,
"parent": "badlands",
"rainfall": 0
},
{
"id": 166,
"name": "modified_wooded_badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Modified Wooded Badlands Plateau",
"color": 14204813,
"parent": "wooded_badlands_plateau",
"rainfall": 0
},
{
"id": 167,
"name": "modified_badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Modified Badlands Plateau",
"color": 15905933,
"parent": "badlands_plateau",
"rainfall": 0
},
{
"id": 168,
"name": "bamboo_jungle",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Bamboo Jungle",
"color": 7769620,
"rainfall": 0.9
},
{
"id": 169,
"name": "bamboo_jungle_hills",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Bamboo Jungle Hills",
"color": 3884810,
"rainfall": 0.9
}
]
@@ -0,0 +1,946 @@
{"blocks":{"air":0,
"stone":1,
"granite":1,
"polished_granite":1,
"diorite":1,
"polished_diorite":1,
"andesite":1,
"polished_andesite":1,
"grass_block":1,
"dirt":1,
"coarse_dirt":1,
"podzol":1,
"cobblestone":1,
"oak_planks":1,
"spruce_planks":1,
"birch_planks":1,
"jungle_planks":1,
"acacia_planks":1,
"dark_oak_planks":1,
"oak_sapling":0,
"spruce_sapling":0,
"birch_sapling":0,
"jungle_sapling":0,
"acacia_sapling":0,
"dark_oak_sapling":0,
"bedrock":1,
"water":0,
"lava":0,
"sand":1,
"red_sand":1,
"gravel":1,
"gold_ore":1,
"iron_ore":1,
"coal_ore":1,
"oak_log":1,
"spruce_log":1,
"birch_log":1,
"jungle_log":1,
"acacia_log":1,
"dark_oak_log":1,
"stripped_spruce_log":1,
"stripped_birch_log":1,
"stripped_jungle_log":1,
"stripped_acacia_log":1,
"stripped_dark_oak_log":1,
"stripped_oak_log":1,
"oak_wood":1,
"spruce_wood":1,
"birch_wood":1,
"jungle_wood":1,
"acacia_wood":1,
"dark_oak_wood":1,
"stripped_oak_wood":1,
"stripped_spruce_wood":1,
"stripped_birch_wood":1,
"stripped_jungle_wood":1,
"stripped_acacia_wood":1,
"stripped_dark_oak_wood":1,
"oak_leaves":1,
"spruce_leaves":1,
"birch_leaves":1,
"jungle_leaves":1,
"acacia_leaves":1,
"dark_oak_leaves":1,
"sponge":1,
"wet_sponge":1,
"glass":1,
"lapis_ore":1,
"lapis_block":1,
"dispenser":1,
"sandstone":1,
"chiseled_sandstone":1,
"cut_sandstone":1,
"note_block":1,
"white_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"orange_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"magenta_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"light_blue_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"yellow_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"lime_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"pink_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"gray_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"light_gray_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"cyan_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"purple_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"blue_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"brown_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"green_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"red_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"black_bed":[3,2,3,2,2,3,2,3,4,5,4,5,5,4,5,4],
"powered_rail":0,
"detector_rail":0,
"sticky_piston":[6,7,8,9,10,11,1,1,1,1,1,1],
"cobweb":0,
"grass":0,
"fern":0,
"dead_bush":0,
"seagrass":0,
"tall_seagrass":0,
"piston":[6,7,8,9,10,11,1,1,1,1,1,1],
"piston_head":[13,13,12,12,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23],
"white_wool":1,
"orange_wool":1,
"magenta_wool":1,
"light_blue_wool":1,
"yellow_wool":1,
"lime_wool":1,
"pink_wool":1,
"gray_wool":1,
"light_gray_wool":1,
"cyan_wool":1,
"purple_wool":1,
"blue_wool":1,
"brown_wool":1,
"green_wool":1,
"red_wool":1,
"black_wool":1,
"moving_piston":0,
"dandelion":0,
"poppy":0,
"blue_orchid":0,
"allium":0,
"azure_bluet":0,
"red_tulip":0,
"orange_tulip":0,
"white_tulip":0,
"pink_tulip":0,
"oxeye_daisy":0,
"cornflower":0,
"wither_rose":0,
"lily_of_the_valley":0,
"brown_mushroom":0,
"red_mushroom":0,
"gold_block":1,
"iron_block":1,
"bricks":1,
"tnt":1,
"bookshelf":1,
"mossy_cobblestone":1,
"obsidian":1,
"torch":0,
"wall_torch":0,
"fire":0,
"spawner":1,
"oak_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"chest":[48,48,49,49,50,50,48,48,50,50,49,49,48,48,51,51,52,52,48,48,52,52,51,51],
"redstone_wire":0,
"diamond_ore":1,
"diamond_block":1,
"crafting_table":1,
"wheat":0,
"farmland":53,
"furnace":1,
"oak_sign":0,
"spruce_sign":0,
"birch_sign":0,
"acacia_sign":0,
"jungle_sign":0,
"dark_oak_sign":0,
"oak_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"ladder":[54,54,57,57,56,56,55,55],
"rail":0,
"cobblestone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"oak_wall_sign":0,
"spruce_wall_sign":0,
"birch_wall_sign":0,
"acacia_wall_sign":0,
"jungle_wall_sign":0,
"dark_oak_wall_sign":0,
"lever":0,
"stone_pressure_plate":0,
"iron_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"oak_pressure_plate":0,
"spruce_pressure_plate":0,
"birch_pressure_plate":0,
"jungle_pressure_plate":0,
"acacia_pressure_plate":0,
"dark_oak_pressure_plate":0,
"redstone_ore":1,
"redstone_torch":0,
"redstone_wall_torch":0,
"stone_button":0,
"snow":[0,58,59,60,61,62,10,63],
"ice":1,
"snow_block":1,
"cactus":64,
"clay":1,
"sugar_cane":0,
"jukebox":1,
"oak_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"pumpkin":1,
"netherrack":1,
"soul_sand":63,
"glowstone":1,
"nether_portal":0,
"carved_pumpkin":1,
"jack_o_lantern":1,
"cake":[81,82,83,84,85,86,87],
"repeater":58,
"white_stained_glass":1,
"orange_stained_glass":1,
"magenta_stained_glass":1,
"light_blue_stained_glass":1,
"yellow_stained_glass":1,
"lime_stained_glass":1,
"pink_stained_glass":1,
"gray_stained_glass":1,
"light_gray_stained_glass":1,
"cyan_stained_glass":1,
"purple_stained_glass":1,
"blue_stained_glass":1,
"brown_stained_glass":1,
"green_stained_glass":1,
"red_stained_glass":1,
"black_stained_glass":1,
"oak_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"spruce_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"birch_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"jungle_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"acacia_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"dark_oak_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"stone_bricks":1,
"mossy_stone_bricks":1,
"cracked_stone_bricks":1,
"chiseled_stone_bricks":1,
"infested_stone":1,
"infested_cobblestone":1,
"infested_stone_bricks":1,
"infested_mossy_stone_bricks":1,
"infested_cracked_stone_bricks":1,
"infested_chiseled_stone_bricks":1,
"brown_mushroom_block":1,
"red_mushroom_block":1,
"mushroom_stem":1,
"iron_bars":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"melon":1,
"attached_pumpkin_stem":0,
"attached_melon_stem":0,
"pumpkin_stem":0,
"melon_stem":0,
"vine":0,
"oak_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"stone_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"mycelium":1,
"lily_pad":106,
"nether_bricks":1,
"nether_brick_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"nether_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"nether_wart":0,
"enchanting_table":10,
"brewing_stand":107,
"cauldron":108,
"end_portal":0,
"end_portal_frame":[110,110,110,110,109,109,109,109],
"end_stone":1,
"dragon_egg":111,
"redstone_lamp":1,
"cocoa":[112,113,114,115,116,117,118,119,120,121,122,123],
"sandstone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"emerald_ore":1,
"ender_chest":48,
"tripwire_hook":0,
"tripwire":0,
"emerald_block":1,
"spruce_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"birch_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"jungle_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"command_block":1,
"beacon":1,
"cobblestone_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"mossy_cobblestone_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"flower_pot":156,
"potted_oak_sapling":156,
"potted_spruce_sapling":156,
"potted_birch_sapling":156,
"potted_jungle_sapling":156,
"potted_acacia_sapling":156,
"potted_dark_oak_sapling":156,
"potted_fern":156,
"potted_dandelion":156,
"potted_poppy":156,
"potted_blue_orchid":156,
"potted_allium":156,
"potted_azure_bluet":156,
"potted_red_tulip":156,
"potted_orange_tulip":156,
"potted_white_tulip":156,
"potted_pink_tulip":156,
"potted_oxeye_daisy":156,
"potted_cornflower":156,
"potted_lily_of_the_valley":156,
"potted_wither_rose":156,
"potted_red_mushroom":156,
"potted_brown_mushroom":156,
"potted_dead_bush":156,
"potted_cactus":156,
"carrots":0,
"potatoes":0,
"oak_button":0,
"spruce_button":0,
"birch_button":0,
"jungle_button":0,
"acacia_button":0,
"dark_oak_button":0,
"skeleton_skull":157,
"skeleton_wall_skull":[158,159,160,161],
"wither_skeleton_skull":157,
"wither_skeleton_wall_skull":[158,159,160,161],
"zombie_head":157,
"zombie_wall_head":[158,159,160,161],
"player_head":157,
"player_wall_head":[158,159,160,161],
"creeper_head":157,
"creeper_wall_head":[158,159,160,161],
"dragon_head":157,
"dragon_wall_head":[158,159,160,161],
"anvil":[162,162,163,163],
"chipped_anvil":[162,162,163,163],
"damaged_anvil":[162,162,163,163],
"trapped_chest":[48,48,49,49,50,50,48,48,50,50,49,49,48,48,51,51,52,52,48,48,52,52,51,51],
"light_weighted_pressure_plate":0,
"heavy_weighted_pressure_plate":0,
"comparator":58,
"daylight_detector":60,
"redstone_block":1,
"nether_quartz_ore":1,
"hopper":[164,165,166,167,168,164,165,166,167,168],
"quartz_block":1,
"chiseled_quartz_block":1,
"quartz_pillar":1,
"quartz_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"activator_rail":0,
"dropper":1,
"white_terracotta":1,
"orange_terracotta":1,
"magenta_terracotta":1,
"light_blue_terracotta":1,
"yellow_terracotta":1,
"lime_terracotta":1,
"pink_terracotta":1,
"gray_terracotta":1,
"light_gray_terracotta":1,
"cyan_terracotta":1,
"purple_terracotta":1,
"blue_terracotta":1,
"brown_terracotta":1,
"green_terracotta":1,
"red_terracotta":1,
"black_terracotta":1,
"white_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"orange_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"magenta_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"light_blue_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"yellow_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"lime_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"pink_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"gray_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"light_gray_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"cyan_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"purple_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"blue_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"brown_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"green_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"red_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"black_stained_glass_pane":[91,92,91,92,93,94,93,94,95,96,95,96,97,98,97,98,99,100,99,100,101,102,101,102,103,104,103,104,105,90,105,90],
"acacia_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"dark_oak_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"slime_block":1,
"barrier":1,
"iron_trapdoor":[54,54,54,54,89,89,89,89,54,54,54,54,88,88,88,88,57,57,57,57,89,89,89,89,57,57,57,57,88,88,88,88,56,56,56,56,89,89,89,89,56,56,56,56,88,88,88,88,55,55,55,55,89,89,89,89,55,55,55,55,88,88,88,88],
"prismarine":1,
"prismarine_bricks":1,
"dark_prismarine":1,
"prismarine_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"prismarine_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"dark_prismarine_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"prismarine_slab":[169,169,61,61,1,1],
"prismarine_brick_slab":[169,169,61,61,1,1],
"dark_prismarine_slab":[169,169,61,61,1,1],
"sea_lantern":1,
"hay_block":1,
"white_carpet":170,
"orange_carpet":170,
"magenta_carpet":170,
"light_blue_carpet":170,
"yellow_carpet":170,
"lime_carpet":170,
"pink_carpet":170,
"gray_carpet":170,
"light_gray_carpet":170,
"cyan_carpet":170,
"purple_carpet":170,
"blue_carpet":170,
"brown_carpet":170,
"green_carpet":170,
"red_carpet":170,
"black_carpet":170,
"terracotta":1,
"coal_block":1,
"packed_ice":1,
"sunflower":0,
"lilac":0,
"rose_bush":0,
"peony":0,
"tall_grass":0,
"large_fern":0,
"white_banner":0,
"orange_banner":0,
"magenta_banner":0,
"light_blue_banner":0,
"yellow_banner":0,
"lime_banner":0,
"pink_banner":0,
"gray_banner":0,
"light_gray_banner":0,
"cyan_banner":0,
"purple_banner":0,
"blue_banner":0,
"brown_banner":0,
"green_banner":0,
"red_banner":0,
"black_banner":0,
"white_wall_banner":0,
"orange_wall_banner":0,
"magenta_wall_banner":0,
"light_blue_wall_banner":0,
"yellow_wall_banner":0,
"lime_wall_banner":0,
"pink_wall_banner":0,
"gray_wall_banner":0,
"light_gray_wall_banner":0,
"cyan_wall_banner":0,
"purple_wall_banner":0,
"blue_wall_banner":0,
"brown_wall_banner":0,
"green_wall_banner":0,
"red_wall_banner":0,
"black_wall_banner":0,
"red_sandstone":1,
"chiseled_red_sandstone":1,
"cut_red_sandstone":1,
"red_sandstone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"oak_slab":[169,169,61,61,1,1],
"spruce_slab":[169,169,61,61,1,1],
"birch_slab":[169,169,61,61,1,1],
"jungle_slab":[169,169,61,61,1,1],
"acacia_slab":[169,169,61,61,1,1],
"dark_oak_slab":[169,169,61,61,1,1],
"stone_slab":[169,169,61,61,1,1],
"smooth_stone_slab":[169,169,61,61,1,1],
"sandstone_slab":[169,169,61,61,1,1],
"cut_sandstone_slab":[169,169,61,61,1,1],
"petrified_oak_slab":[169,169,61,61,1,1],
"cobblestone_slab":[169,169,61,61,1,1],
"brick_slab":[169,169,61,61,1,1],
"stone_brick_slab":[169,169,61,61,1,1],
"nether_brick_slab":[169,169,61,61,1,1],
"quartz_slab":[169,169,61,61,1,1],
"red_sandstone_slab":[169,169,61,61,1,1],
"cut_red_sandstone_slab":[169,169,61,61,1,1],
"purpur_slab":[169,169,61,61,1,1],
"smooth_stone":1,
"smooth_sandstone":1,
"smooth_quartz":1,
"smooth_red_sandstone":1,
"spruce_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"birch_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"jungle_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"acacia_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"dark_oak_fence_gate":[0,0,72,72,0,0,72,72,0,0,72,72,0,0,72,72,0,0,75,75,0,0,75,75,0,0,75,75,0,0,75,75],
"spruce_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"birch_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"jungle_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"acacia_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"dark_oak_fence":[66,67,66,67,68,69,68,69,70,71,70,71,72,73,72,73,74,75,74,75,76,77,76,77,78,79,78,79,80,65,80,65],
"spruce_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"birch_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"jungle_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"acacia_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"dark_oak_door":[55,55,54,54,56,56,54,54,55,55,54,54,56,56,54,54,56,56,57,57,55,55,57,57,56,56,57,57,55,55,57,57,54,54,56,56,57,57,56,56,54,54,56,56,57,57,56,56,57,57,55,55,54,54,55,55,57,57,55,55,54,54,55,55],
"end_rod":[172,173,172,173,171,171],
"chorus_plant":[175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,174],
"chorus_flower":1,
"purpur_block":1,
"purpur_pillar":1,
"purpur_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"end_stone_bricks":1,
"beetroots":0,
"grass_path":53,
"end_gateway":0,
"repeating_command_block":1,
"chain_command_block":1,
"frosted_ice":1,
"magma_block":1,
"nether_wart_block":1,
"red_nether_bricks":1,
"bone_block":1,
"structure_void":0,
"observer":1,
"shulker_box":1,
"white_shulker_box":1,
"orange_shulker_box":1,
"magenta_shulker_box":1,
"light_blue_shulker_box":1,
"yellow_shulker_box":1,
"lime_shulker_box":1,
"pink_shulker_box":1,
"gray_shulker_box":1,
"light_gray_shulker_box":1,
"cyan_shulker_box":1,
"purple_shulker_box":1,
"blue_shulker_box":1,
"brown_shulker_box":1,
"green_shulker_box":1,
"red_shulker_box":1,
"black_shulker_box":1,
"white_glazed_terracotta":1,
"orange_glazed_terracotta":1,
"magenta_glazed_terracotta":1,
"light_blue_glazed_terracotta":1,
"yellow_glazed_terracotta":1,
"lime_glazed_terracotta":1,
"pink_glazed_terracotta":1,
"gray_glazed_terracotta":1,
"light_gray_glazed_terracotta":1,
"cyan_glazed_terracotta":1,
"purple_glazed_terracotta":1,
"blue_glazed_terracotta":1,
"brown_glazed_terracotta":1,
"green_glazed_terracotta":1,
"red_glazed_terracotta":1,
"black_glazed_terracotta":1,
"white_concrete":1,
"orange_concrete":1,
"magenta_concrete":1,
"light_blue_concrete":1,
"yellow_concrete":1,
"lime_concrete":1,
"pink_concrete":1,
"gray_concrete":1,
"light_gray_concrete":1,
"cyan_concrete":1,
"purple_concrete":1,
"blue_concrete":1,
"brown_concrete":1,
"green_concrete":1,
"red_concrete":1,
"black_concrete":1,
"white_concrete_powder":1,
"orange_concrete_powder":1,
"magenta_concrete_powder":1,
"light_blue_concrete_powder":1,
"yellow_concrete_powder":1,
"lime_concrete_powder":1,
"pink_concrete_powder":1,
"gray_concrete_powder":1,
"light_gray_concrete_powder":1,
"cyan_concrete_powder":1,
"purple_concrete_powder":1,
"blue_concrete_powder":1,
"brown_concrete_powder":1,
"green_concrete_powder":1,
"red_concrete_powder":1,
"black_concrete_powder":1,
"kelp":0,
"kelp_plant":0,
"dried_kelp_block":1,
"turtle_egg":[238,238,238,239,239,239,239,239,239,239,239,239],
"dead_tube_coral_block":1,
"dead_brain_coral_block":1,
"dead_bubble_coral_block":1,
"dead_fire_coral_block":1,
"dead_horn_coral_block":1,
"tube_coral_block":1,
"brain_coral_block":1,
"bubble_coral_block":1,
"fire_coral_block":1,
"horn_coral_block":1,
"dead_tube_coral":0,
"dead_brain_coral":0,
"dead_bubble_coral":0,
"dead_fire_coral":0,
"dead_horn_coral":0,
"tube_coral":0,
"brain_coral":0,
"bubble_coral":0,
"fire_coral":0,
"horn_coral":0,
"dead_tube_coral_fan":0,
"dead_brain_coral_fan":0,
"dead_bubble_coral_fan":0,
"dead_fire_coral_fan":0,
"dead_horn_coral_fan":0,
"tube_coral_fan":0,
"brain_coral_fan":0,
"bubble_coral_fan":0,
"fire_coral_fan":0,
"horn_coral_fan":0,
"dead_tube_coral_wall_fan":0,
"dead_brain_coral_wall_fan":0,
"dead_bubble_coral_wall_fan":0,
"dead_fire_coral_wall_fan":0,
"dead_horn_coral_wall_fan":0,
"tube_coral_wall_fan":0,
"brain_coral_wall_fan":0,
"bubble_coral_wall_fan":0,
"fire_coral_wall_fan":0,
"horn_coral_wall_fan":0,
"sea_pickle":[240,240,241,241,242,242,243,243],
"blue_ice":1,
"conduit":244,
"bamboo_sapling":0,
"bamboo":245,
"potted_bamboo":156,
"void_air":0,
"cave_air":0,
"bubble_column":0,
"polished_granite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"smooth_red_sandstone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"mossy_stone_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"polished_diorite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"mossy_cobblestone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"end_stone_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"stone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"smooth_sandstone_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"smooth_quartz_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"granite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"andesite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"red_nether_brick_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"polished_andesite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"diorite_stairs":[25,25,26,26,27,27,28,28,29,29,24,24,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,36,36,26,26,38,38,28,28,45,45,41,41,30,30,43,43,32,32,46,46,27,27,35,35,29,29,37,37,47,47,31,31,40,40,33,33,42,42],
"polished_granite_slab":[169,169,61,61,1,1],
"smooth_red_sandstone_slab":[169,169,61,61,1,1],
"mossy_stone_brick_slab":[169,169,61,61,1,1],
"polished_diorite_slab":[169,169,61,61,1,1],
"mossy_cobblestone_slab":[169,169,61,61,1,1],
"end_stone_brick_slab":[169,169,61,61,1,1],
"smooth_sandstone_slab":[169,169,61,61,1,1],
"smooth_quartz_slab":[169,169,61,61,1,1],
"granite_slab":[169,169,61,61,1,1],
"andesite_slab":[169,169,61,61,1,1],
"red_nether_brick_slab":[169,169,61,61,1,1],
"polished_andesite_slab":[169,169,61,61,1,1],
"diorite_slab":[169,169,61,61,1,1],
"brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"prismarine_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"red_sandstone_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"mossy_stone_brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"granite_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"stone_brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"nether_brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"andesite_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"red_nether_brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"sandstone_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"end_stone_brick_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"diorite_wall":[125,126,125,126,127,128,127,128,129,130,129,130,131,132,131,132,133,134,133,134,135,136,135,136,137,138,137,138,139,140,139,140,141,142,141,142,143,144,143,144,145,146,145,146,147,148,147,148,149,150,149,150,151,152,151,152,153,124,153,124,154,155,154,155],
"scaffolding":246,
"loom":1,
"barrel":1,
"smoker":1,
"blast_furnace":1,
"cartography_table":1,
"fletching_table":1,
"grindstone":[248,248,249,249,247,250,251,252,253,253,254,254],
"lectern":255,
"smithing_table":1,
"stonecutter":256,
"bell":[257,257,258,258,259,259,259,259,260,261,262,263,264,264,265,265],
"lantern":[267,266],
"campfire":268,
"sweet_berry_bush":0,
"structure_block":1,
"jigsaw":1,
"composter":269},
"shapes":{"0":[],
"1":[[0.0,0.0,0.0,1.0,1.0,1.0]],
"2":[[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.0,0.1875,0.0,1.0,0.5625,0.8125],[0.1875,0.1875,0.8125,1.0,0.5625,1.0],[0.8125,0.0,0.8125,1.0,0.1875,1.0]],
"3":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.0,0.1875,0.1875,1.0,0.5625,1.0],[0.1875,0.1875,0.0,1.0,0.5625,0.1875],[0.8125,0.0,0.0,1.0,0.1875,0.1875]],
"4":[[0.0,0.0,0.0,0.1875,0.5625,0.1875],[0.0,0.0,0.8125,0.1875,0.5625,1.0],[0.0,0.1875,0.1875,1.0,0.5625,0.8125],[0.1875,0.1875,0.0,1.0,0.5625,0.1875],[0.1875,0.1875,0.8125,1.0,0.5625,1.0]],
"5":[[0.0,0.1875,0.0,1.0,0.5625,1.0],[0.8125,0.0,0.0,1.0,0.1875,0.1875],[0.8125,0.0,0.8125,1.0,0.1875,1.0]],
"6":[[0.0,0.0,0.25,1.0,1.0,1.0]],
"7":[[0.0,0.0,0.0,0.75,1.0,1.0]],
"8":[[0.0,0.0,0.0,1.0,1.0,0.75]],
"9":[[0.25,0.0,0.0,1.0,1.0,1.0]],
"10":[[0.0,0.0,0.0,1.0,0.75,1.0]],
"11":[[0.0,0.25,0.0,1.0,1.0,1.0]],
"12":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.25]],
"13":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.0]],
"14":[[0.0,0.375,0.375,1.0,0.625,0.625],[0.75,0.0,0.0,1.0,0.375,1.0],[0.75,0.375,0.0,1.0,1.0,0.375],[0.75,0.375,0.625,1.0,1.0,1.0],[0.75,0.625,0.375,1.0,1.0,0.625]],
"15":[[-0.25,0.375,0.375,1.0,0.625,0.625],[0.75,0.0,0.0,1.0,0.375,1.0],[0.75,0.375,0.0,1.0,1.0,0.375],[0.75,0.375,0.625,1.0,1.0,1.0],[0.75,0.625,0.375,1.0,1.0,0.625]],
"16":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,0.0,0.625,0.625,0.75]],
"17":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,-0.25,0.625,0.625,0.75]],
"18":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.0,0.625,0.625]],
"19":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.25,0.625,0.625]],
"20":[[0.0,0.75,0.0,1.0,1.0,1.0],[0.375,0.0,0.375,0.625,0.75,0.625]],
"21":[[0.0,0.75,0.0,1.0,1.0,1.0],[0.375,-0.25,0.375,0.625,0.75,0.625]],
"22":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.0,0.625]],
"23":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.25,0.625]],
"24":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],
"25":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0]],
"26":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],
"27":[[0.0,0.0,0.0,1.0,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.0,0.5,1.0,0.5,1.0]],
"28":[[0.0,0.0,0.0,0.5,1.0,0.5],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],
"29":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,0.5,0.5]],
"30":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],
"31":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],
"32":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,0.5]],
"33":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],
"34":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],
"35":[[0.0,0.0,0.5,1.0,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.0,0.0,1.0,0.5,0.5]],
"36":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.0,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],
"37":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.5,0.0,0.5,1.0,0.5,1.0]],
"38":[[0.0,0.0,0.5,0.5,1.0,1.0],[0.0,0.5,0.0,1.0,1.0,0.5],[0.5,0.5,0.5,1.0,1.0,1.0]],
"39":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0]],
"40":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,0.5]],
"41":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],
"42":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.5,1.0,1.0,1.0]],
"43":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,0.5,1.0,1.0]],
"44":[[0.0,0.0,0.0,0.5,1.0,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],
"45":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],
"46":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,0.5,1.0]],
"47":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],
"48":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],
"49":[[0.0625,0.0,0.0625,1.0,0.875,0.9375]],
"50":[[0.0,0.0,0.0625,0.9375,0.875,0.9375]],
"51":[[0.0625,0.0,0.0,0.9375,0.875,0.9375]],
"52":[[0.0625,0.0,0.0625,0.9375,0.875,1.0]],
"53":[[0.0,0.0,0.0,1.0,0.9375,1.0]],
"54":[[0.0,0.0,0.8125,1.0,1.0,1.0]],
"55":[[0.0,0.0,0.0,0.1875,1.0,1.0]],
"56":[[0.8125,0.0,0.0,1.0,1.0,1.0]],
"57":[[0.0,0.0,0.0,1.0,1.0,0.1875]],
"58":[[0.0,0.0,0.0,1.0,0.125,1.0]],
"59":[[0.0,0.0,0.0,1.0,0.25,1.0]],
"60":[[0.0,0.0,0.0,1.0,0.375,1.0]],
"61":[[0.0,0.0,0.0,1.0,0.5,1.0]],
"62":[[0.0,0.0,0.0,1.0,0.625,1.0]],
"63":[[0.0,0.0,0.0,1.0,0.875,1.0]],
"64":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],
"65":[[0.375,0.0,0.375,0.625,1.5,0.625]],
"66":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],
"67":[[0.375,0.0,0.0,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],
"68":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],
"69":[[0.375,0.0,0.0,0.625,1.5,0.625],[0.625,0.0,0.375,1.0,1.5,0.625]],
"70":[[0.0,0.0,0.375,1.0,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],
"71":[[0.375,0.0,0.375,0.625,1.5,1.0],[0.625,0.0,0.375,1.0,1.5,0.625]],
"72":[[0.0,0.0,0.375,1.0,1.5,0.625]],
"73":[[0.375,0.0,0.375,1.0,1.5,0.625]],
"74":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375],[0.375,0.0,0.625,0.625,1.5,1.0]],
"75":[[0.375,0.0,0.0,0.625,1.5,1.0]],
"76":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.0,0.625,1.5,0.375]],
"77":[[0.375,0.0,0.0,0.625,1.5,0.625]],
"78":[[0.0,0.0,0.375,0.625,1.5,0.625],[0.375,0.0,0.625,0.625,1.5,1.0]],
"79":[[0.375,0.0,0.375,0.625,1.5,1.0]],
"80":[[0.0,0.0,0.375,0.625,1.5,0.625]],
"81":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375]],
"82":[[0.1875,0.0,0.0625,0.9375,0.5,0.9375]],
"83":[[0.3125,0.0,0.0625,0.9375,0.5,0.9375]],
"84":[[0.4375,0.0,0.0625,0.9375,0.5,0.9375]],
"85":[[0.5625,0.0,0.0625,0.9375,0.5,0.9375]],
"86":[[0.6875,0.0,0.0625,0.9375,0.5,0.9375]],
"87":[[0.8125,0.0,0.0625,0.9375,0.5,0.9375]],
"88":[[0.0,0.0,0.0,1.0,0.1875,1.0]],
"89":[[0.0,0.8125,0.0,1.0,1.0,1.0]],
"90":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],
"91":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],
"92":[[0.4375,0.0,0.0,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],
"93":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],
"94":[[0.4375,0.0,0.0,0.5625,1.0,0.5625],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],
"95":[[0.0,0.0,0.4375,1.0,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],
"96":[[0.4375,0.0,0.4375,0.5625,1.0,1.0],[0.5625,0.0,0.4375,1.0,1.0,0.5625]],
"97":[[0.0,0.0,0.4375,1.0,1.0,0.5625]],
"98":[[0.4375,0.0,0.4375,1.0,1.0,0.5625]],
"99":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],
"100":[[0.4375,0.0,0.0,0.5625,1.0,1.0]],
"101":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.0,0.5625,1.0,0.4375]],
"102":[[0.4375,0.0,0.0,0.5625,1.0,0.5625]],
"103":[[0.0,0.0,0.4375,0.5625,1.0,0.5625],[0.4375,0.0,0.5625,0.5625,1.0,1.0]],
"104":[[0.4375,0.0,0.4375,0.5625,1.0,1.0]],
"105":[[0.0,0.0,0.4375,0.5625,1.0,0.5625]],
"106":[[0.0625,0.0,0.0625,0.9375,0.09375,0.9375]],
"107":[[0.0625,0.0,0.0625,0.9375,0.125,0.9375],[0.4375,0.125,0.4375,0.5625,0.875,0.5625]],
"108":[[0.0,0.0,0.0,0.125,1.0,0.25],[0.0,0.0,0.75,0.125,1.0,1.0],[0.0,0.1875,0.25,1.0,0.25,0.75],[0.0,0.25,0.25,0.125,1.0,0.75],[0.125,0.0,0.0,0.25,1.0,0.125],[0.125,0.0,0.875,0.25,1.0,1.0],[0.125,0.1875,0.125,1.0,0.25,0.25],[0.125,0.1875,0.75,1.0,0.25,0.875],[0.25,0.1875,0.0,1.0,1.0,0.125],[0.25,0.1875,0.875,1.0,1.0,1.0],[0.75,0.0,0.0,1.0,0.1875,0.125],[0.75,0.0,0.875,1.0,0.1875,1.0],[0.875,0.0,0.125,1.0,0.1875,0.25],[0.875,0.0,0.75,1.0,0.1875,0.875],[0.875,0.25,0.125,1.0,1.0,0.875]],
"109":[[0.0,0.0,0.0,1.0,0.8125,1.0]],
"110":[[0.0,0.0,0.0,1.0,0.8125,1.0],[0.25,0.8125,0.25,0.75,1.0,0.75]],
"111":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],
"112":[[0.375,0.4375,0.0625,0.625,0.75,0.3125]],
"113":[[0.375,0.4375,0.6875,0.625,0.75,0.9375]],
"114":[[0.0625,0.4375,0.375,0.3125,0.75,0.625]],
"115":[[0.6875,0.4375,0.375,0.9375,0.75,0.625]],
"116":[[0.3125,0.3125,0.0625,0.6875,0.75,0.4375]],
"117":[[0.3125,0.3125,0.5625,0.6875,0.75,0.9375]],
"118":[[0.0625,0.3125,0.3125,0.4375,0.75,0.6875]],
"119":[[0.5625,0.3125,0.3125,0.9375,0.75,0.6875]],
"120":[[0.25,0.1875,0.0625,0.75,0.75,0.5625]],
"121":[[0.25,0.1875,0.4375,0.75,0.75,0.9375]],
"122":[[0.0625,0.1875,0.25,0.5625,0.75,0.75]],
"123":[[0.4375,0.1875,0.25,0.9375,0.75,0.75]],
"124":[[0.25,0.0,0.25,0.75,1.5,0.75]],
"125":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"126":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],
"127":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],
"128":[[0.3125,0.0,0.0,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],
"129":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],
"130":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.75,0.0,0.3125,1.0,1.5,0.6875]],
"131":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],
"132":[[0.3125,0.0,0.0,0.6875,1.5,0.6875],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],
"133":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"134":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0],[0.75,0.0,0.3125,1.0,1.5,0.6875]],
"135":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],
"136":[[0.3125,0.0,0.3125,0.6875,1.5,1.0],[0.6875,0.0,0.3125,1.0,1.5,0.6875]],
"137":[[0.0,0.0,0.3125,1.0,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],
"138":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.75,0.0,0.3125,1.0,1.5,0.6875]],
"139":[[0.0,0.0,0.3125,1.0,1.5,0.6875]],
"140":[[0.3125,0.0,0.3125,1.0,1.5,0.6875]],
"141":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"142":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"143":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],
"144":[[0.3125,0.0,0.0,0.6875,1.5,1.0]],
"145":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],
"146":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.0,0.6875,1.5,0.25]],
"147":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.0,0.6875,1.5,0.3125]],
"148":[[0.3125,0.0,0.0,0.6875,1.5,0.6875]],
"149":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"150":[[0.25,0.0,0.25,0.75,1.5,0.75],[0.3125,0.0,0.75,0.6875,1.5,1.0]],
"151":[[0.0,0.0,0.3125,0.6875,1.5,0.6875],[0.3125,0.0,0.6875,0.6875,1.5,1.0]],
"152":[[0.3125,0.0,0.3125,0.6875,1.5,1.0]],
"153":[[0.0,0.0,0.3125,0.75,1.5,0.6875],[0.25,0.0,0.25,0.75,1.5,0.3125],[0.25,0.0,0.6875,0.75,1.5,0.75]],
"154":[[0.0,0.0,0.3125,0.6875,1.5,0.6875]],
"155":[[0.5,0.0,0.5,0.5,1.5,0.5]],
"156":[[0.3125,0.0,0.3125,0.6875,0.375,0.6875]],
"157":[[0.25,0.0,0.25,0.75,0.5,0.75]],
"158":[[0.25,0.25,0.5,0.75,0.75,1.0]],
"159":[[0.25,0.25,0.0,0.75,0.75,0.5]],
"160":[[0.5,0.25,0.25,1.0,0.75,0.75]],
"161":[[0.0,0.25,0.25,0.5,0.75,0.75]],
"162":[[0.125,0.0,0.125,0.875,0.25,0.875],[0.1875,0.625,0.0,0.8125,1.0,1.0],[0.25,0.25,0.1875,0.75,0.3125,0.8125],[0.375,0.3125,0.25,0.625,0.625,0.75]],
"163":[[0.0,0.625,0.1875,1.0,1.0,0.8125],[0.125,0.0,0.125,0.875,0.25,0.875],[0.1875,0.25,0.25,0.8125,0.3125,0.75],[0.25,0.3125,0.375,0.75,0.625,0.625]],
"164":[[0.0,0.625,0.0,1.0,0.6875,1.0],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.25,0.25,0.25,0.75,0.625,0.75],[0.375,0.0,0.375,0.625,0.25,0.625],[0.875,0.6875,0.125,1.0,1.0,0.875]],
"165":[[0.0,0.625,0.0,1.0,0.6875,1.0],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.25,0.25,0.25,0.75,0.625,0.75],[0.375,0.25,0.0,0.625,0.5,0.25],[0.875,0.6875,0.125,1.0,1.0,0.875]],
"166":[[0.0,0.625,0.0,1.0,0.6875,1.0],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.25,0.25,0.25,0.75,0.625,0.75],[0.375,0.25,0.75,0.625,0.5,1.0],[0.875,0.6875,0.125,1.0,1.0,0.875]],
"167":[[0.0,0.25,0.375,0.75,0.5,0.625],[0.0,0.625,0.0,1.0,0.6875,1.0],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.25,0.25,0.25,0.75,0.625,0.375],[0.25,0.25,0.625,0.75,0.625,0.75],[0.25,0.5,0.375,0.75,0.625,0.625],[0.875,0.6875,0.125,1.0,1.0,0.875]],
"168":[[0.0,0.625,0.0,1.0,0.6875,1.0],[0.0,0.6875,0.0,0.125,1.0,1.0],[0.125,0.6875,0.0,1.0,1.0,0.125],[0.125,0.6875,0.875,1.0,1.0,1.0],[0.25,0.25,0.25,0.75,0.625,0.75],[0.75,0.25,0.375,1.0,0.5,0.625],[0.875,0.6875,0.125,1.0,1.0,0.875]],
"169":[[0.0,0.5,0.0,1.0,1.0,1.0]],
"170":[[0.0,0.0,0.0,1.0,0.0625,1.0]],
"171":[[0.375,0.0,0.375,0.625,1.0,0.625]],
"172":[[0.375,0.375,0.0,0.625,0.625,1.0]],
"173":[[0.0,0.375,0.375,1.0,0.625,0.625]],
"174":[[0.1875,0.1875,0.1875,0.8125,0.8125,0.8125]],
"175":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"176":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"177":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"178":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"179":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"180":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"181":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"182":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"183":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"184":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"185":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"186":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"187":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"188":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"189":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125]],
"190":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"191":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"192":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"193":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"194":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"195":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"196":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"197":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"198":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"199":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"200":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"201":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"202":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"203":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"204":[[0.1875,0.0,0.1875,0.8125,1.0,0.8125]],
"205":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.0,0.1875,0.8125,0.1875,0.8125]],
"206":[[0.1875,0.0,0.1875,0.8125,0.8125,0.8125]],
"207":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"208":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"209":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"210":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"211":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"212":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"213":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"214":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"215":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"216":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"217":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"218":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.8125,0.1875,0.1875,1.0,0.8125,0.8125]],
"219":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"220":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"221":[[0.0,0.1875,0.1875,1.0,0.8125,0.8125]],
"222":[[0.1875,0.1875,0.1875,1.0,0.8125,0.8125]],
"223":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"224":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"225":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"226":[[0.1875,0.1875,0.0,0.8125,0.8125,1.0]],
"227":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"228":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"229":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.0,0.8125,0.8125,0.1875]],
"230":[[0.1875,0.1875,0.0,0.8125,0.8125,0.8125]],
"231":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"232":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"233":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.1875,0.8125,0.8125,0.8125,1.0]],
"234":[[0.1875,0.1875,0.1875,0.8125,0.8125,1.0]],
"235":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125],[0.1875,0.8125,0.1875,0.8125,1.0,0.8125]],
"236":[[0.1875,0.1875,0.1875,0.8125,1.0,0.8125]],
"237":[[0.0,0.1875,0.1875,0.8125,0.8125,0.8125]],
"238":[[0.1875,0.0,0.1875,0.75,0.4375,0.75]],
"239":[[0.0625,0.0,0.0625,0.9375,0.4375,0.9375]],
"240":[[0.375,0.0,0.375,0.625,0.375,0.625]],
"241":[[0.1875,0.0,0.1875,0.8125,0.375,0.8125]],
"242":[[0.125,0.0,0.125,0.875,0.375,0.875]],
"243":[[0.125,0.0,0.125,0.875,0.4375,0.875]],
"244":[[0.3125,0.3125,0.3125,0.6875,0.6875,0.6875]],
"245":[[0.15625,0.0,0.15625,0.34375,1.0,0.34375]],
"246":[[0.0,0.0,0.0,0.125,1.0,0.125],[0.0,0.0,0.875,0.125,1.0,1.0],[0.0,0.875,0.125,1.0,1.0,0.875],[0.125,0.875,0.0,1.0,1.0,0.125],[0.125,0.875,0.875,1.0,1.0,1.0],[0.875,0.0,0.0,1.0,0.875,0.125],[0.875,0.0,0.875,1.0,0.875,1.0]],
"247":[[0.125,0.3125,0.1875,0.875,0.6875,0.5625],[0.125,0.375,0.5625,0.25,0.625,1.0],[0.25,0.125,0.0,0.75,0.3125,0.75],[0.25,0.3125,0.0,0.75,0.875,0.1875],[0.25,0.3125,0.5625,0.75,0.875,0.75],[0.25,0.6875,0.1875,0.75,0.875,0.5625],[0.75,0.375,0.5625,0.875,0.625,1.0]],
"248":[[0.125,0.0,0.375,0.25,0.8125,0.625],[0.125,0.4375,0.3125,0.875,0.8125,0.375],[0.125,0.4375,0.625,0.875,0.8125,0.6875],[0.25,0.25,0.125,0.75,0.4375,0.875],[0.25,0.4375,0.125,0.75,1.0,0.3125],[0.25,0.4375,0.375,0.875,0.8125,0.625],[0.25,0.4375,0.6875,0.75,1.0,0.875],[0.25,0.8125,0.3125,0.75,1.0,0.6875],[0.75,0.0,0.375,0.875,0.4375,0.625]],
"249":[[0.125,0.25,0.25,0.875,1.0,0.75],[0.3125,0.4375,0.125,0.6875,0.8125,0.25],[0.3125,0.4375,0.75,0.6875,0.8125,0.875],[0.375,0.0,0.125,0.625,0.4375,0.25],[0.375,0.0,0.75,0.625,0.4375,0.875]],
"250":[[0.125,0.3125,0.4375,0.875,0.6875,0.8125],[0.125,0.375,0.0,0.25,0.625,0.4375],[0.25,0.125,0.25,0.75,0.3125,1.0],[0.25,0.3125,0.25,0.75,0.875,0.4375],[0.25,0.3125,0.8125,0.75,0.875,1.0],[0.25,0.6875,0.4375,0.75,0.875,0.8125],[0.75,0.375,0.0,0.875,0.625,0.4375]],
"251":[[0.0,0.125,0.25,0.75,0.875,0.75],[0.1875,0.3125,0.125,0.5625,0.6875,0.25],[0.1875,0.3125,0.75,0.5625,0.6875,0.875],[0.5625,0.375,0.125,1.0,0.625,0.25],[0.5625,0.375,0.75,1.0,0.625,0.875]],
"252":[[0.0,0.375,0.125,0.8125,0.625,0.25],[0.0,0.375,0.75,0.8125,0.625,0.875],[0.25,0.125,0.25,1.0,0.875,0.75],[0.4375,0.3125,0.125,0.8125,0.375,0.25],[0.4375,0.3125,0.75,0.8125,0.375,0.875],[0.4375,0.625,0.125,0.8125,0.6875,0.25],[0.4375,0.625,0.75,0.8125,0.6875,0.875]],
"253":[[0.125,0.1875,0.3125,0.875,0.5625,0.6875],[0.125,0.5625,0.375,0.875,0.75,0.625],[0.125,0.75,0.375,0.25,1.0,0.625],[0.25,0.0,0.125,0.75,0.1875,0.875],[0.25,0.1875,0.125,0.75,0.75,0.3125],[0.25,0.1875,0.6875,0.75,0.75,0.875],[0.25,0.5625,0.3125,0.75,0.75,0.375],[0.25,0.5625,0.625,0.75,0.75,0.6875],[0.75,0.75,0.375,0.875,1.0,0.625]],
"254":[[0.125,0.0,0.25,0.875,0.75,0.75],[0.3125,0.1875,0.125,0.6875,0.5625,0.25],[0.3125,0.1875,0.75,0.6875,0.5625,0.875],[0.375,0.5625,0.125,0.625,1.0,0.25],[0.375,0.5625,0.75,0.625,1.0,0.875]],
"255":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.25,0.125,0.25,0.75,0.875,0.75]],
"256":[[0.0,0.0,0.0,1.0,0.5625,1.0]],
"257":[[0.0,0.0,0.25,1.0,1.0,0.75]],
"258":[[0.25,0.0,0.0,0.75,1.0,1.0]],
"259":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.4375,0.5625,1.0,0.5625]],
"260":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,0.8125]],
"261":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.1875,0.5625,0.9375,1.0]],
"262":[[0.0,0.8125,0.4375,0.8125,0.9375,0.5625],[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875]],
"263":[[0.1875,0.8125,0.4375,1.0,0.9375,0.5625],[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875]],
"264":[[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875],[0.4375,0.8125,0.0,0.5625,0.9375,1.0]],
"265":[[0.0,0.8125,0.4375,1.0,0.9375,0.5625],[0.25,0.25,0.25,0.75,0.375,0.75],[0.3125,0.375,0.3125,0.6875,0.8125,0.6875]],
"266":[[0.3125,0.0,0.3125,0.6875,0.4375,0.6875],[0.375,0.4375,0.375,0.625,0.5625,0.625]],
"267":[[0.3125,0.0625,0.3125,0.6875,0.5,0.6875],[0.375,0.5,0.375,0.625,0.625,0.625]],
"268":[[0.0,0.0,0.0,1.0,0.4375,1.0]],
"269":[[0.0,0.0,0.0,1.0,0.125,1.0],[0.0,0.125,0.0,0.125,1.0,1.0],[0.125,0.125,0.0,1.0,1.0,0.125],[0.125,0.125,0.875,1.0,1.0,1.0],[0.875,0.125,0.125,1.0,1.0,0.875]]}}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,200 @@
[
{
"id": 1,
"name": "Speed",
"displayName": "Speed",
"type": "good"
},
{
"id": 2,
"name": "Slowness",
"displayName": "Slowness",
"type": "bad"
},
{
"id": 3,
"name": "Haste",
"displayName": "Haste",
"type": "good"
},
{
"id": 4,
"name": "MiningFatigue",
"displayName": "Mining Fatigue",
"type": "bad"
},
{
"id": 5,
"name": "Strength",
"displayName": "Strength",
"type": "good"
},
{
"id": 6,
"name": "InstantHealth",
"displayName": "Instant Health",
"type": "good"
},
{
"id": 7,
"name": "InstantDamage",
"displayName": "Instant Damage",
"type": "bad"
},
{
"id": 8,
"name": "JumpBoost",
"displayName": "Jump Boost",
"type": "good"
},
{
"id": 9,
"name": "Nausea",
"displayName": "Nausea",
"type": "bad"
},
{
"id": 10,
"name": "Regeneration",
"displayName": "Regeneration",
"type": "good"
},
{
"id": 11,
"name": "Resistance",
"displayName": "Resistance",
"type": "good"
},
{
"id": 12,
"name": "FireResistance",
"displayName": "Fire Resistance",
"type": "good"
},
{
"id": 13,
"name": "WaterBreathing",
"displayName": "Water Breathing",
"type": "good"
},
{
"id": 14,
"name": "Invisibility",
"displayName": "Invisibility",
"type": "good"
},
{
"id": 15,
"name": "Blindness",
"displayName": "Blindness",
"type": "bad"
},
{
"id": 16,
"name": "NightVision",
"displayName": "Night Vision",
"type": "good"
},
{
"id": 17,
"name": "Hunger",
"displayName": "Hunger",
"type": "bad"
},
{
"id": 18,
"name": "Weakness",
"displayName": "Weakness",
"type": "bad"
},
{
"id": 19,
"name": "Poison",
"displayName": "Poison",
"type": "bad"
},
{
"id": 20,
"name": "Wither",
"displayName": "Wither",
"type": "bad"
},
{
"id": 21,
"name": "HealthBoost",
"displayName": "Health Boost",
"type": "good"
},
{
"id": 22,
"name": "Absorption",
"displayName": "Absorption",
"type": "good"
},
{
"id": 23,
"name": "Saturation",
"displayName": "Saturation",
"type": "good"
},
{
"id": 24,
"name": "Glowing",
"displayName": "Glowing",
"type": "bad"
},
{
"id": 25,
"name": "Levitation",
"displayName": "Levitation",
"type": "bad"
},
{
"id": 26,
"name": "Luck",
"displayName": "Luck",
"type": "good"
},
{
"id": 27,
"name": "BadLuck",
"displayName": "Bad Luck",
"type": "bad"
},
{
"id": 28,
"name": "SlowFalling",
"displayName": "Slow Falling",
"type": "good"
},
{
"id": 29,
"name": "ConduitPower",
"displayName": "Conduit Power",
"type": "good"
},
{
"id": 30,
"name": "DolphinsGrace",
"displayName": "Dolphin's Grace",
"type": "good"
},
{
"id": 31,
"name": "DolphinsGrace",
"displayName": "Dolphin's Grace",
"type": "good"
},
{
"id": 32,
"name": "BadOmen",
"displayName": "Bad Omen",
"type": "good"
},
{
"id": 32,
"name": "HeroOfTheVillage",
"displayName": "Hero Of The Village",
"type": "good"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+392
View File
@@ -0,0 +1,392 @@
[
{
"id": 524,
"displayName": "Apple",
"name": "apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 2.4,
"effectiveQuality": 6.4,
"saturationRatio": 0.6
},
{
"id": 547,
"displayName": "Mushroom Stew",
"name": "mushroom_stew",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 562,
"displayName": "Bread",
"name": "bread",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 584,
"displayName": "Raw Porkchop",
"name": "porkchop",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 585,
"displayName": "Cooked Porkchop",
"name": "cooked_porkchop",
"stackSize": 64,
"foodPoints": 8,
"saturation": 12.8,
"effectiveQuality": 20.8,
"saturationRatio": 1.6
},
{
"id": 587,
"displayName": "Golden Apple",
"name": "golden_apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 9.6,
"effectiveQuality": 13.6,
"saturationRatio": 2.4
},
{
"id": 588,
"displayName": "Enchanted Golden Apple",
"name": "enchanted_golden_apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 9.6,
"effectiveQuality": 13.6,
"saturationRatio": 2.4
},
{
"id": 625,
"displayName": "Raw Cod",
"name": "cod",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 626,
"displayName": "Raw Salmon",
"name": "salmon",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 627,
"displayName": "Tropical Fish",
"name": "tropical_fish",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.2,
"effectiveQuality": 1.2,
"saturationRatio": 0.2
},
{
"id": 628,
"displayName": "Pufferfish",
"name": "pufferfish",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.2,
"effectiveQuality": 1.2,
"saturationRatio": 0.2
},
{
"id": 629,
"displayName": "Cooked Cod",
"name": "cooked_cod",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 630,
"displayName": "Cooked Salmon",
"name": "cooked_salmon",
"stackSize": 64,
"foodPoints": 6,
"saturation": 9.6,
"effectiveQuality": 15.6,
"saturationRatio": 1.5999999999999999
},
{
"id": 653,
"displayName": "Cake",
"name": "cake",
"stackSize": 1,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 670,
"displayName": "Cookie",
"name": "cookie",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 673,
"displayName": "Melon Slice",
"name": "melon_slice",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 674,
"displayName": "Dried Kelp",
"name": "dried_kelp",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.6,
"effectiveQuality": 1.6,
"saturationRatio": 0.6
},
{
"id": 677,
"displayName": "Raw Beef",
"name": "beef",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 678,
"displayName": "Steak",
"name": "cooked_beef",
"stackSize": 64,
"foodPoints": 8,
"saturation": 12.8,
"effectiveQuality": 20.8,
"saturationRatio": 1.6
},
{
"id": 679,
"displayName": "Raw Chicken",
"name": "chicken",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 680,
"displayName": "Cooked Chicken",
"name": "cooked_chicken",
"stackSize": 64,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 681,
"displayName": "Rotten Flesh",
"name": "rotten_flesh",
"stackSize": 64,
"foodPoints": 4,
"saturation": 0.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.2
},
{
"id": 689,
"displayName": "Spider Eye",
"name": "spider_eye",
"stackSize": 64,
"foodPoints": 2,
"saturation": 3.2,
"effectiveQuality": 5.2,
"saturationRatio": 1.6
},
{
"id": 762,
"displayName": "Carrot",
"name": "carrot",
"stackSize": 64,
"foodPoints": 3,
"saturation": 3.6,
"effectiveQuality": 6.6,
"saturationRatio": 1.2
},
{
"id": 763,
"displayName": "Potato",
"name": "potato",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.6,
"effectiveQuality": 1.6,
"saturationRatio": 0.6
},
{
"id": 764,
"displayName": "Baked Potato",
"name": "baked_potato",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 765,
"displayName": "Poisonous Potato",
"name": "poisonous_potato",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 767,
"displayName": "Golden Carrot",
"name": "golden_carrot",
"stackSize": 64,
"foodPoints": 6,
"saturation": 14.4,
"effectiveQuality": 20.4,
"saturationRatio": 2.4
},
{
"id": 776,
"displayName": "Pumpkin Pie",
"name": "pumpkin_pie",
"stackSize": 64,
"foodPoints": 8,
"saturation": 4.8,
"effectiveQuality": 12.8,
"saturationRatio": 0.6
},
{
"id": 786,
"displayName": "Raw Rabbit",
"name": "rabbit",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 787,
"displayName": "Cooked Rabbit",
"name": "cooked_rabbit",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 788,
"displayName": "Rabbit Stew",
"name": "rabbit_stew",
"stackSize": 1,
"foodPoints": 10,
"saturation": 12,
"effectiveQuality": 22,
"saturationRatio": 1.2
},
{
"id": 799,
"displayName": "Raw Mutton",
"name": "mutton",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 800,
"displayName": "Cooked Mutton",
"name": "cooked_mutton",
"stackSize": 64,
"foodPoints": 6,
"saturation": 9.6,
"effectiveQuality": 15.6,
"saturationRatio": 1.5999999999999999
},
{
"id": 818,
"displayName": "Chorus Fruit",
"name": "chorus_fruit",
"stackSize": 64,
"foodPoints": 4,
"saturation": 2.4,
"effectiveQuality": 6.4,
"saturationRatio": 0.6
},
{
"id": 820,
"displayName": "Beetroot",
"name": "beetroot",
"stackSize": 64,
"foodPoints": 1,
"saturation": 1.2,
"effectiveQuality": 2.2,
"saturationRatio": 1.2
},
{
"id": 822,
"displayName": "Beetroot Soup",
"name": "beetroot_soup",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 857,
"displayName": "Suspicious Stew",
"name": "suspicious_stew",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 875,
"displayName": "Sweet Berries",
"name": "sweet_berries",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
}
]
@@ -0,0 +1,42 @@
[
{
"id": 0,
"name": "harp"
},
{
"id": 1,
"name": "basedrum"
},
{
"id": 2,
"name": "snare"
},
{
"id": 3,
"name": "hat"
},
{
"id": 4,
"name": "bass"
},
{
"id": 5,
"name": "flute"
},
{
"id": 6,
"name": "bell"
},
{
"id": 7,
"name": "guitar"
},
{
"id": 8,
"name": "chime"
},
{
"id": 9,
"name": "xylophone"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,61 @@
{
"rock": {
"521": 6,
"535": 2,
"539": 4,
"543": 8,
"550": 12
},
"wood": {
"522": 6,
"536": 2,
"540": 4,
"544": 8,
"551": 12
},
"plant": {
"522": 6,
"532": 1.5,
"533": 1.5,
"536": 2,
"537": 1.5,
"540": 4,
"541": 1.5,
"544": 8,
"548": 1.5,
"551": 12
},
"melon": {
"532": 1.5,
"533": 1.5,
"537": 1.5,
"541": 1.5,
"548": 1.5
},
"leaves": {
"532": 1.5,
"533": 1.5,
"537": 1.5,
"541": 1.5,
"548": 1.5,
"672": 6
},
"dirt": {
"520": 6,
"534": 2,
"538": 4,
"542": 8,
"549": 12
},
"web": {
"532": 15,
"533": 15,
"537": 15,
"541": 15,
"548": 15,
"672": 15
},
"wool": {
"672": 4.8
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.14.4",
"version": 498,
"majorVersion": "1.14"
}
@@ -0,0 +1,229 @@
[
{
"id": "",
"name": "Player",
"slots": [
{
"name": "craft result",
"index": 0
},
{
"name": "craft grid",
"index": 1,
"size": 4
},
{
"name": "armor",
"index": 5,
"size": 4
},
{
"name": "helmet",
"index": 5
},
{
"name": "chestplate",
"index": 6
},
{
"name": "leggings",
"index": 7
},
{
"name": "boots",
"index": 8
}
]
},
{
"id": "EntityHorse",
"name": "Horse",
"slots": [
{
"name": "saddle",
"index": 0
},
{
"name": "armor",
"index": 1
},
{
"name": "storage",
"index": 2,
"size": 15
}
],
"openedWith": [
{
"type": "entity",
"id": 100
}
]
},
{
"id": "minecraft:anvil",
"name": "Anvil",
"slots": [
{
"name": "tool",
"index": 0
},
{
"name": "combined",
"index": 1
},
{
"name": "result",
"index": 2
}
],
"properties": [
"repair cost"
]
},
{
"id": "minecraft:beacon",
"name": "Beacon",
"slots": [
{
"name": "input",
"index": 0
}
],
"properties": [
"level",
"effect 1",
"effect 2"
],
"openedWith": [
{
"type": "block",
"id": 138
}
]
},
{
"id": "minecraft:brewing_stand",
"name": "Brewing Stand",
"slots": [
{
"name": "ingredient",
"index": 0
},
{
"name": "result",
"index": 1,
"size": 3
}
],
"properties": [
"brew time"
],
"openedWith": [
{
"type": "block",
"id": 117
}
]
},
{
"id": "minecraft:chest",
"name": "Chest"
},
{
"id": "minecraft:container",
"name": "Container"
},
{
"id": "minecraft:crafting_table",
"name": "Workbench",
"slots": [
{
"name": "craft result",
"index": 0
},
{
"name": "craft grid",
"index": 1,
"size": 9
}
]
},
{
"id": "minecraft:dispenser",
"name": "Dispenser"
},
{
"id": "minecraft:dropper",
"name": "Dropper"
},
{
"id": "minecraft:enchanting_table",
"name": "Enchantment Table",
"slots": [
{
"name": "enchanted",
"index": 0
},
{
"name": "lapis",
"index": 1
}
],
"properties": [
"xp 1",
"xp 2",
"xp 3",
"seed",
"tooltip 1",
"tooltip 2",
"tooltip 3"
]
},
{
"id": "minecraft:furnace",
"name": "Furnace",
"slots": [
{
"name": "smelted",
"index": 0
},
{
"name": "fuel",
"index": 1
},
{
"name": "result",
"index": 2
}
],
"properties": [
"fuel",
"fuel max",
"progress",
"progress max"
]
},
{
"id": "minecraft:hopper",
"name": "Hopper"
},
{
"id": "minecraft:villager",
"name": "NPC Trade",
"slots": [
{
"name": "give 1",
"index": 0
},
{
"name": "give 2",
"index": 1
},
{
"name": "take",
"index": 2
}
]
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,200 @@
[
{
"id": 1,
"name": "Speed",
"displayName": "Speed",
"type": "good"
},
{
"id": 2,
"name": "Slowness",
"displayName": "Slowness",
"type": "bad"
},
{
"id": 3,
"name": "Haste",
"displayName": "Haste",
"type": "good"
},
{
"id": 4,
"name": "MiningFatigue",
"displayName": "Mining Fatigue",
"type": "bad"
},
{
"id": 5,
"name": "Strength",
"displayName": "Strength",
"type": "good"
},
{
"id": 6,
"name": "InstantHealth",
"displayName": "Instant Health",
"type": "good"
},
{
"id": 7,
"name": "InstantDamage",
"displayName": "Instant Damage",
"type": "bad"
},
{
"id": 8,
"name": "JumpBoost",
"displayName": "Jump Boost",
"type": "good"
},
{
"id": 9,
"name": "Nausea",
"displayName": "Nausea",
"type": "bad"
},
{
"id": 10,
"name": "Regeneration",
"displayName": "Regeneration",
"type": "good"
},
{
"id": 11,
"name": "Resistance",
"displayName": "Resistance",
"type": "good"
},
{
"id": 12,
"name": "FireResistance",
"displayName": "Fire Resistance",
"type": "good"
},
{
"id": 13,
"name": "WaterBreathing",
"displayName": "Water Breathing",
"type": "good"
},
{
"id": 14,
"name": "Invisibility",
"displayName": "Invisibility",
"type": "good"
},
{
"id": 15,
"name": "Blindness",
"displayName": "Blindness",
"type": "bad"
},
{
"id": 16,
"name": "NightVision",
"displayName": "Night Vision",
"type": "good"
},
{
"id": 17,
"name": "Hunger",
"displayName": "Hunger",
"type": "bad"
},
{
"id": 18,
"name": "Weakness",
"displayName": "Weakness",
"type": "bad"
},
{
"id": 19,
"name": "Poison",
"displayName": "Poison",
"type": "bad"
},
{
"id": 20,
"name": "Wither",
"displayName": "Wither",
"type": "bad"
},
{
"id": 21,
"name": "HealthBoost",
"displayName": "Health Boost",
"type": "good"
},
{
"id": 22,
"name": "Absorption",
"displayName": "Absorption",
"type": "good"
},
{
"id": 23,
"name": "Saturation",
"displayName": "Saturation",
"type": "good"
},
{
"id": 24,
"name": "Glowing",
"displayName": "Glowing",
"type": "bad"
},
{
"id": 25,
"name": "Levitation",
"displayName": "Levitation",
"type": "bad"
},
{
"id": 26,
"name": "Luck",
"displayName": "Luck",
"type": "good"
},
{
"id": 27,
"name": "BadLuck",
"displayName": "Bad Luck",
"type": "bad"
},
{
"id": 28,
"name": "SlowFalling",
"displayName": "Slow Falling",
"type": "good"
},
{
"id": 29,
"name": "ConduitPower",
"displayName": "Conduit Power",
"type": "good"
},
{
"id": 30,
"name": "DolphinsGrace",
"displayName": "Dolphin's Grace",
"type": "good"
},
{
"id": 31,
"name": "DolphinsGrace",
"displayName": "Dolphin's Grace",
"type": "good"
},
{
"id": 32,
"name": "BadOmen",
"displayName": "Bad Omen",
"type": "good"
},
{
"id": 32,
"name": "HeroOfTheVillage",
"displayName": "Hero Of The Village",
"type": "good"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+402
View File
@@ -0,0 +1,402 @@
[
{
"id": 576,
"displayName": "Apple",
"name": "apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 2.4,
"effectiveQuality": 6.4,
"saturationRatio": 0.6
},
{
"id": 601,
"displayName": "Mushroom Stew",
"name": "mushroom_stew",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 621,
"displayName": "Bread",
"name": "bread",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 647,
"displayName": "Raw Porkchop",
"name": "porkchop",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 648,
"displayName": "Cooked Porkchop",
"name": "cooked_porkchop",
"stackSize": 64,
"foodPoints": 8,
"saturation": 12.8,
"effectiveQuality": 20.8,
"saturationRatio": 1.6
},
{
"id": 650,
"displayName": "Golden Apple",
"name": "golden_apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 9.6,
"effectiveQuality": 13.6,
"saturationRatio": 2.4
},
{
"id": 651,
"displayName": "Enchanted Golden Apple",
"name": "enchanted_golden_apple",
"stackSize": 64,
"foodPoints": 4,
"saturation": 9.6,
"effectiveQuality": 13.6,
"saturationRatio": 2.4
},
{
"id": 687,
"displayName": "Raw Cod",
"name": "cod",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 688,
"displayName": "Raw Salmon",
"name": "salmon",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 689,
"displayName": "Tropical Fish",
"name": "tropical_fish",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.2,
"effectiveQuality": 1.2,
"saturationRatio": 0.2
},
{
"id": 690,
"displayName": "Pufferfish",
"name": "pufferfish",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.2,
"effectiveQuality": 1.2,
"saturationRatio": 0.2
},
{
"id": 691,
"displayName": "Cooked Cod",
"name": "cooked_cod",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 692,
"displayName": "Cooked Salmon",
"name": "cooked_salmon",
"stackSize": 64,
"foodPoints": 6,
"saturation": 9.6,
"effectiveQuality": 15.6,
"saturationRatio": 1.5999999999999999
},
{
"id": 715,
"displayName": "Cake",
"name": "cake",
"stackSize": 1,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 732,
"displayName": "Cookie",
"name": "cookie",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 735,
"displayName": "Melon Slice",
"name": "melon_slice",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 736,
"displayName": "Dried Kelp",
"name": "dried_kelp",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.6,
"effectiveQuality": 1.6,
"saturationRatio": 0.6
},
{
"id": 739,
"displayName": "Raw Beef",
"name": "beef",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 740,
"displayName": "Steak",
"name": "cooked_beef",
"stackSize": 64,
"foodPoints": 8,
"saturation": 12.8,
"effectiveQuality": 20.8,
"saturationRatio": 1.6
},
{
"id": 741,
"displayName": "Raw Chicken",
"name": "chicken",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 742,
"displayName": "Cooked Chicken",
"name": "cooked_chicken",
"stackSize": 64,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 743,
"displayName": "Rotten Flesh",
"name": "rotten_flesh",
"stackSize": 64,
"foodPoints": 4,
"saturation": 0.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.2
},
{
"id": 751,
"displayName": "Spider Eye",
"name": "spider_eye",
"stackSize": 64,
"foodPoints": 2,
"saturation": 3.2,
"effectiveQuality": 5.2,
"saturationRatio": 1.6
},
{
"id": 829,
"displayName": "Carrot",
"name": "carrot",
"stackSize": 64,
"foodPoints": 3,
"saturation": 3.6,
"effectiveQuality": 6.6,
"saturationRatio": 1.2
},
{
"id": 830,
"displayName": "Potato",
"name": "potato",
"stackSize": 64,
"foodPoints": 1,
"saturation": 0.6,
"effectiveQuality": 1.6,
"saturationRatio": 0.6
},
{
"id": 831,
"displayName": "Baked Potato",
"name": "baked_potato",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 832,
"displayName": "Poisonous Potato",
"name": "poisonous_potato",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 834,
"displayName": "Golden Carrot",
"name": "golden_carrot",
"stackSize": 64,
"foodPoints": 6,
"saturation": 14.4,
"effectiveQuality": 20.4,
"saturationRatio": 2.4
},
{
"id": 844,
"displayName": "Pumpkin Pie",
"name": "pumpkin_pie",
"stackSize": 64,
"foodPoints": 8,
"saturation": 4.8,
"effectiveQuality": 12.8,
"saturationRatio": 0.6
},
{
"id": 854,
"displayName": "Raw Rabbit",
"name": "rabbit",
"stackSize": 64,
"foodPoints": 3,
"saturation": 1.8,
"effectiveQuality": 4.8,
"saturationRatio": 0.6
},
{
"id": 855,
"displayName": "Cooked Rabbit",
"name": "cooked_rabbit",
"stackSize": 64,
"foodPoints": 5,
"saturation": 6,
"effectiveQuality": 11,
"saturationRatio": 1.2
},
{
"id": 856,
"displayName": "Rabbit Stew",
"name": "rabbit_stew",
"stackSize": 1,
"foodPoints": 10,
"saturation": 12,
"effectiveQuality": 22,
"saturationRatio": 1.2
},
{
"id": 867,
"displayName": "Raw Mutton",
"name": "mutton",
"stackSize": 64,
"foodPoints": 2,
"saturation": 1.2,
"effectiveQuality": 3.2,
"saturationRatio": 0.6
},
{
"id": 868,
"displayName": "Cooked Mutton",
"name": "cooked_mutton",
"stackSize": 64,
"foodPoints": 6,
"saturation": 9.6,
"effectiveQuality": 15.6,
"saturationRatio": 1.5999999999999999
},
{
"id": 886,
"displayName": "Chorus Fruit",
"name": "chorus_fruit",
"stackSize": 64,
"foodPoints": 4,
"saturation": 2.4,
"effectiveQuality": 6.4,
"saturationRatio": 0.6
},
{
"id": 888,
"displayName": "Beetroot",
"name": "beetroot",
"stackSize": 64,
"foodPoints": 1,
"saturation": 1.2,
"effectiveQuality": 2.2,
"saturationRatio": 1.2
},
{
"id": 890,
"displayName": "Beetroot Soup",
"name": "beetroot_soup",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 926,
"displayName": "Suspicious Stew",
"name": "suspicious_stew",
"stackSize": 1,
"foodPoints": 6,
"saturation": 7.2,
"effectiveQuality": 13.2,
"saturationRatio": 1.2
},
{
"id": 947,
"displayName": "Sweet Berries",
"name": "sweet_berries",
"stackSize": 64,
"foodPoints": 2,
"saturation": 0.4,
"effectiveQuality": 2.4,
"saturationRatio": 0.2
},
{
"id": 954,
"displayName": "Honey Bottle",
"name": "honey_bottle",
"stackSize": 16,
"foodPoints": 6,
"saturation": 1.2,
"effectiveQuality": 7.2,
"saturationRatio": 0.19999999999999998
}
]
@@ -0,0 +1,66 @@
[
{
"id": 0,
"name": "harp"
},
{
"id": 1,
"name": "basedrum"
},
{
"id": 2,
"name": "snare"
},
{
"id": 3,
"name": "hat"
},
{
"id": 4,
"name": "bass"
},
{
"id": 5,
"name": "flute"
},
{
"id": 6,
"name": "bell"
},
{
"id": 7,
"name": "guitar"
},
{
"id": 8,
"name": "chime"
},
{
"id": 9,
"name": "xylophone"
},
{
"id": 10,
"name": "iron_xylophone"
},
{
"id": 11,
"name": "cow_bell"
},
{
"id": 12,
"name": "didgeridoo"
},
{
"id": 13,
"name": "bit"
},
{
"id": 14,
"name": "banjo"
},
{
"id": 15,
"name": "pling"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,69 @@
{
"rock": {
"573": 6,
"589": 2,
"593": 4,
"597": 8,
"608": 9,
"604": 12
},
"wood": {
"574": 6,
"590": 2,
"594": 4,
"598": 8,
"609": 9,
"605": 12
},
"plant": {
"574": 6,
"586": 1.5,
"587": 1.5,
"590": 2,
"591": 1.5,
"594": 4,
"595": 1.5,
"598": 8,
"609": 9,
"606": 1.5,
"602": 1.5,
"605": 12
},
"melon": {
"586": 1.5,
"587": 1.5,
"591": 1.5,
"595": 1.5,
"606": 1.5,
"602": 1.5
},
"leaves": {
"586": 1.5,
"587": 1.5,
"591": 1.5,
"595": 1.5,
"602": 1.5,
"606": 1.5,
"734": 6
},
"dirt": {
"572": 6,
"588": 2,
"592": 4,
"596": 8,
"607": 9,
"603": 12
},
"web": {
"586": 15,
"587": 15,
"591": 15,
"595": 15,
"602": 15,
"606": 15,
"734": 15
},
"wool": {
"734": 4.8
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.16.1",
"version": 736,
"majorVersion": "1.16"
}
@@ -0,0 +1,229 @@
[
{
"id": "",
"name": "Player",
"slots": [
{
"name": "craft result",
"index": 0
},
{
"name": "craft grid",
"index": 1,
"size": 4
},
{
"name": "armor",
"index": 5,
"size": 4
},
{
"name": "helmet",
"index": 5
},
{
"name": "chestplate",
"index": 6
},
{
"name": "leggings",
"index": 7
},
{
"name": "boots",
"index": 8
}
]
},
{
"id": "EntityHorse",
"name": "Horse",
"slots": [
{
"name": "saddle",
"index": 0
},
{
"name": "armor",
"index": 1
},
{
"name": "storage",
"index": 2,
"size": 15
}
],
"openedWith": [
{
"type": "entity",
"id": 100
}
]
},
{
"id": "minecraft:anvil",
"name": "Anvil",
"slots": [
{
"name": "tool",
"index": 0
},
{
"name": "combined",
"index": 1
},
{
"name": "result",
"index": 2
}
],
"properties": [
"repair cost"
]
},
{
"id": "minecraft:beacon",
"name": "Beacon",
"slots": [
{
"name": "input",
"index": 0
}
],
"properties": [
"level",
"effect 1",
"effect 2"
],
"openedWith": [
{
"type": "block",
"id": 138
}
]
},
{
"id": "minecraft:brewing_stand",
"name": "Brewing Stand",
"slots": [
{
"name": "ingredient",
"index": 0
},
{
"name": "result",
"index": 1,
"size": 3
}
],
"properties": [
"brew time"
],
"openedWith": [
{
"type": "block",
"id": 117
}
]
},
{
"id": "minecraft:chest",
"name": "Chest"
},
{
"id": "minecraft:container",
"name": "Container"
},
{
"id": "minecraft:crafting_table",
"name": "Workbench",
"slots": [
{
"name": "craft result",
"index": 0
},
{
"name": "craft grid",
"index": 1,
"size": 9
}
]
},
{
"id": "minecraft:dispenser",
"name": "Dispenser"
},
{
"id": "minecraft:dropper",
"name": "Dropper"
},
{
"id": "minecraft:enchanting_table",
"name": "Enchantment Table",
"slots": [
{
"name": "enchanted",
"index": 0
},
{
"name": "lapis",
"index": 1
}
],
"properties": [
"xp 1",
"xp 2",
"xp 3",
"seed",
"tooltip 1",
"tooltip 2",
"tooltip 3"
]
},
{
"id": "minecraft:furnace",
"name": "Furnace",
"slots": [
{
"name": "smelted",
"index": 0
},
{
"name": "fuel",
"index": 1
},
{
"name": "result",
"index": 2
}
],
"properties": [
"fuel",
"fuel max",
"progress",
"progress max"
]
},
{
"id": "minecraft:hopper",
"name": "Hopper"
},
{
"id": "minecraft:villager",
"name": "NPC Trade",
"slots": [
{
"name": "give 1",
"index": 0
},
{
"name": "give 2",
"index": 1
},
{
"name": "take",
"index": 2
}
]
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,69 @@
{
"rock": {
"600": 6,
"585": 2,
"590": 4,
"605": 8,
"610": 9,
"595": 12
},
"wood": {
"601": 6,
"586": 2,
"591": 4,
"606": 8,
"611": 9,
"596": 12
},
"plant": {
"601": 6,
"598": 1.5,
"583": 1.5,
"586": 2,
"588": 1.5,
"591": 4,
"603": 1.5,
"606": 8,
"611": 9,
"608": 1.5,
"593": 1.5,
"596": 12
},
"melon": {
"598": 1.5,
"583": 1.5,
"588": 1.5,
"603": 1.5,
"608": 1.5,
"593": 1.5
},
"leaves": {
"598": 1.5,
"583": 1.5,
"588": 1.5,
"603": 1.5,
"608": 1.5,
"593": 1.5,
"734": 6
},
"dirt": {
"599": 6,
"584": 2,
"589": 4,
"604": 8,
"609": 9,
"594": 12
},
"web": {
"598": 15,
"583": 15,
"588": 15,
"603": 15,
"593": 15,
"608": 15,
"734": 15
},
"wool": {
"734": 4.8
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+459
View File
@@ -0,0 +1,459 @@
{
"grass": {
"data": [
{
"keys": [
"badlands",
"badlands_plateau",
"eroded_badlands",
"modified_badlands_plateau",
"modified_wooded_badlands_plateau",
"wooded_badlands_plateau"
],
"color": 9470285
},
{
"keys": [
"desert",
"desert_hills",
"desert_lakes",
"savanna",
"savanna_plateau",
"shattered_savanna",
"shattered_savanna_plateau",
"nether_wastes",
"soul_sand_valley",
"crimson_forest",
"warped_forest",
"basalt_deltas"
],
"color": 12564309
},
{
"keys": [
"jungle",
"jungle_hills",
"modified_jungle",
"bamboo_jungle",
"bamboo_jungle_hills"
],
"color": 5884220
},
{
"keys": [
"jungle_edge",
"modified_jungle_edge"
],
"color": 6604607
},
{
"keys": [
"forest",
"flower_forest",
"wooded_hills"
],
"color": 7979098
},
{
"keys": [
"birch_forest",
"birch_forest_hills",
"tall_birch_forest",
"tall_birch_hills"
],
"color": 8960871
},
{
"keys": [
"dark_forest",
"dark_forest_hills"
],
"color": 5274162
},
{
"keys": [
"swamp",
"swamp_hills"
],
"color": 6975545
},
{
"keys": [
"swamp",
"swamp_hills"
],
"color": 5011004
},
{
"keys": [
"plains",
"sunflower_plains",
"beach"
],
"color": 9551193
},
{
"keys": [
"ocean",
"deep_ocean",
"warm_ocean",
"deep_warm_ocean",
"lukewarm_ocean",
"deep_lukewarm_ocean",
"cold_ocean",
"deep_cold_ocean",
"deep_frozen_ocean",
"river",
"the_end",
"small_end_islands",
"end_barrens",
"end_midlands",
"end_highlands",
"the_void"
],
"color": 9353585
},
{
"keys": [
"mushroom_fields",
"mushroom_field_shore"
],
"color": 5622079
},
{
"keys": [
"mountains",
"mountain_edge",
"gravelly_mountains",
"modified_gravelly_mountains",
"wooded_mountains",
"stone_shore"
],
"color": 9090697
},
{
"keys": [
"snowy_beach"
],
"color": 8631699
},
{
"keys": [
"giant_tree_taiga",
"giant_tree_taiga_hills"
],
"color": 8829055
},
{
"keys": [
"taiga",
"taiga_hills",
"taiga_mountains",
"giant_spruce_taiga",
"giant_spruce_taiga_hills"
],
"color": 8828803
},
{
"keys": [
"snowy_tundra",
"snowy_mountains",
"ice_spikes",
"snowy_taiga",
"snowy_taiga_hills",
"snowy_taiga_mountains",
"frozen_ocean",
"frozen_river"
],
"color": 8434839
}
],
"default": 7979098
},
"foliage": {
"data": [
{
"keys": [
"badlands",
"badlands_plateau",
"eroded_badlands",
"modified_badlands_plateau",
"modified_wooded_badlands_plateau",
"wooded_badlands_plateau"
],
"color": 10387789
},
{
"keys": [
"desert",
"desert_hills",
"desert_lakes",
"savanna",
"savanna_plateau",
"shattered_savanna",
"shattered_savanna_plateau",
"nether_wastes",
"soul_sand_valley",
"crimson_forest",
"warped_forest",
"basalt_deltas"
],
"color": 11445290
},
{
"keys": [
"jungle",
"jungle_hills",
"modified_jungle",
"bamboo_jungle",
"bamboo_jungle_hills"
],
"color": 3193611
},
{
"keys": [
"jungle_edge",
"modified_jungle_edge"
],
"color": 4110351
},
{
"keys": [
"forest",
"flower_forest",
"wooded_hills",
"dark_forest",
"dark_forest_hills"
],
"color": 5877296
},
{
"keys": [
"birch_forest",
"birch_forest_hills",
"tall_birch_forest",
"tall_birch_hills"
],
"color": 7055681
},
{
"keys": [
"swamp",
"swamp_hills"
],
"color": 6975545
},
{
"keys": [
"plains",
"sunflower_plains",
"beach"
],
"color": 7842607
},
{
"keys": [
"ocean",
"deep_ocean",
"warm_ocean",
"deep_warm_ocean",
"lukewarm_ocean",
"deep_lukewarm_ocean",
"cold_ocean",
"deep_cold_ocean",
"deep_frozen_ocean",
"river",
"the_end",
"small_end_islands",
"end_barrens",
"end_midlands",
"end_highlands",
"the_void"
],
"color": 7448397
},
{
"keys": [
"mushroom_fields",
"mushroom_field_shore"
],
"color": 2865935
},
{
"keys": [
"mountains",
"mountain_edge",
"gravelly_mountains",
"modified_gravelly_mountains",
"wooded_mountains",
"stone_shore"
],
"color": 7185259
},
{
"keys": [
"snowy_beach"
],
"color": 6595192
},
{
"keys": [
"giant_tree_taiga",
"giant_tree_taiga_hills"
],
"color": 6858079
},
{
"keys": [
"taiga",
"taiga_hills",
"taiga_mountains",
"giant_spruce_taiga",
"giant_spruce_taiga_hills"
],
"color": 6857828
},
{
"keys": [
"snowy_tundra",
"snowy_mountains",
"ice_spikes",
"snowy_taiga",
"snowy_taiga_hills",
"snowy_taiga_mountains",
"frozen_ocean",
"frozen_river"
],
"color": 6332795
}
],
"default": 5877296
},
"water": {
"data": [
{
"keys": [
"cold_ocean",
"deep_cold_ocean"
],
"color": 4020182
},
{
"keys": [
"frozen_ocean",
"deep_frozen_ocean",
"frozen_river"
],
"color": 3750089
},
{
"keys": [
"lukewarm_ocean",
"deep_lukewarm_ocean"
],
"color": 4566514
},
{
"keys": [
"swamp",
"swamp_hills"
],
"color": 6388580
},
{
"keys": [
"warm_ocean",
"deep_warm_ocean"
],
"color": 4445678
}
],
"default": 4159204
},
"redstone": {
"data": [
{
"keys": [0],
"color": 4915200
},
{
"keys": [1],
"color": 7274496
},
{
"keys": [2],
"color": 7929856
},
{
"keys": [3],
"color": 8519680
},
{
"keys": [4],
"color": 9175040
},
{
"keys": [5],
"color": 9895936
},
{
"keys": [6],
"color": 10551296
},
{
"keys": [7],
"color": 11206656
},
{
"keys": [8],
"color": 11862016
},
{
"keys": [9],
"color": 12517376
},
{
"keys": [10],
"color": 13238272
},
{
"keys": [11],
"color": 13828096
},
{
"keys": [12],
"color": 14483456
},
{
"keys": [13],
"color": 15140352
},
{
"keys": [14],
"color": 15801088
},
{
"keys": [15],
"color": 16527616
}
],
"default": 4915200
},
"constant": {
"data": [
{
"keys": ["birch_leaves"],
"color": 8431445
},
{
"keys": ["spruce_leaves"],
"color": 6396257
},
{
"keys": ["lily_pad"],
"color": 2129968
}
],
"default": 0
}
}
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.16.2",
"version": 751,
"majorVersion": "1.16"
}
@@ -0,0 +1,848 @@
[
{
"id": 0,
"name": "protection",
"displayName": "Protection",
"maxLevel": 4,
"minCost": {
"a": 11,
"b": -10
},
"maxCost": {
"a": 11,
"b": 1
},
"exclude": [
"blast_protection",
"fire_protection",
"projectile_protection"
],
"category": "armor",
"weight": 10,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 1,
"name": "fire_protection",
"displayName": "Fire Protection",
"maxLevel": 4,
"minCost": {
"a": 8,
"b": 2
},
"maxCost": {
"a": 8,
"b": 10
},
"exclude": [
"blast_protection",
"protection",
"projectile_protection"
],
"category": "armor",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 2,
"name": "feather_falling",
"displayName": "Feather Falling",
"maxLevel": 4,
"minCost": {
"a": 6,
"b": -1
},
"maxCost": {
"a": 6,
"b": 5
},
"exclude": [],
"category": "armor_feet",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 3,
"name": "blast_protection",
"displayName": "Blast Protection",
"maxLevel": 4,
"minCost": {
"a": 8,
"b": -3
},
"maxCost": {
"a": 8,
"b": 5
},
"exclude": [
"fire_protection",
"protection",
"projectile_protection"
],
"category": "armor",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 4,
"name": "projectile_protection",
"displayName": "Projectile Protection",
"maxLevel": 4,
"minCost": {
"a": 6,
"b": -3
},
"maxCost": {
"a": 6,
"b": 3
},
"exclude": [
"protection",
"blast_protection",
"fire_protection"
],
"category": "armor",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 5,
"name": "respiration",
"displayName": "Respiration",
"maxLevel": 3,
"minCost": {
"a": 10,
"b": 0
},
"maxCost": {
"a": 10,
"b": 30
},
"exclude": [],
"category": "armor_head",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 6,
"name": "aqua_affinity",
"displayName": "Aqua Affinity",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 1
},
"maxCost": {
"a": 0,
"b": 41
},
"exclude": [],
"category": "armor_head",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 7,
"name": "thorns",
"displayName": "Thorns",
"maxLevel": 3,
"minCost": {
"a": 20,
"b": -10
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "armor_feet",
"weight": 1,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 8,
"name": "depth_strider",
"displayName": "Depth Strider",
"maxLevel": 3,
"minCost": {
"a": 10,
"b": 0
},
"maxCost": {
"a": 10,
"b": 15
},
"exclude": [
"frost_walker"
],
"category": "armor_feet",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 9,
"name": "frost_walker",
"displayName": "Frost Walker",
"maxLevel": 2,
"minCost": {
"a": 10,
"b": 0
},
"maxCost": {
"a": 10,
"b": 15
},
"exclude": [
"depth_strider"
],
"category": "armor_feet",
"weight": 2,
"treasureOnly": true,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 10,
"name": "binding_curse",
"displayName": "Curse of Binding",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 25
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [],
"category": "wearable",
"weight": 1,
"treasureOnly": true,
"curse": true,
"tradeable": true,
"discoverable": true
},
{
"id": 11,
"name": "soul_speed",
"displayName": "Soul Speed",
"maxLevel": 3,
"minCost": {
"a": 10,
"b": 0
},
"maxCost": {
"a": 10,
"b": 15
},
"exclude": [],
"category": "armor_feet",
"weight": 1,
"treasureOnly": true,
"curse": false,
"tradeable": false,
"discoverable": false
},
{
"id": 12,
"name": "sharpness",
"displayName": "Sharpness",
"maxLevel": 5,
"minCost": {
"a": 11,
"b": -10
},
"maxCost": {
"a": 11,
"b": 10
},
"exclude": [
"smite",
"bane_of_arthropods"
],
"category": "weapon",
"weight": 10,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 13,
"name": "smite",
"displayName": "Smite",
"maxLevel": 5,
"minCost": {
"a": 8,
"b": -3
},
"maxCost": {
"a": 8,
"b": 17
},
"exclude": [
"sharpness",
"bane_of_arthropods"
],
"category": "weapon",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 14,
"name": "bane_of_arthropods",
"displayName": "Bane of Arthropods",
"maxLevel": 5,
"minCost": {
"a": 8,
"b": -3
},
"maxCost": {
"a": 8,
"b": 17
},
"exclude": [
"smite",
"sharpness"
],
"category": "weapon",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 15,
"name": "knockback",
"displayName": "Knockback",
"maxLevel": 2,
"minCost": {
"a": 20,
"b": -15
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "weapon",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 16,
"name": "fire_aspect",
"displayName": "Fire Aspect",
"maxLevel": 2,
"minCost": {
"a": 20,
"b": -10
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "weapon",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 17,
"name": "looting",
"displayName": "Looting",
"maxLevel": 3,
"minCost": {
"a": 9,
"b": 6
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "weapon",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 18,
"name": "sweeping",
"displayName": "Sweeping Edge",
"maxLevel": 3,
"minCost": {
"a": 9,
"b": -4
},
"maxCost": {
"a": 9,
"b": 11
},
"exclude": [],
"category": "weapon",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 19,
"name": "efficiency",
"displayName": "Efficiency",
"maxLevel": 5,
"minCost": {
"a": 10,
"b": -9
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "digger",
"weight": 10,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 20,
"name": "silk_touch",
"displayName": "Silk Touch",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 15
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [
"fortune"
],
"category": "digger",
"weight": 1,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 21,
"name": "unbreaking",
"displayName": "Unbreaking",
"maxLevel": 3,
"minCost": {
"a": 8,
"b": -3
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "breakable",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 22,
"name": "fortune",
"displayName": "Fortune",
"maxLevel": 3,
"minCost": {
"a": 9,
"b": 6
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [
"silk_touch"
],
"category": "digger",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 23,
"name": "power",
"displayName": "Power",
"maxLevel": 5,
"minCost": {
"a": 10,
"b": -9
},
"maxCost": {
"a": 10,
"b": 6
},
"exclude": [],
"category": "bow",
"weight": 10,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 24,
"name": "punch",
"displayName": "Punch",
"maxLevel": 2,
"minCost": {
"a": 20,
"b": -8
},
"maxCost": {
"a": 20,
"b": 17
},
"exclude": [],
"category": "bow",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 25,
"name": "flame",
"displayName": "Flame",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 20
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [],
"category": "bow",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 26,
"name": "infinity",
"displayName": "Infinity",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 20
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"mending"
],
"category": "bow",
"weight": 1,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 27,
"name": "luck_of_the_sea",
"displayName": "Luck of the Sea",
"maxLevel": 3,
"minCost": {
"a": 9,
"b": 6
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "fishing_rod",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 28,
"name": "lure",
"displayName": "Lure",
"maxLevel": 3,
"minCost": {
"a": 9,
"b": 6
},
"maxCost": {
"a": 10,
"b": 51
},
"exclude": [],
"category": "fishing_rod",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 29,
"name": "loyalty",
"displayName": "Loyalty",
"maxLevel": 3,
"minCost": {
"a": 7,
"b": 5
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"riptide"
],
"category": "trident",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 30,
"name": "impaling",
"displayName": "Impaling",
"maxLevel": 5,
"minCost": {
"a": 8,
"b": -7
},
"maxCost": {
"a": 8,
"b": 13
},
"exclude": [],
"category": "trident",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 31,
"name": "riptide",
"displayName": "Riptide",
"maxLevel": 3,
"minCost": {
"a": 7,
"b": 10
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"loyalty",
"channeling"
],
"category": "trident",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 32,
"name": "channeling",
"displayName": "Channeling",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 25
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"riptide"
],
"category": "trident",
"weight": 1,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 33,
"name": "multishot",
"displayName": "Multishot",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 20
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"piercing"
],
"category": "crossbow",
"weight": 2,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 34,
"name": "quick_charge",
"displayName": "Quick Charge",
"maxLevel": 3,
"minCost": {
"a": 20,
"b": -8
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [],
"category": "crossbow",
"weight": 5,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 35,
"name": "piercing",
"displayName": "Piercing",
"maxLevel": 4,
"minCost": {
"a": 10,
"b": -9
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [
"multishot"
],
"category": "crossbow",
"weight": 10,
"treasureOnly": false,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 36,
"name": "mending",
"displayName": "Mending",
"maxLevel": 1,
"minCost": {
"a": 25,
"b": 0
},
"maxCost": {
"a": 25,
"b": 50
},
"exclude": [
"infinity"
],
"category": "breakable",
"weight": 2,
"treasureOnly": true,
"curse": false,
"tradeable": true,
"discoverable": true
},
{
"id": 37,
"name": "vanishing_curse",
"displayName": "Curse of Vanishing",
"maxLevel": 1,
"minCost": {
"a": 0,
"b": 25
},
"maxCost": {
"a": 0,
"b": 50
},
"exclude": [],
"category": "vanishable",
"weight": 1,
"treasureOnly": true,
"curse": true,
"tradeable": true,
"discoverable": true
}
]
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.16.4",
"version": 754,
"majorVersion": "1.16"
}
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.16.5",
"version": 754,
"majorVersion": "1.16"
}
@@ -0,0 +1,93 @@
[
{
"name": "maxHealth",
"resource": "generic.max_health",
"default": 20,
"min": 1,
"max": 1024
},
{
"name": "followRange",
"resource": "generic.follow_range",
"default": 32,
"min": 0,
"max": 2048
},
{
"name": "knockbackResistance",
"resource": "generic.knockback_resistance",
"default": 0,
"min": 0,
"max": 1
},
{
"name": "movementSpeed",
"resource": "generic.movement_speed",
"default": 0.7,
"min": 0,
"max": 1024
},
{
"name": "attackDamage",
"resource": "generic.attack_damage",
"default": 2,
"min": 0,
"max": 2048
},
{
"name": "horseJumpStrength",
"resource": "horse.jump_strength",
"default": 0.7,
"min": 0,
"max": 2
},
{
"name": "zombieSpawnReinforcements",
"resource": "zombie.spawn_reinforcements",
"default": 0,
"min": 0,
"max": 1
},
{
"name": "attackSpeed",
"resource": "generic.attack_speed",
"default": 4,
"min": 0,
"max": 1024
},
{
"name": "flyingSpeed",
"resource": "generic.flying_speed",
"default": 0.4,
"min": 0,
"max": 1024
},
{
"name": "attackKnockback",
"resource": "generic.attack_knockback",
"default": 0,
"min": 0,
"max": 5
},
{
"name": "armorHealth",
"resource": "generic.armor",
"default": 0,
"min": 0,
"max": 30
},
{
"name": "armorToughness",
"resource": "generic.armor_toughness",
"default": 0,
"min": 0,
"max": 20
},
{
"name": "luck",
"resource": "generic.luck",
"default": 0,
"min": -1024,
"max": 1024
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,266 @@
{
"entityId": 1,
"gameMode": 0,
"previousGameMode": 255,
"worldNames": [
"minecraft:overworld",
"minecraft:the_nether",
"minecraft:the_end"
],
"dimensionCodec": {
"type": "compound",
"name": "",
"value": {
"dimension": {
"type": "list",
"value": {
"type": "compound",
"value": [
{
"piglin_safe": {
"type": "byte",
"value": 0
},
"natural": {
"type": "byte",
"value": 1
},
"ambient_light": {
"type": "float",
"value": 0
},
"infiniburn": {
"type": "string",
"value": "minecraft:infiniburn_overworld"
},
"respawn_anchor_works": {
"type": "byte",
"value": 0
},
"has_skylight": {
"type": "byte",
"value": 1
},
"bed_works": {
"type": "byte",
"value": 1
},
"has_raids": {
"type": "byte",
"value": 1
},
"name": {
"type": "string",
"value": "minecraft:overworld"
},
"logical_height": {
"type": "int",
"value": 256
},
"shrunk": {
"type": "byte",
"value": 0
},
"ultrawarm": {
"type": "byte",
"value": 0
},
"has_ceiling": {
"type": "byte",
"value": 0
}
},
{
"piglin_safe": {
"type": "byte",
"value": 0
},
"natural": {
"type": "byte",
"value": 1
},
"ambient_light": {
"type": "float",
"value": 0
},
"infiniburn": {
"type": "string",
"value": "minecraft:infiniburn_overworld"
},
"respawn_anchor_works": {
"type": "byte",
"value": 0
},
"has_skylight": {
"type": "byte",
"value": 1
},
"bed_works": {
"type": "byte",
"value": 1
},
"has_raids": {
"type": "byte",
"value": 1
},
"name": {
"type": "string",
"value": "minecraft:overworld_caves"
},
"logical_height": {
"type": "int",
"value": 256
},
"shrunk": {
"type": "byte",
"value": 0
},
"ultrawarm": {
"type": "byte",
"value": 0
},
"has_ceiling": {
"type": "byte",
"value": 1
}
},
{
"piglin_safe": {
"type": "byte",
"value": 1
},
"natural": {
"type": "byte",
"value": 0
},
"ambient_light": {
"type": "float",
"value": 0.10000000149011612
},
"infiniburn": {
"type": "string",
"value": "minecraft:infiniburn_nether"
},
"respawn_anchor_works": {
"type": "byte",
"value": 1
},
"has_skylight": {
"type": "byte",
"value": 0
},
"bed_works": {
"type": "byte",
"value": 0
},
"fixed_time": {
"type": "long",
"value": [
0,
18000
]
},
"has_raids": {
"type": "byte",
"value": 0
},
"name": {
"type": "string",
"value": "minecraft:the_nether"
},
"logical_height": {
"type": "int",
"value": 128
},
"shrunk": {
"type": "byte",
"value": 1
},
"ultrawarm": {
"type": "byte",
"value": 1
},
"has_ceiling": {
"type": "byte",
"value": 1
}
},
{
"piglin_safe": {
"type": "byte",
"value": 0
},
"natural": {
"type": "byte",
"value": 0
},
"ambient_light": {
"type": "float",
"value": 0
},
"infiniburn": {
"type": "string",
"value": "minecraft:infiniburn_end"
},
"respawn_anchor_works": {
"type": "byte",
"value": 0
},
"has_skylight": {
"type": "byte",
"value": 0
},
"bed_works": {
"type": "byte",
"value": 0
},
"fixed_time": {
"type": "long",
"value": [
0,
6000
]
},
"has_raids": {
"type": "byte",
"value": 1
},
"name": {
"type": "string",
"value": "minecraft:the_end"
},
"logical_height": {
"type": "int",
"value": 256
},
"shrunk": {
"type": "byte",
"value": 0
},
"ultrawarm": {
"type": "byte",
"value": 0
},
"has_ceiling": {
"type": "byte",
"value": 0
}
}
]
}
}
}
},
"dimension": "minecraft:overworld",
"worldName": "minecraft:overworld",
"hashedSeed": [
-2143157199,
-1615019164
],
"maxPlayers": 20,
"viewDistance": 10,
"reducedDebugInfo": false,
"enableRespawnScreen": true,
"isDebug": false,
"isFlat": false
}
@@ -0,0 +1,164 @@
[
{
"id": 0,
"name": "player",
"appearance": "White marker",
"visibleInItemFrame": false
},
{
"id": 1,
"name": "frame",
"appearance": "Green marker",
"visibleInItemFrame": true
},
{
"id": 2,
"name": "red_marker",
"appearance": "Red marker",
"visibleInItemFrame": false
},
{
"id": 3,
"name": "blue_marker",
"appearance": "Blue marker",
"visibleInItemFrame": false
},
{
"id": 4,
"name": "target_x",
"appearance": "White X",
"visibleInItemFrame": true
},
{
"id": 5,
"name": "target_point",
"appearance": "Red triangle",
"visibleInItemFrame": true
},
{
"id": 6,
"name": "player_off_map",
"appearance": "Large white dot",
"visibleInItemFrame": false
},
{
"id": 7,
"name": "player_off_limits",
"appearance": "Small white dot",
"visibleInItemFrame": false
},
{
"id": 8,
"name": "mansion",
"appearance": "Woodland mansion",
"visibleInItemFrame": true
},
{
"id": 9,
"name": "monument",
"appearance": "Ocean monument",
"visibleInItemFrame": true
},
{
"id": 10,
"name": "banner_white",
"appearance": "White banner",
"visibleInItemFrame": true
},
{
"id": 11,
"name": "banner_orange",
"appearance": "Orange banner",
"visibleInItemFrame": true
},
{
"id": 12,
"name": "banner_magenta",
"appearance": "Magenta banner",
"visibleInItemFrame": true
},
{
"id": 13,
"name": "banner_light_blue",
"appearance": "Light blue banner",
"visibleInItemFrame": true
},
{
"id": 14,
"name": "banner_yellow",
"appearance": "Yellow banner",
"visibleInItemFrame": true
},
{
"id": 15,
"name": "banner_lime",
"appearance": "Lime banner",
"visibleInItemFrame": true
},
{
"id": 16,
"name": "banner_pink",
"appearance": "Pink banner",
"visibleInItemFrame": true
},
{
"id": 17,
"name": "banner_gray",
"appearance": "Gray banner",
"visibleInItemFrame": true
},
{
"id": 18,
"name": "banner_light_gray",
"appearance": "Light gray banner",
"visibleInItemFrame": true
},
{
"id": 19,
"name": "banner_cyan",
"appearance": "Cyan banner",
"visibleInItemFrame": true
},
{
"id": 20,
"name": "banner_purple",
"appearance": "Purple banner",
"visibleInItemFrame": true
},
{
"id": 21,
"name": "banner_blue",
"appearance": "Blue banner",
"visibleInItemFrame": true
},
{
"id": 22,
"name": "banner_brown",
"appearance": "Brown banner",
"visibleInItemFrame": true
},
{
"id": 23,
"name": "banner_green",
"appearance": "Green banner",
"visibleInItemFrame": true
},
{
"id": 24,
"name": "banner_red",
"appearance": "Red banner",
"visibleInItemFrame": true
},
{
"id": 25,
"name": "banner_black",
"appearance": "Black banner",
"visibleInItemFrame": true
},
{
"id": 26,
"name": "red_x",
"appearance": "Red X",
"visibleInItemFrame": true
}
]
@@ -0,0 +1,290 @@
[
{
"id": 0,
"name": "ambient_entity_effect"
},
{
"id": 1,
"name": "angry_villager"
},
{
"id": 2,
"name": "barrier"
},
{
"id": 3,
"name": "block"
},
{
"id": 4,
"name": "bubble"
},
{
"id": 5,
"name": "cloud"
},
{
"id": 6,
"name": "crit"
},
{
"id": 7,
"name": "damage_indicator"
},
{
"id": 8,
"name": "dragon_breath"
},
{
"id": 9,
"name": "dripping_lava"
},
{
"id": 10,
"name": "falling_lava"
},
{
"id": 11,
"name": "landing_lava"
},
{
"id": 12,
"name": "dripping_water"
},
{
"id": 13,
"name": "falling_water"
},
{
"id": 14,
"name": "dust"
},
{
"id": 15,
"name": "effect"
},
{
"id": 16,
"name": "elder_guardian"
},
{
"id": 17,
"name": "enchanted_hit"
},
{
"id": 18,
"name": "enchant"
},
{
"id": 19,
"name": "end_rod"
},
{
"id": 20,
"name": "entity_effect"
},
{
"id": 21,
"name": "explosion_emitter"
},
{
"id": 22,
"name": "explosion"
},
{
"id": 23,
"name": "falling_dust"
},
{
"id": 24,
"name": "firework"
},
{
"id": 25,
"name": "fishing"
},
{
"id": 26,
"name": "flame"
},
{
"id": 27,
"name": "soul_fire_flame"
},
{
"id": 28,
"name": "soul"
},
{
"id": 29,
"name": "flash"
},
{
"id": 30,
"name": "happy_villager"
},
{
"id": 31,
"name": "composter"
},
{
"id": 32,
"name": "heart"
},
{
"id": 33,
"name": "instant_effect"
},
{
"id": 34,
"name": "item"
},
{
"id": 35,
"name": "item_slime"
},
{
"id": 36,
"name": "item_snowball"
},
{
"id": 37,
"name": "large_smoke"
},
{
"id": 38,
"name": "lava"
},
{
"id": 39,
"name": "mycelium"
},
{
"id": 40,
"name": "note"
},
{
"id": 41,
"name": "poof"
},
{
"id": 42,
"name": "portal"
},
{
"id": 43,
"name": "rain"
},
{
"id": 44,
"name": "smoke"
},
{
"id": 45,
"name": "sneeze"
},
{
"id": 46,
"name": "spit"
},
{
"id": 47,
"name": "squid_ink"
},
{
"id": 48,
"name": "sweep_attack"
},
{
"id": 49,
"name": "totem_of_undying"
},
{
"id": 50,
"name": "underwater"
},
{
"id": 51,
"name": "splash"
},
{
"id": 52,
"name": "witch"
},
{
"id": 53,
"name": "bubble_pop"
},
{
"id": 54,
"name": "current_down"
},
{
"id": 55,
"name": "bubble_column_up"
},
{
"id": 56,
"name": "nautilus"
},
{
"id": 57,
"name": "dolphin"
},
{
"id": 58,
"name": "campfire_cosy_smoke"
},
{
"id": 59,
"name": "campfire_signal_smoke"
},
{
"id": 60,
"name": "dripping_honey"
},
{
"id": 61,
"name": "falling_honey"
},
{
"id": 62,
"name": "landing_honey"
},
{
"id": 63,
"name": "falling_nectar"
},
{
"id": 64,
"name": "ash"
},
{
"id": 65,
"name": "crimson_spore"
},
{
"id": 66,
"name": "warped_spore"
},
{
"id": 67,
"name": "dripping_obsidian_tear"
},
{
"id": 68,
"name": "falling_obsidian_tear"
},
{
"id": 69,
"name": "landing_obsidian_tear"
},
{
"id": 70,
"name": "reverse_portal"
},
{
"id": 71,
"name": "white_ash"
}
]
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,5 @@
{
"minecraftVersion": "1.16",
"version": 735,
"majorVersion": "1.16"
}
@@ -4120,11 +4120,6 @@
"type": [
"bitfield",
[
{
"name": "unused",
"size": 2,
"signed": false
},
{
"name": "allows_restricted",
"size": 1,
@@ -2803,11 +2803,6 @@
"type": [
"bitfield",
[
{
"name": "unused",
"size": 2,
"signed": false
},
{
"name": "allows_restricted",
"size": 1,
@@ -3822,11 +3822,6 @@
"type": [
"bitfield",
[
{
"name": "unused",
"size": 2,
"signed": false
},
{
"name": "allows_restricted",
"size": 1,
@@ -0,0 +1,86 @@
[
{
"name": "maxHealth",
"resource": "generic.maxHealth",
"default": 20,
"min": 1,
"max": 1024
},
{
"name": "followRange",
"resource": "generic.followRange",
"default": 32,
"min": 0,
"max": 2048
},
{
"name": "knockbackResistance",
"resource": "generic.knockbackResistance",
"default": 0,
"min": 0,
"max": 1
},
{
"name": "movementSpeed",
"resource": "generic.movementSpeed",
"default": 0.7,
"min": 0,
"max": 1024
},
{
"name": "attackDamage",
"resource": "generic.attackDamage",
"default": 2,
"min": 0,
"max": 2048
},
{
"name": "horseJumpStrength",
"resource": "horse.jumpStrength",
"default": 0.7,
"min": 0,
"max": 2
},
{
"name": "zombieSpawnReinforcements",
"resource": "zombie.spawnReinforcements",
"default": 0,
"min": 0,
"max": 1
},
{
"name": "attackSpeed",
"resource": "generic.attackSpeed",
"default": 4,
"min": 0,
"max": 1024
},
{
"name": "flyingSpeed",
"resource": "generic.flyingSpeed",
"default": 0.4,
"min": 0,
"max": 1024
},
{
"name": "attackKnockback",
"resource": "generic.attackKnockback",
"default": 0,
"min": 0,
"max": 5
},
{
"name": "armorHealth",
"resource": "generic.armor",
"default": 0,
"min": 0,
"max": 30
},
{
"name": "armorToughness",
"resource": "generic.armorToughness",
"default": 0,
"min": 0,
"max": 20
}
]
+817
View File
@@ -0,0 +1,817 @@
[
{
"id": 0,
"name": "ocean",
"name_legacy": "ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1,
"dimension": "overworld",
"displayName": "Ocean",
"color": 112,
"rainfall": 0.5
},
{
"id": 1,
"name": "plains",
"name_legacy": "plains",
"category": "plains",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Plains",
"color": 9286496,
"rainfall": 0.4
},
{
"id": 2,
"name": "desert",
"name_legacy": "desert",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Desert",
"color": 16421912,
"rainfall": 0
},
{
"id": 3,
"name": "mountains",
"name_legacy": "mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Extreme Hills",
"color": 6316128,
"rainfall": 0.3
},
{
"id": 4,
"name": "forest",
"name_legacy": "forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Forest",
"color": 353825,
"rainfall": 0.8
},
{
"id": 5,
"name": "taiga",
"name_legacy": "taiga",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Taiga",
"color": 747097,
"rainfall": 0.8
},
{
"id": 6,
"name": "swamp",
"name_legacy": "swamp",
"category": "swamp",
"temperature": 0.8,
"precipitation": "rain",
"depth": -0.2,
"dimension": "overworld",
"displayName": "Swampland",
"color": 522674,
"rainfall": 0.9
},
{
"id": 7,
"name": "river",
"name_legacy": "river",
"category": "river",
"temperature": 0.5,
"precipitation": "rain",
"depth": -0.5,
"dimension": "overworld",
"displayName": "River",
"color": 255,
"rainfall": 0.5
},
{
"id": 8,
"name": "nether_wastes",
"name_legacy": "nether_wastes",
"category": "nether",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"dimension": "nether",
"displayName": "Hell",
"color": 12532539,
"rainfall": 0,
"climates": [
{
"temperature": 0,
"humidity": 0,
"altitude": 0,
"weirdness": 0,
"offset": 0
}
]
},
{
"id": 9,
"name": "the_end",
"name_legacy": "the_end",
"category": "the_end",
"temperature": 0.5,
"precipitation": "none",
"depth": 0.1,
"dimension": "end",
"displayName": "The End",
"color": 8421631,
"rainfall": 0.5
},
{
"id": 10,
"name": "frozen_ocean",
"name_legacy": "frozen_ocean",
"category": "ocean",
"temperature": 0,
"precipitation": "snow",
"depth": -1,
"dimension": "overworld",
"displayName": "Frozen Ocean",
"color": 7368918,
"rainfall": 0.5
},
{
"id": 11,
"name": "frozen_river",
"name_legacy": "frozen_river",
"category": "river",
"temperature": 0,
"precipitation": "snow",
"depth": -0.5,
"dimension": "overworld",
"displayName": "Frozen River",
"color": 10526975,
"rainfall": 0.5
},
{
"id": 12,
"name": "snowy_tundra",
"name_legacy": "snowy_tundra",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Ice Plains",
"color": 16777215,
"rainfall": 0.5
},
{
"id": 13,
"name": "snowy_mountains",
"name_legacy": "snowy_mountains",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Ice Mountains",
"color": 10526880,
"rainfall": 0.5
},
{
"id": 14,
"name": "mushroom_fields",
"name_legacy": "mushroom_fields",
"category": "mushroom",
"temperature": 0.9,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Mushroom Island",
"color": 16711935,
"rainfall": 1
},
{
"id": 15,
"name": "mushroom_field_shore",
"name_legacy": "mushroom_field_shore",
"category": "mushroom",
"temperature": 0.9,
"precipitation": "rain",
"depth": 0,
"dimension": "overworld",
"displayName": "Mushroom Island Shore",
"color": 10486015,
"rainfall": 1
},
{
"id": 16,
"name": "beach",
"name_legacy": "beach",
"category": "beach",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0,
"dimension": "overworld",
"displayName": "Beach",
"color": 16440917,
"rainfall": 0.4
},
{
"id": 17,
"name": "desert_hills",
"name_legacy": "desert_hills",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Desert Hills",
"color": 13786898,
"rainfall": 0
},
{
"id": 18,
"name": "wooded_hills",
"name_legacy": "wooded_hills",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Forest Hills",
"color": 2250012,
"rainfall": 0.8
},
{
"id": 19,
"name": "taiga_hills",
"name_legacy": "taiga_hills",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Taiga Hills",
"color": 1456435,
"rainfall": 0.8
},
{
"id": 20,
"name": "mountain_edge",
"name_legacy": "mountain_edge",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 0.8,
"dimension": "overworld",
"displayName": "Extreme Hills Edge",
"color": 7501978,
"rainfall": 0.3
},
{
"id": 21,
"name": "jungle",
"name_legacy": "jungle",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Jungle",
"color": 5470985,
"rainfall": 0.9
},
{
"id": 22,
"name": "jungle_hills",
"name_legacy": "jungle_hills",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Jungle Hills",
"color": 2900485,
"rainfall": 0.9
},
{
"id": 23,
"name": "jungle_edge",
"name_legacy": "jungle_edge",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Jungle Edge",
"color": 6458135,
"rainfall": 0.8
},
{
"id": 24,
"name": "deep_ocean",
"name_legacy": "deep_ocean",
"category": "ocean",
"temperature": 0.5,
"precipitation": "rain",
"depth": -1.8,
"dimension": "overworld",
"displayName": "Deep Ocean",
"color": 48,
"rainfall": 0.5
},
{
"id": 25,
"name": "stone_shore",
"name_legacy": "stone_shore",
"category": "none",
"temperature": 0.2,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Stone Beach",
"color": 10658436,
"rainfall": 0.3
},
{
"id": 26,
"name": "snowy_beach",
"name_legacy": "snowy_beach",
"category": "beach",
"temperature": 0.05,
"precipitation": "snow",
"depth": 0,
"dimension": "overworld",
"displayName": "Cold Beach",
"color": 16445632,
"rainfall": 0.3
},
{
"id": 27,
"name": "birch_forest",
"name_legacy": "birch_forest",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Birch Forest",
"color": 3175492,
"rainfall": 0.6
},
{
"id": 28,
"name": "birch_forest_hills",
"name_legacy": "birch_forest_hills",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Birch Forest Hills",
"color": 2055986,
"rainfall": 0.6
},
{
"id": 29,
"name": "dark_forest",
"name_legacy": "dark_forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Roofed Forest",
"color": 4215066,
"rainfall": 0.8
},
{
"id": 30,
"name": "snowy_taiga",
"name_legacy": "snowy_taiga",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Cold Taiga",
"color": 3233098,
"rainfall": 0.4
},
{
"id": 31,
"name": "snowy_taiga_hills",
"name_legacy": "snowy_taiga_hills",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Cold Taiga Hills",
"color": 2375478,
"rainfall": 0.4
},
{
"id": 32,
"name": "giant_tree_taiga",
"name_legacy": "giant_tree_taiga",
"category": "taiga",
"temperature": 0.3,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Mega Taiga",
"color": 5858897,
"rainfall": 0.8
},
{
"id": 33,
"name": "giant_tree_taiga_hills",
"name_legacy": "giant_tree_taiga_hills",
"category": "taiga",
"temperature": 0.3,
"precipitation": "rain",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Mega Taiga Hills",
"color": 4542270,
"rainfall": 0.8
},
{
"id": 34,
"name": "wooded_mountains",
"name_legacy": "wooded_mountains",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Extreme Hills+",
"color": 5271632,
"rainfall": 0.3
},
{
"id": 35,
"name": "savanna",
"name_legacy": "savanna",
"category": "savanna",
"temperature": 1.2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Savanna",
"color": 12431967,
"rainfall": 0
},
{
"id": 36,
"name": "savanna_plateau",
"name_legacy": "savanna_plateau",
"category": "savanna",
"temperature": 1,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Savanna Plateau",
"color": 10984804,
"rainfall": 0
},
{
"id": 37,
"name": "badlands",
"name_legacy": "badlands",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Mesa",
"color": 14238997,
"rainfall": 0
},
{
"id": 38,
"name": "wooded_badlands_plateau",
"name_legacy": "wooded_badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Mesa Plateau F",
"color": 11573093,
"rainfall": 0
},
{
"id": 39,
"name": "badlands_plateau",
"name_legacy": "badlands_plateau",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 1.5,
"dimension": "overworld",
"displayName": "Mesa Plateau",
"color": 13274213,
"rainfall": 0
},
{
"id": 129,
"name": "sunflower_plains",
"name_legacy": "mutated_plains",
"category": "plains",
"temperature": 0.8,
"precipitation": "rain",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Plains M",
"color": 11918216,
"rainfall": 0.4
},
{
"id": 130,
"name": "desert_lakes",
"name_legacy": "mutated_desert",
"category": "desert",
"temperature": 2,
"precipitation": "none",
"depth": 0.125,
"dimension": "overworld",
"displayName": "Desert M",
"color": 16759872,
"rainfall": 0
},
{
"id": 131,
"name": "gravelly_mountains",
"name_legacy": "mutated_extreme_hills",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Extreme Hills M",
"color": 8947848,
"rainfall": 0.3
},
{
"id": 132,
"name": "flower_forest",
"name_legacy": "mutated_forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Forest M",
"color": 2985545,
"rainfall": 0.8
},
{
"id": 133,
"name": "taiga_mountains",
"name_legacy": "mutated_taiga",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.3,
"dimension": "overworld",
"displayName": "Taiga M",
"color": 3378817,
"rainfall": 0.8
},
{
"id": 134,
"name": "swamp_hills",
"name_legacy": "mutated_swampland",
"category": "swamp",
"temperature": 0.8,
"precipitation": "rain",
"depth": -0.1,
"dimension": "overworld",
"displayName": "Swampland M",
"color": 3145690,
"rainfall": 0.9
},
{
"id": 140,
"name": "ice_spikes",
"name_legacy": "mutated_ice_flats",
"category": "icy",
"temperature": 0,
"precipitation": "snow",
"depth": 0.425,
"dimension": "overworld",
"displayName": "Ice Plains M",
"color": 11853020,
"rainfall": 0.5
},
{
"id": 149,
"name": "modified_jungle",
"name_legacy": "mutated_jungle",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Jungle M",
"color": 8102705,
"rainfall": 0.9
},
{
"id": 151,
"name": "modified_jungle_edge",
"name_legacy": "mutated_jungle_edge",
"category": "jungle",
"temperature": 0.95,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "JungleEdge M",
"color": 9089855,
"rainfall": 0.8
},
{
"id": 155,
"name": "tall_birch_forest",
"name_legacy": "mutated_birch_forest",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Birch Forest M",
"color": 5807212,
"rainfall": 0.6
},
{
"id": 156,
"name": "tall_birch_hills",
"name_legacy": "mutated_birch_forest_hills",
"category": "forest",
"temperature": 0.6,
"precipitation": "rain",
"depth": 0.55,
"dimension": "overworld",
"displayName": "Birch Forest Hills M",
"color": 4687706,
"rainfall": 0.6
},
{
"id": 157,
"name": "dark_forest_hills",
"name_legacy": "mutated_roofed_forest",
"category": "forest",
"temperature": 0.7,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Roofed Forest M",
"color": 6846786,
"rainfall": 0.8
},
{
"id": 158,
"name": "snowy_taiga_mountains",
"name_legacy": "mutated_taiga_cold",
"category": "taiga",
"temperature": -0.5,
"precipitation": "snow",
"depth": 0.3,
"dimension": "overworld",
"displayName": "Cold Taiga M",
"color": 5864818,
"rainfall": 0.4
},
{
"id": 160,
"name": "giant_spruce_taiga",
"name_legacy": "mutated_redwood_taiga",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Mega Taiga M",
"color": 8490617,
"rainfall": 0.8
},
{
"id": 161,
"name": "giant_spruce_taiga_hills",
"name_legacy": "mutated_redwood_taiga_hills",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Mega Taiga Hills M",
"color": 7173990,
"rainfall": 0.8
},
{
"id": 161,
"name": "giant_spruce_taiga_hills",
"name_legacy": "mutated_redwood_taiga_hills",
"category": "taiga",
"temperature": 0.25,
"precipitation": "rain",
"depth": 0.2,
"dimension": "overworld",
"displayName": "Redwood Taiga Hills M",
"color": 7173990,
"rainfall": 0.8
},
{
"id": 162,
"name": "modified_gravelly_mountains",
"name_legacy": "mutated_extreme_hills_with_trees",
"category": "extreme_hills",
"temperature": 0.2,
"precipitation": "rain",
"depth": 1,
"dimension": "overworld",
"displayName": "Extreme Hills+ M",
"color": 7903352,
"rainfall": 0.3
},
{
"id": 163,
"name": "shattered_savanna",
"name_legacy": "mutated_savanna",
"category": "savanna",
"temperature": 1.1,
"precipitation": "none",
"depth": 0.3625,
"dimension": "overworld",
"displayName": "Savanna M",
"color": 15063687,
"rainfall": 0
},
{
"id": 164,
"name": "shattered_savanna_plateau",
"name_legacy": "mutated_savanna_rock",
"category": "savanna",
"temperature": 1,
"precipitation": "none",
"depth": 1.05,
"dimension": "overworld",
"displayName": "Savanna Plateau M",
"color": 13616524,
"rainfall": 0
},
{
"id": 165,
"name": "eroded_badlands",
"name_legacy": "mutated_mesa",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.1,
"dimension": "overworld",
"displayName": "Mesa M",
"color": 16739645,
"rainfall": 0
},
{
"id": 166,
"name": "modified_wooded_badlands_plateau",
"name_legacy": "mutated_mesa_rock",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Mesa Plateau F M",
"color": 14204813,
"rainfall": 0
},
{
"id": 167,
"name": "modified_badlands_plateau",
"name_legacy": "mutated_mesa_clear_rock",
"category": "mesa",
"temperature": 2,
"precipitation": "none",
"depth": 0.45,
"dimension": "overworld",
"displayName": "Mesa Plateau M",
"color": 15905933,
"rainfall": 0
}
]

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