Compare commits
23
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46dfaf1495 | ||
|
|
1b2552492b | ||
|
|
44ec148be4 | ||
|
|
78442c5c68 | ||
|
|
ac12f5c93b | ||
|
|
e58499ed09 | ||
|
|
f4c2762881 | ||
|
|
53d366ae53 | ||
|
|
56ac8e154e | ||
|
|
ac1b298989 | ||
|
|
1d8f70c7fd | ||
|
|
40b584dec4 | ||
|
|
eb83786f9a | ||
|
|
fa70ea36c6 | ||
|
|
7c978e1a7e | ||
|
|
44bfa2280c | ||
|
|
a54b066012 | ||
|
|
4b278b7ee3 | ||
|
|
0ed96837bd | ||
|
|
c911f95665 | ||
|
|
f645f3d78d | ||
|
|
1001c809e5 | ||
|
|
1e6ce06fb0 |
@@ -1,6 +0,0 @@
|
||||
**/*_test.go export-ignore
|
||||
**/testdata export-ignore
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.tmcpr filter=lfs diff=lfs merge=lfs -text
|
||||
*.mcpr filter=lfs diff=lfs merge=lfs -text
|
||||
*.mca filter=lfs diff=lfs merge=lfs -text
|
||||
@@ -0,0 +1,28 @@
|
||||
name: Go
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ["master"]
|
||||
pull_request:
|
||||
branches: ["master"]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: "1.26.2"
|
||||
|
||||
- name: Build
|
||||
run: go build -v ./...
|
||||
|
||||
- name: Vet
|
||||
run: go vet -v ./...
|
||||
|
||||
- name: Test
|
||||
run: go test -v ./...
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
.devres/
|
||||
.idea/
|
||||
.failed_packets/
|
||||
.vscode/
|
||||
.vscode/proto_generator
|
||||
proto_generator
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/admin-else/strom/mc/api"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/api"
|
||||
)
|
||||
|
||||
var cmd = flag.NewFlagSet("api", flag.ContinueOnError)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package cmd_util
|
||||
|
||||
import "github.com/admin-else/strom/mc/api"
|
||||
import "git.anygate.cloud/anygatecloud/strom/mc/api"
|
||||
|
||||
func Account(s string) (a *api.Account, err error) {
|
||||
if len(s) > 16 {
|
||||
|
||||
@@ -7,9 +7,9 @@ import (
|
||||
"os"
|
||||
"slices"
|
||||
|
||||
mcdata "github.com/admin-else/strom/mc/data"
|
||||
"github.com/admin-else/strom/mc/proto_generated"
|
||||
"github.com/admin-else/strom/mc/util"
|
||||
mcdata "git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/util"
|
||||
)
|
||||
|
||||
// strom data 1.21.11 blocks id 0 name => air
|
||||
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/admin-else/strom/mc/level/anvil"
|
||||
"github.com/admin-else/strom/mc/nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level/anvil"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/nbt"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
+15
-17
@@ -9,22 +9,21 @@ import (
|
||||
"runtime/debug"
|
||||
"slices"
|
||||
|
||||
"github.com/admin-else/strom/cmd/strom/api"
|
||||
"github.com/admin-else/strom/cmd/strom/data"
|
||||
"github.com/admin-else/strom/cmd/strom/extract_mca"
|
||||
"github.com/admin-else/strom/cmd/strom/mca_to_tmcpr"
|
||||
"github.com/admin-else/strom/cmd/strom/messenger"
|
||||
"github.com/admin-else/strom/cmd/strom/offline_uuid"
|
||||
"github.com/admin-else/strom/cmd/strom/packet_info"
|
||||
"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" // 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/registry_data_hunter"
|
||||
"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"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/api"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/extract_mca"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/mca_to_tmcpr"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/messenger"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/offline_uuid"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/packet_info"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/packet_inspector"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/print_nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/print_replay"
|
||||
// "git.anygate.cloud/anygatecloud/strom/cmd/strom/raw_capture" // removed: use tcpflow instead for raw TCP capture
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/raw_to_tmcpr"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/serve_tmcpr"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/serve_world"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/status"
|
||||
)
|
||||
|
||||
var ExpectedASubcommandErr = errors.New("expected a subcommand")
|
||||
@@ -64,7 +63,6 @@ var subcommands = map[string]func(args []string) error{
|
||||
"print-replay": print_replay.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,
|
||||
"registry-data-hunter": registry_data_hunter.Run,
|
||||
"serve-world": serve_world.Run,
|
||||
"mca-to-tmcpr": mca_to_tmcpr.Run,
|
||||
"serve-tmcpr": serve_tmcpr.Run,
|
||||
|
||||
@@ -6,13 +6,14 @@ import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/admin-else/strom/mc/level"
|
||||
"github.com/admin-else/strom/mc/level/anvil"
|
||||
"github.com/admin-else/strom/mc/nbt"
|
||||
"github.com/admin-else/strom/mc/proto/replay"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
|
||||
"github.com/admin-else/strom/mc/util"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level/anvil"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto/replay"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_11"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/util"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -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
|
||||
}
|
||||
|
||||
+10
-10
@@ -7,16 +7,16 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/admin-else/strom/cmd/strom/cmd_util"
|
||||
"github.com/admin-else/strom/mc/bot/chat"
|
||||
"github.com/admin-else/strom/mc/bot/keepalive"
|
||||
"github.com/admin-else/strom/mc/bot/world"
|
||||
"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_generated/v1_21_11"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/cmd/strom/cmd_util"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/bot/chat"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/bot/keepalive"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/bot/world"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/client"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_11"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
func stror(a, b string) string {
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"github.com/admin-else/strom/mc/crypto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/crypto"
|
||||
)
|
||||
|
||||
var cmd = flag.NewFlagSet("offline-uuid", flag.ContinueOnError)
|
||||
|
||||
@@ -5,10 +5,10 @@ import (
|
||||
"fmt"
|
||||
"strconv"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"github.com/admin-else/strom/mc/proto_generated"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated"
|
||||
)
|
||||
|
||||
var cmd = flag.NewFlagSet("packet-info", flag.ContinueOnError)
|
||||
|
||||
@@ -7,15 +7,15 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/admin-else/strom/mc/api"
|
||||
"github.com/admin-else/strom/mc/client"
|
||||
"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_11"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
"github.com/admin-else/strom/mc/text"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/api"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/client"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_11"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/server"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/text"
|
||||
)
|
||||
|
||||
var Cmd = flag.NewFlagSet("packet-inspector", flag.ContinueOnError)
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/admin-else/strom/mc/nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/nbt"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
@@ -4,15 +4,15 @@ import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/%v"
|
||||
generated "git.anygate.cloud/anygatecloud/strom/mc/proto_generated/%v"
|
||||
)
|
||||
|
||||
// Error: %v
|
||||
func TestFailedPacket%10X(t *testing.T) {
|
||||
p := &generated.%v{}
|
||||
b := bytes.NewBuffer(%#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")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,9 +15,8 @@ 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"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -29,8 +28,6 @@ var (
|
||||
DirectionFlag = cmd.String("direction", "clientbound", "Packet direction: clientbound (ToClient) or serverbound (ToServer)")
|
||||
)
|
||||
|
||||
// TODO: maybe use the proto replay api
|
||||
|
||||
//go:embed failed_packet.go.tmpl
|
||||
var TestSrcF string
|
||||
|
||||
@@ -46,11 +43,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)
|
||||
@@ -212,6 +206,10 @@ func Run(args []string) (err error) {
|
||||
}
|
||||
totalPackets++
|
||||
}
|
||||
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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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 "git.anygate.cloud/anygatecloud/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)
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,8 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/admin-else/strom/mc/proto/replay"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto/replay"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
)
|
||||
|
||||
var Cmd = flag.NewFlagSet("raw-to-tmcpr", flag.ContinueOnError)
|
||||
@@ -20,8 +20,9 @@ var ClientboundIn = Cmd.String("clientbound", "", "raw tcpflow file for clientbo
|
||||
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, status, play")
|
||||
var ServerboundState = Cmd.String("serverbound-state", "handshake", "initial state for serverbound: handshake, login, status, play")
|
||||
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
|
||||
@@ -32,6 +33,7 @@ type captureReader struct {
|
||||
haveStartTime bool
|
||||
direction proto_base.Direction
|
||||
pendingThreshold int32
|
||||
useConfig bool
|
||||
}
|
||||
|
||||
func (cr *captureReader) setStartTime() {
|
||||
@@ -123,13 +125,21 @@ func (cr *captureReader) trackState(packetBytes []byte) {
|
||||
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:
|
||||
}
|
||||
@@ -172,12 +182,14 @@ func Run(args []string) (err error) {
|
||||
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, status, play)", name)
|
||||
return 0, fmt.Errorf("unknown state: %s (valid: handshake, login, config, status, play)", name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -188,7 +200,7 @@ func Run(args []string) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
compressionThreshold, err = processFile(*ClientboundIn, *ClientboundOut, state, proto_base.ToClient, -1)
|
||||
compressionThreshold, err = processFile(*ClientboundIn, *ClientboundOut, state, proto_base.ToClient, -1, *UseConfig)
|
||||
if err != nil {
|
||||
return fmt.Errorf("clientbound: %w", err)
|
||||
}
|
||||
@@ -199,7 +211,7 @@ func Run(args []string) (err error) {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = processFile(*ServerboundIn, *ServerboundOut, state, proto_base.ToServer, compressionThreshold)
|
||||
_, err = processFile(*ServerboundIn, *ServerboundOut, state, proto_base.ToServer, compressionThreshold, *UseConfig)
|
||||
if err != nil {
|
||||
return fmt.Errorf("serverbound: %w", err)
|
||||
}
|
||||
@@ -208,7 +220,7 @@ func Run(args []string) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func processFile(inPath, outPath string, initial proto_base.State, dir proto_base.Direction, initialThreshold int32) (finalThreshold int32, err error) {
|
||||
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)
|
||||
@@ -228,6 +240,7 @@ func processFile(inPath, outPath string, initial proto_base.State, dir proto_bas
|
||||
threshold: -1,
|
||||
direction: dir,
|
||||
pendingThreshold: initialThreshold,
|
||||
useConfig: useConfig,
|
||||
}
|
||||
if dir == proto_base.ToClient {
|
||||
cr.threshold = initialThreshold
|
||||
|
||||
@@ -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,11 +9,11 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"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_generated/v1_21_8"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto/replay"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/server"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
|
||||
@@ -8,14 +8,14 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/admin-else/strom/mc/event"
|
||||
"github.com/admin-else/strom/mc/level"
|
||||
"github.com/admin-else/strom/mc/level/anvil"
|
||||
"github.com/admin-else/strom/mc/nbt"
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
"github.com/admin-else/strom/mc/util"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level/anvil"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/nbt"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/server"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/util"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
|
||||
@@ -6,11 +6,11 @@ import (
|
||||
"log/slog"
|
||||
"time"
|
||||
|
||||
"github.com/admin-else/strom/mc/client"
|
||||
"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_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/client"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
var cmd = flag.NewFlagSet("status", flag.ContinueOnError)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
module github.com/admin-else/strom
|
||||
module git.anygate.cloud/anygatecloud/strom
|
||||
|
||||
go 1.26.2
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"github.com/admin-else/strom/mc/crypto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/crypto"
|
||||
)
|
||||
|
||||
// NewOfflineAccount creates an offline-mode Account with a UUID derived from the
|
||||
|
||||
+12
-4
@@ -12,9 +12,10 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"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"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/api"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_11"
|
||||
"git.anygate.cloud/anygatecloud/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)
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package keepalive
|
||||
|
||||
import (
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
type mod struct {
|
||||
|
||||
+3
-3
@@ -5,9 +5,9 @@ import (
|
||||
"errors"
|
||||
"sync"
|
||||
|
||||
"github.com/admin-else/strom/mc/level"
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/level"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_11"
|
||||
)
|
||||
|
||||
var (
|
||||
|
||||
+4
-4
@@ -5,10 +5,10 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/server"
|
||||
)
|
||||
|
||||
// Connect connects to the given address note that it does not resolve the SRV records it's just a raw net.Dial
|
||||
|
||||
@@ -4,10 +4,10 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"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_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
type ConfigIgnorer struct {
|
||||
|
||||
@@ -4,9 +4,9 @@ import (
|
||||
"net"
|
||||
"strconv"
|
||||
|
||||
"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"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
// MakeHandshakePacket creates a handshake packet using the connection's remote address as the server host.
|
||||
|
||||
+41
-42
@@ -9,15 +9,16 @@ import (
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/admin-else/strom/mc/api"
|
||||
"github.com/admin-else/strom/mc/crypto"
|
||||
"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_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"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/api"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/crypto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_16_5"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v26_2"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/text"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
@@ -56,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
|
||||
}
|
||||
@@ -86,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
|
||||
}
|
||||
@@ -101,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 {
|
||||
@@ -114,21 +122,6 @@ func (s *LoginClient) OnDisconnect(packet *v1_21_8.LoginToClientPacketDisconnect
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnDisconnectV1_8(packet *v1_8.LoginToClientPacketDisconnect) (err error) {
|
||||
var reason text.Component
|
||||
err = json.Unmarshal([]byte(packet.Reason), &reason)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = KickedDuringLoginErr{reason}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnCompressV1_8(packet *v1_8.LoginToClientPacketCompress) (err error) {
|
||||
s.SetCompressionThreshold(packet.Threshold)
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnSuccessV1_8(success *v1_8.LoginToClientPacketSuccess) (err error) {
|
||||
s.GivenAccount = &v1_21_8.LoginToClientPacketSuccess{
|
||||
Uuid: uuid.MustParse(success.Uuid),
|
||||
@@ -162,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
|
||||
}
|
||||
@@ -181,14 +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.RegisterCritical(lc.OnCompressV1_8)
|
||||
lc.RegisterCritical(lc.OnDisconnectV1_8)
|
||||
lc.RegisterCritical(lc.OnSuccessV1_8)
|
||||
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 != "" {
|
||||
@@ -286,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
|
||||
@@ -327,7 +326,7 @@ 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
|
||||
}
|
||||
|
||||
@@ -4,10 +4,10 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
"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"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
func assertClientSendConvertible(t *testing.T, srcType reflect.Type, name string, state proto_base.State, direction proto_base.Direction, targetVersion int32) {
|
||||
|
||||
+9
-29
@@ -5,12 +5,12 @@ import (
|
||||
"encoding/json"
|
||||
"time"
|
||||
|
||||
"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_21_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/event"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_base"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_21_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/proto_generated/v1_8"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/server"
|
||||
)
|
||||
|
||||
type StatusClient struct {
|
||||
@@ -20,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 {
|
||||
@@ -31,24 +31,7 @@ func (s *StatusClient) OnStatus(p *v1_21_8.StatusToClientPacketServerInfo) (err
|
||||
return
|
||||
}
|
||||
|
||||
func (s *StatusClient) OnPong(p *v1_21_8.StatusToClientPacketPing) (err error) {
|
||||
s.PingReceiveTime = time.Now()
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *StatusClient) OnStatusV1_8(p *v1_8.StatusToClientPacketServerInfo) (err error) {
|
||||
s.Status = p.Response
|
||||
s.PingSendTime = time.Now()
|
||||
if s.DoPingRoundTripTime {
|
||||
err = s.Send(&v1_21_8.StatusToServerPacketPing{Time: s.PingSendTime.UnixMilli()})
|
||||
} else {
|
||||
err = event.HandlerDoneErr{}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *StatusClient) OnPongV1_8(p *v1_8.StatusToClientPacketPing) (err error) {
|
||||
func (s *StatusClient) OnPong(p *v1_8.StatusToClientPacketPing) (err error) {
|
||||
s.PingReceiveTime = time.Now()
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
@@ -75,10 +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.RegisterCritical(s.OnStatusV1_8)
|
||||
s.RegisterCritical(s.OnPongV1_8)
|
||||
s.RegisterUntil("26.2", s.OnStatus, s.OnPong)
|
||||
|
||||
p, err := MakeHandshakePacketAddr(s.Conn, proto_base.Status, addr)
|
||||
if err != nil {
|
||||
|
||||
@@ -3,7 +3,7 @@ package data_test
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
)
|
||||
|
||||
func TestLookupBiomeById(t *testing.T) {
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ import (
|
||||
"slices"
|
||||
"strconv"
|
||||
|
||||
"github.com/admin-else/strom/mc/util"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/util"
|
||||
)
|
||||
|
||||
// {
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
"git.anygate.cloud/anygatecloud/strom/mc/data"
|
||||
)
|
||||
|
||||
func TestLookupBlockByStateId(t *testing.T) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,652 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"displayName": "Air",
|
||||
"name": "air",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": true,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"displayName": "Stone",
|
||||
"name": "stone",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"displayName": "Grass Block",
|
||||
"name": "grass block",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"displayName": "Dirt",
|
||||
"name": "dirt",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"displayName": "Cobblestone",
|
||||
"name": "cobblestone",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"displayName": "Wood Planks",
|
||||
"name": "wood planks",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"displayName": "Sapling",
|
||||
"name": "sapling",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"displayName": "Bedrock",
|
||||
"name": "bedrock",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"displayName": "Flowing Water",
|
||||
"name": "flowing water",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": true,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"displayName": "Stationary Water",
|
||||
"name": "stationary water",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": true,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"displayName": "Flowing Lava",
|
||||
"name": "flowing lava",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"displayName": "Stationary Lava",
|
||||
"name": "stationary lava",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": false,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"displayName": "Sand",
|
||||
"name": "sand",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"displayName": "Gravel",
|
||||
"name": "gravel",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"displayName": "Gold Ore",
|
||||
"name": "gold ore",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"displayName": "Iron Ore",
|
||||
"name": "iron ore",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"displayName": "Coal Ore",
|
||||
"name": "coal ore",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"displayName": "Wood",
|
||||
"name": "wood",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"displayName": "Leaves",
|
||||
"name": "leaves",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"displayName": "Sponge",
|
||||
"name": "sponge",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"displayName": "Glass",
|
||||
"name": "glass",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": true,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"displayName": "Red Cloth",
|
||||
"name": "red cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"displayName": "Orange Cloth",
|
||||
"name": "orange cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"displayName": "Yellow Cloth",
|
||||
"name": "yellow cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"displayName": "Lime Cloth",
|
||||
"name": "lime cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"displayName": "Green Cloth",
|
||||
"name": "green cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"displayName": "Aqua Green Cloth",
|
||||
"name": "aqua green cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"displayName": "Cyan Cloth",
|
||||
"name": "cyan cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"displayName": "Blue Cloth",
|
||||
"name": "blue cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"displayName": "Purple Cloth",
|
||||
"name": "purple cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"displayName": "Indigo Cloth",
|
||||
"name": "indigo cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"displayName": "Violet Cloth",
|
||||
"name": "violet cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"displayName": "Magenta Cloth",
|
||||
"name": "magenta cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"displayName": "Pink Cloth",
|
||||
"name": "pink cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"displayName": "Black Cloth",
|
||||
"name": "black cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"displayName": "Gray Cloth",
|
||||
"name": "gray cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"displayName": "White Cloth",
|
||||
"name": "white cloth",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"displayName": "Dandelion",
|
||||
"name": "dandelion",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"displayName": "Rose",
|
||||
"name": "rose",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"displayName": "Brown Mushroom",
|
||||
"name": "brown mushroom",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"displayName": "Red Mushroom",
|
||||
"name": "red mushroom",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"displayName": "Block of Gold",
|
||||
"name": "block of gold",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"displayName": "Block of Iron",
|
||||
"name": "block of iron",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"displayName": "Double Slab",
|
||||
"name": "double slab",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"displayName": "Slab",
|
||||
"name": "slab",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"displayName": "Brick",
|
||||
"name": "brick",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"displayName": "TNT",
|
||||
"name": "tnt",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"displayName": "Bookshelf",
|
||||
"name": "bookshelf",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"displayName": "Moss Stone",
|
||||
"name": "moss stone",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"displayName": "Obsidian",
|
||||
"name": "obsidian",
|
||||
"hardness": 0,
|
||||
"stackSize": 0,
|
||||
"diggable": true,
|
||||
"boundingBox": "empty",
|
||||
"drops": [],
|
||||
"transparent": false,
|
||||
"emitLight": 0,
|
||||
"filterLight": 0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,138 @@
|
||||
!version: 0.30c
|
||||
|
||||
^types:
|
||||
u8: native
|
||||
string: native
|
||||
i8: native
|
||||
i16: native
|
||||
byte_array: native
|
||||
|
||||
^toServer.types:
|
||||
packet_player_identification:
|
||||
protocol_version: u8
|
||||
username: string
|
||||
verification_key: string
|
||||
unused: i8
|
||||
packet_set_block:
|
||||
x: i16
|
||||
y: i16
|
||||
z: i16
|
||||
mode: u8
|
||||
block_type: u8
|
||||
packet_position:
|
||||
player_id: u8
|
||||
x: i16
|
||||
y: i16
|
||||
z: i16
|
||||
yaw: u8
|
||||
pitch: u8
|
||||
packet_message:
|
||||
unused: u8
|
||||
message: string
|
||||
packet:
|
||||
name: u8 =>
|
||||
0x00: player_identification
|
||||
0x05: set_block
|
||||
0x08: position
|
||||
0x0d: message
|
||||
params: name ?
|
||||
if player_identification: packet_player_identification
|
||||
if set_block: packet_set_block
|
||||
if position: packet_position
|
||||
if message: packet_message
|
||||
|
||||
^toClient.types:
|
||||
packet_server_identification:
|
||||
protocol_version: u8
|
||||
server_name: string
|
||||
server_motd: string
|
||||
user_type: i8
|
||||
packet_ping:
|
||||
# Empty
|
||||
packet_level_initialize:
|
||||
# Empty
|
||||
packet_level_data_chunk:
|
||||
chunk_data: byte_array
|
||||
percent_complete: u8
|
||||
packet_level_finalize:
|
||||
x_size: i16
|
||||
y_size: i16
|
||||
z_size: i16
|
||||
packet_set_block:
|
||||
x: i16
|
||||
y: i16
|
||||
z: i16
|
||||
block_type: u8
|
||||
packet_spawn_player:
|
||||
player_id: i8
|
||||
player_name: string
|
||||
x: i16
|
||||
y: i16
|
||||
z: i16
|
||||
yaw: u8
|
||||
pitch: u8
|
||||
packet_player_teleport:
|
||||
player_id: i8
|
||||
x: i16
|
||||
y: i16
|
||||
z: i16
|
||||
yaw: u8
|
||||
pitch: u8
|
||||
packet_position_and_orientation_update:
|
||||
player_id: i8
|
||||
change_in_x: i8
|
||||
change_in_y: i8
|
||||
change_in_z: i8
|
||||
yaw: i8
|
||||
pitch: i8
|
||||
packet_position_update:
|
||||
player_id: i8
|
||||
change_in_x: i8
|
||||
change_in_y: i8
|
||||
change_in_z: i8
|
||||
packet_orientation_update:
|
||||
player_id: i8
|
||||
yaw: u8
|
||||
pitch: u8
|
||||
packet_despawn_player:
|
||||
player_id: i8
|
||||
packet_message:
|
||||
player_id: i8
|
||||
message: string
|
||||
packet_disconnect_player:
|
||||
disconnect_reason: string
|
||||
packet_update_user_type:
|
||||
user_type: u8
|
||||
packet:
|
||||
name: u8 =>
|
||||
0x00: server_identification
|
||||
0x01: ping
|
||||
0x02: level_initialize
|
||||
0x03: level_data_chunk
|
||||
0x04: level_finalize
|
||||
0x06: set_block
|
||||
0x07: spawn_player
|
||||
0x08: player_teleport
|
||||
0x09: position_and_orientation_update
|
||||
0x0a: position_update
|
||||
0x0b: orientation_update
|
||||
0x0c: despawn_player
|
||||
0x0d: message
|
||||
0x0e: disconnect_player
|
||||
0x0f: update_user_type
|
||||
params: name ?
|
||||
if server_identification: packet_server_identification
|
||||
if ping: packet_ping
|
||||
if level_initialize: packet_level_initialize
|
||||
if level_data_chunk: packet_level_data_chunk
|
||||
if level_finalize: packet_level_finalize
|
||||
if set_block: packet_set_block
|
||||
if spawn_player: packet_spawn_player
|
||||
if player_teleport: packet_player_teleport
|
||||
if position_and_orientation_update: packet_position_and_orientation_update
|
||||
if position_update: packet_position_update
|
||||
if orientation_update: packet_orientation_update
|
||||
if despawn_player: packet_despawn_player
|
||||
if message: packet_message
|
||||
if disconnect_player: packet_disconnect_player
|
||||
if update_user_type: packet_update_user_type
|
||||
@@ -0,0 +1,446 @@
|
||||
{
|
||||
"types": {
|
||||
"u8": "native",
|
||||
"string": "native",
|
||||
"i8": "native",
|
||||
"i16": "native",
|
||||
"byte_array": "native"
|
||||
},
|
||||
"toServer": {
|
||||
"types": {
|
||||
"packet_player_identification": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "protocol_version",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "username",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "verification_key",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "unused",
|
||||
"type": "i8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_set_block": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "x",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "mode",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "block_type",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_position": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "x",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_message": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "unused",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "message",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "name",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "u8",
|
||||
"mappings": {
|
||||
"0x00": "player_identification",
|
||||
"0x05": "set_block",
|
||||
"0x08": "position",
|
||||
"0x0d": "message"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "name",
|
||||
"fields": {
|
||||
"player_identification": "packet_player_identification",
|
||||
"set_block": "packet_set_block",
|
||||
"position": "packet_position",
|
||||
"message": "packet_message"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"toClient": {
|
||||
"types": {
|
||||
"packet_server_identification": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "protocol_version",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "server_name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "server_motd",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "user_type",
|
||||
"type": "i8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_ping": [
|
||||
"container",
|
||||
[]
|
||||
],
|
||||
"packet_level_initialize": [
|
||||
"container",
|
||||
[]
|
||||
],
|
||||
"packet_level_data_chunk": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "chunk_data",
|
||||
"type": "byte_array"
|
||||
},
|
||||
{
|
||||
"name": "percent_complete",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_level_finalize": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "x_size",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y_size",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z_size",
|
||||
"type": "i16"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_set_block": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "x",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "block_type",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_spawn_player": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "player_name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "x",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_player_teleport": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "x",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "y",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "z",
|
||||
"type": "i16"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_position_and_orientation_update": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_x",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_y",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_z",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "i8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_position_update": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_x",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_y",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "change_in_z",
|
||||
"type": "i8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_orientation_update": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "yaw",
|
||||
"type": "u8"
|
||||
},
|
||||
{
|
||||
"name": "pitch",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_despawn_player": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_message": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "player_id",
|
||||
"type": "i8"
|
||||
},
|
||||
{
|
||||
"name": "message",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_disconnect_player": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "disconnect_reason",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet_update_user_type": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "user_type",
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
"packet": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "name",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "u8",
|
||||
"mappings": {
|
||||
"0x00": "server_identification",
|
||||
"0x01": "ping",
|
||||
"0x02": "level_initialize",
|
||||
"0x03": "level_data_chunk",
|
||||
"0x04": "level_finalize",
|
||||
"0x06": "set_block",
|
||||
"0x07": "spawn_player",
|
||||
"0x08": "player_teleport",
|
||||
"0x09": "position_and_orientation_update",
|
||||
"0x0a": "position_update",
|
||||
"0x0b": "orientation_update",
|
||||
"0x0c": "despawn_player",
|
||||
"0x0d": "message",
|
||||
"0x0e": "disconnect_player",
|
||||
"0x0f": "update_user_type"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "name",
|
||||
"fields": {
|
||||
"server_identification": "packet_server_identification",
|
||||
"ping": "packet_ping",
|
||||
"level_initialize": "packet_level_initialize",
|
||||
"level_data_chunk": "packet_level_data_chunk",
|
||||
"level_finalize": "packet_level_finalize",
|
||||
"set_block": "packet_set_block",
|
||||
"spawn_player": "packet_spawn_player",
|
||||
"player_teleport": "packet_player_teleport",
|
||||
"position_and_orientation_update": "packet_position_and_orientation_update",
|
||||
"position_update": "packet_position_update",
|
||||
"orientation_update": "packet_orientation_update",
|
||||
"despawn_player": "packet_despawn_player",
|
||||
"message": "packet_message",
|
||||
"disconnect_player": "packet_disconnect_player",
|
||||
"update_user_type": "packet_update_user_type"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"version":7,
|
||||
"minecraftVersion":"0.30c",
|
||||
"majorVersion":"0.30c"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"version":201,
|
||||
"minecraftVersion":"16w20a",
|
||||
"majorVersion":"1.10"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"version":210,
|
||||
"minecraftVersion":"1.10.1",
|
||||
"majorVersion":"1.10"
|
||||
}
|
||||
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 @@
|
||||
{
|
||||
"version":210,
|
||||
"minecraftVersion":"1.10.2",
|
||||
"majorVersion":"1.10"
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
[
|
||||
{
|
||||
"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
|
||||
},
|
||||
{
|
||||
"name": "luck",
|
||||
"resource": "generic.luck",
|
||||
"default": 0,
|
||||
"min": -1024,
|
||||
"max": 1024
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,797 @@
|
||||
[
|
||||
{
|
||||
"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": 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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,294 @@
|
||||
{"blocks":{"air":0,
|
||||
"stone":1,
|
||||
"grass":1,
|
||||
"dirt":1,
|
||||
"cobblestone":1,
|
||||
"planks":1,
|
||||
"sapling":0,
|
||||
"bedrock":1,
|
||||
"flowing_water":0,
|
||||
"water":0,
|
||||
"flowing_lava":0,
|
||||
"lava":0,
|
||||
"sand":1,
|
||||
"gravel":1,
|
||||
"gold_ore":1,
|
||||
"iron_ore":1,
|
||||
"coal_ore":1,
|
||||
"log":1,
|
||||
"leaves":1,
|
||||
"sponge":1,
|
||||
"glass":1,
|
||||
"lapis_ore":1,
|
||||
"lapis_block":1,
|
||||
"dispenser":1,
|
||||
"sandstone":1,
|
||||
"noteblock":1,
|
||||
"bed":2,
|
||||
"golden_rail":0,
|
||||
"detector_rail":0,
|
||||
"sticky_piston":[1,1,1,1,1,1,0,0,3,4,5,6,7,8,0,0],
|
||||
"web":0,
|
||||
"tallgrass":0,
|
||||
"deadbush":0,
|
||||
"piston":[1,1,1,1,1,1,0,0,3,4,5,6,7,8,0,0],
|
||||
"piston_head":[10,11,9,12,13,14,0,0,10,11,9,12,13,14,0,0],
|
||||
"wool":1,
|
||||
"piston_extension":0,
|
||||
"yellow_flower":0,
|
||||
"red_flower":0,
|
||||
"brown_mushroom":0,
|
||||
"red_mushroom":0,
|
||||
"gold_block":1,
|
||||
"iron_block":1,
|
||||
"double_stone_slab":1,
|
||||
"stone_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"brick_block":1,
|
||||
"tnt":1,
|
||||
"bookshelf":1,
|
||||
"mossy_cobblestone":1,
|
||||
"obsidian":1,
|
||||
"torch":0,
|
||||
"fire":0,
|
||||
"mob_spawner":1,
|
||||
"oak_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"chest":25,
|
||||
"redstone_wire":0,
|
||||
"diamond_ore":1,
|
||||
"diamond_block":1,
|
||||
"crafting_table":1,
|
||||
"wheat":0,
|
||||
"farmland":26,
|
||||
"furnace":1,
|
||||
"lit_furnace":1,
|
||||
"standing_sign":0,
|
||||
"wooden_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"ladder":[27,27,27,29,30,28,27,27,27,29,30,28,27,27,27,29],
|
||||
"rail":0,
|
||||
"stone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"wall_sign":0,
|
||||
"lever":0,
|
||||
"stone_pressure_plate":0,
|
||||
"iron_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"wooden_pressure_plate":0,
|
||||
"redstone_ore":1,
|
||||
"lit_redstone_ore":1,
|
||||
"unlit_redstone_torch":0,
|
||||
"redstone_torch":0,
|
||||
"stone_button":0,
|
||||
"snow_layer":[0,31,32,33,15,34,4,35,0,31,32,33,15,34,4,35],
|
||||
"ice":1,
|
||||
"snow":1,
|
||||
"cactus":36,
|
||||
"clay":1,
|
||||
"reeds":0,
|
||||
"jukebox":1,
|
||||
"fence":37,
|
||||
"pumpkin":1,
|
||||
"netherrack":1,
|
||||
"soul_sand":35,
|
||||
"glowstone":1,
|
||||
"portal":0,
|
||||
"lit_pumpkin":1,
|
||||
"cake":[38,39,40,41,42,43,44,0,0,0,0,0,0,0,0,0],
|
||||
"unpowered_repeater":31,
|
||||
"powered_repeater":31,
|
||||
"stained_glass":1,
|
||||
"trapdoor":[45,45,45,45,27,29,30,28,46,46,46,46,27,29,30,28],
|
||||
"monster_egg":1,
|
||||
"stonebrick":1,
|
||||
"brown_mushroom_block":1,
|
||||
"red_mushroom_block":1,
|
||||
"iron_bars":47,
|
||||
"glass_pane":47,
|
||||
"melon_block":1,
|
||||
"pumpkin_stem":0,
|
||||
"melon_stem":0,
|
||||
"vine":0,
|
||||
"fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"stone_brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"mycelium":1,
|
||||
"waterlily":50,
|
||||
"nether_brick":1,
|
||||
"nether_brick_fence":37,
|
||||
"nether_brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"nether_wart":0,
|
||||
"enchanting_table":4,
|
||||
"brewing_stand":51,
|
||||
"cauldron":52,
|
||||
"end_portal":0,
|
||||
"end_portal_frame":[81,81,81,81,82,82,82,82,81,81,81,81,82,82,82,82],
|
||||
"end_stone":1,
|
||||
"dragon_egg":53,
|
||||
"redstone_lamp":1,
|
||||
"lit_redstone_lamp":1,
|
||||
"double_wooden_slab":1,
|
||||
"wooden_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"cocoa":[55,56,54,57,58,59,60,61,62,63,64,65,0,0,0,0],
|
||||
"sandstone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"emerald_ore":1,
|
||||
"ender_chest":25,
|
||||
"tripwire_hook":0,
|
||||
"tripwire":0,
|
||||
"emerald_block":1,
|
||||
"spruce_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"birch_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"jungle_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"command_block":1,
|
||||
"beacon":1,
|
||||
"cobblestone_wall":66,
|
||||
"flower_pot":67,
|
||||
"carrots":0,
|
||||
"potatoes":0,
|
||||
"wooden_button":0,
|
||||
"skull":[69,69,68,70,71,72,69,69,69,69,68,70,71,72,69,69],
|
||||
"anvil":[73,74,73,74,73,74,73,74,73,74,73,74,0,0,0,0],
|
||||
"trapped_chest":25,
|
||||
"light_weighted_pressure_plate":0,
|
||||
"heavy_weighted_pressure_plate":0,
|
||||
"unpowered_comparator":31,
|
||||
"powered_comparator":31,
|
||||
"daylight_detector":33,
|
||||
"redstone_block":1,
|
||||
"quartz_ore":1,
|
||||
"hopper":75,
|
||||
"quartz_block":1,
|
||||
"quartz_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"activator_rail":0,
|
||||
"dropper":1,
|
||||
"stained_hardened_clay":1,
|
||||
"stained_glass_pane":47,
|
||||
"leaves2":1,"log2":1,"acacia_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"dark_oak_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"slime":1,
|
||||
"barrier":1,
|
||||
"iron_trapdoor":[45,45,45,45,27,29,30,28,46,46,46,46,27,29,30,28],
|
||||
"prismarine":1,
|
||||
"sea_lantern":1,
|
||||
"hay_block":1,
|
||||
"carpet":76,
|
||||
"hardened_clay":1,
|
||||
"coal_block":1,
|
||||
"packed_ice":1,
|
||||
"double_plant":0,
|
||||
"standing_banner":0,
|
||||
"wall_banner":0,
|
||||
"daylight_detector_inverted":33,
|
||||
"red_sandstone":1,
|
||||
"red_sandstone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"double_stone_slab2":1,"stone_slab2":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"spruce_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"birch_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"jungle_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"dark_oak_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"acacia_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"spruce_fence":37,
|
||||
"birch_fence":37,
|
||||
"jungle_fence":37,
|
||||
"dark_oak_fence":37,
|
||||
"acacia_fence":37,
|
||||
"spruce_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"birch_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"jungle_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"acacia_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"dark_oak_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"end_rod":[77,77,78,78,79,79,77,77,78,78,79,79,77,77,78,78],
|
||||
"chorus_plant":80,
|
||||
"chorus_flower":1,
|
||||
"purpur_block":1,
|
||||
"purpur_pillar":1,
|
||||
"purpur_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"purpur_double_slab":1,
|
||||
"purpur_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"end_bricks":1,
|
||||
"beetroots":0,
|
||||
"grass_path":26,
|
||||
"end_gateway":0,
|
||||
"repeating_command_block":1,
|
||||
"chain_command_block":1,
|
||||
"frosted_ice":1,
|
||||
"structure_block":1},
|
||||
"shapes":{"0":[],
|
||||
"1":[[0.0,0.0,0.0,1.0,1.0,1.0]],
|
||||
"2":[[0.0,0.0,0.0,1.0,0.5625,1.0]],
|
||||
"3":[[0.0,0.25,0.0,1.0,1.0,1.0]],
|
||||
"4":[[0.0,0.0,0.0,1.0,0.75,1.0]],
|
||||
"5":[[0.0,0.0,0.25,1.0,1.0,1.0]],
|
||||
"6":[[0.0,0.0,0.0,1.0,1.0,0.75]],
|
||||
"7":[[0.25,0.0,0.0,1.0,1.0,1.0]],
|
||||
"8":[[0.0,0.0,0.0,0.75,1.0,1.0]],
|
||||
"9":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.25]],
|
||||
"10":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.25,0.625]],
|
||||
"11":[[0.0,0.75,0.0,1.0,1.0,1.0],[0.375,-0.25,0.375,0.625,0.75,0.625]],
|
||||
"12":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,-0.25,0.625,0.625,0.75]],
|
||||
"13":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.25,0.625,0.625]],
|
||||
"14":[[0.75,0.0,0.0,1.0,1.0,1.0],[-0.25,0.375,0.375,0.75,0.625,0.625]],
|
||||
"15":[[0.0,0.0,0.0,1.0,0.5,1.0]],
|
||||
"16":[[0.0,0.5,0.0,1.0,1.0,1.0]],
|
||||
"17":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],
|
||||
"18":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],
|
||||
"19":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],
|
||||
"20":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0]],
|
||||
"21":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,0.5,1.0]],
|
||||
"22":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,0.5,0.5,1.0]],
|
||||
"23":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.5,1.0,0.5,1.0]],
|
||||
"24":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,1.0,0.5,0.5]],
|
||||
"25":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],
|
||||
"26":[[0.0,0.0,0.0,1.0,0.9375,1.0]],
|
||||
"27":[[0.0,0.0,0.8125,1.0,1.0,1.0]],
|
||||
"28":[[0.0,0.0,0.0,0.1875,1.0,1.0]],
|
||||
"29":[[0.0,0.0,0.0,1.0,1.0,0.1875]],
|
||||
"30":[[0.8125,0.0,0.0,1.0,1.0,1.0]],
|
||||
"31":[[0.0,0.0,0.0,1.0,0.125,1.0]],
|
||||
"32":[[0.0,0.0,0.0,1.0,0.25,1.0]],
|
||||
"33":[[0.0,0.0,0.0,1.0,0.375,1.0]],
|
||||
"34":[[0.0,0.0,0.0,1.0,0.625,1.0]],
|
||||
"35":[[0.0,0.0,0.0,1.0,0.875,1.0]],
|
||||
"36":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],
|
||||
"37":[[0.375,0.0,0.375,0.625,1.5,0.625]],
|
||||
"38":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"39":[[0.1875,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"40":[[0.3125,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"41":[[0.4375,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"42":[[0.5625,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"43":[[0.6875,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"44":[[0.8125,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"45":[[0.0,0.0,0.0,1.0,0.1875,1.0]],
|
||||
"46":[[0.0,0.8125,0.0,1.0,1.0,1.0]],
|
||||
"47":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],
|
||||
"48":[[0.0,0.0,0.375,1.0,1.5,0.625]],
|
||||
"49":[[0.375,0.0,0.0,0.625,1.5,1.0]],
|
||||
"50":[[0.0625,0.0,0.0625,0.9375,0.09375,0.9375]],
|
||||
"51":[[0.4375,0.0,0.4375,0.5625,0.875,0.5625],[0.0,0.0,0.0,1.0,0.125,1.0]],
|
||||
"52":[[0.0,0.0,0.0,1.0,0.3125,1.0],[0.0,0.0,0.0,0.125,1.0,1.0],[0.0,0.0,0.0,1.0,1.0,0.125],[0.875,0.0,0.0,1.0,1.0,1.0],[0.0,0.0,0.875,1.0,1.0,1.0]],
|
||||
"53":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],
|
||||
"54":[[0.375,0.4375,0.0625,0.625,0.75,0.3125]],
|
||||
"55":[[0.375,0.4375,0.6875,0.625,0.75,0.9375]],
|
||||
"56":[[0.0625,0.4375,0.375,0.3125,0.75,0.625]],
|
||||
"57":[[0.6875,0.4375,0.375,0.9375,0.75,0.625]],
|
||||
"58":[[0.3125,0.3125,0.5625,0.6875,0.75,0.9375]],
|
||||
"59":[[0.0625,0.3125,0.3125,0.4375,0.75,0.6875]],
|
||||
"60":[[0.3125,0.3125,0.0625,0.6875,0.75,0.4375]],
|
||||
"61":[[0.5625,0.3125,0.3125,0.9375,0.75,0.6875]],
|
||||
"62":[[0.25,0.1875,0.4375,0.75,0.75,0.9375]],
|
||||
"63":[[0.0625,0.1875,0.25,0.5625,0.75,0.75]],
|
||||
"64":[[0.25,0.1875,0.0625,0.75,0.75,0.5625]],
|
||||
"65":[[0.4375,0.1875,0.25,0.9375,0.75,0.75]],
|
||||
"66":[[0.25,0.0,0.25,0.75,1.5,0.75]],
|
||||
"67":[[0.3125,0.0,0.3125,0.6875,0.375,0.6875]],
|
||||
"68":[[0.25,0.25,0.5,0.75,0.75,1.0]],
|
||||
"69":[[0.25,0.0,0.25,0.75,0.5,0.75]],
|
||||
"70":[[0.25,0.25,0.0,0.75,0.75,0.5]],
|
||||
"71":[[0.5,0.25,0.25,1.0,0.75,0.75]],
|
||||
"72":[[0.0,0.25,0.25,0.5,0.75,0.75]],
|
||||
"73":[[0.125,0.0,0.0,0.875,1.0,1.0]],
|
||||
"74":[[0.0,0.0,0.125,1.0,1.0,0.875]],
|
||||
"75":[[0.0,0.0,0.0,1.0,0.625,1.0],[0.0,0.0,0.0,0.125,1.0,1.0],[0.875,0.0,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,1.0,1.0,0.125],[0.0,0.0,0.875,1.0,1.0,1.0]],
|
||||
"76":[[0.0,0.0,0.0,1.0,0.0625,1.0]],
|
||||
"77":[[0.375,0.0,0.375,0.625,1.0,0.625]],
|
||||
"78":[[0.375,0.375,0.0,0.625,0.625,1.0]],
|
||||
"79":[[0.0,0.375,0.375,1.0,0.625,0.625]],
|
||||
"80":[[0.1875,0.1875,0.1875,0.8125,0.8125,0.8125]],
|
||||
"81":[[0.0,0.0,0.0,1.0,0.8125,1.0]],
|
||||
"82":[[0.0,0.0,0.0,1.0,0.8125,1.0],[0.3125,0.8125,0.3125,0.6875,1.0,0.6875]]}}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,164 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,606 @@
|
||||
[
|
||||
{
|
||||
"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_chest",
|
||||
"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": 16,
|
||||
"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": 17,
|
||||
"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": 18,
|
||||
"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": 19,
|
||||
"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": 20,
|
||||
"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": 21,
|
||||
"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": 32,
|
||||
"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": 33,
|
||||
"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": 34,
|
||||
"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": 35,
|
||||
"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": 48,
|
||||
"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": 49,
|
||||
"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": 50,
|
||||
"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": 51,
|
||||
"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": 61,
|
||||
"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": 62,
|
||||
"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": 70,
|
||||
"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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,638 @@
|
||||
[
|
||||
{
|
||||
"id": 48,
|
||||
"internalId": 48,
|
||||
"name": "Mob",
|
||||
"displayName": "Mob",
|
||||
"type": "mob",
|
||||
"width": null,
|
||||
"height": null,
|
||||
"category": "Generic"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"internalId": 49,
|
||||
"name": "Monster",
|
||||
"displayName": "Monster",
|
||||
"type": "mob",
|
||||
"width": null,
|
||||
"height": null,
|
||||
"category": "Generic"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"internalId": 50,
|
||||
"name": "Creeper",
|
||||
"displayName": "Creeper",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"internalId": 51,
|
||||
"name": "Skeleton",
|
||||
"displayName": "Skeleton",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.95,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"internalId": 52,
|
||||
"name": "Spider",
|
||||
"displayName": "Spider",
|
||||
"type": "mob",
|
||||
"width": 1.4,
|
||||
"height": 0.9,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"internalId": 53,
|
||||
"name": "Giant",
|
||||
"displayName": "Giant",
|
||||
"type": "mob",
|
||||
"width": 3.5999999999999996,
|
||||
"height": 10.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"internalId": 54,
|
||||
"name": "Zombie",
|
||||
"displayName": "Zombie",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"internalId": 55,
|
||||
"name": "Slime",
|
||||
"displayName": "Slime",
|
||||
"type": "mob",
|
||||
"width": 0.51000005,
|
||||
"height": 0.51000005,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"internalId": 56,
|
||||
"name": "Ghast",
|
||||
"displayName": "Ghast",
|
||||
"type": "mob",
|
||||
"width": 4,
|
||||
"height": 4,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"internalId": 57,
|
||||
"name": "PigZombie",
|
||||
"displayName": "Zombie Pigman",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"internalId": 58,
|
||||
"name": "Enderman",
|
||||
"displayName": "Enderman",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 2.9,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"internalId": 59,
|
||||
"name": "CaveSpider",
|
||||
"displayName": "Cave Spider",
|
||||
"type": "mob",
|
||||
"width": 0.7,
|
||||
"height": 0.5,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"internalId": 60,
|
||||
"name": "Silverfish",
|
||||
"displayName": "Silverfish",
|
||||
"type": "mob",
|
||||
"width": 0.4,
|
||||
"height": 0.3,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"internalId": 61,
|
||||
"name": "Blaze",
|
||||
"displayName": "Blaze",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"internalId": 62,
|
||||
"name": "LavaSlime",
|
||||
"displayName": "Magma Cube",
|
||||
"type": "mob",
|
||||
"width": 0.51000005,
|
||||
"height": 0.51000005,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"internalId": 63,
|
||||
"name": "EnderDragon",
|
||||
"displayName": "Ender Dragon",
|
||||
"type": "mob",
|
||||
"width": 16,
|
||||
"height": 8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"internalId": 64,
|
||||
"name": "WitherBoss",
|
||||
"displayName": "Wither",
|
||||
"type": "mob",
|
||||
"width": 0.9,
|
||||
"height": 3.5,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"internalId": 65,
|
||||
"name": "Bat",
|
||||
"displayName": "Bat",
|
||||
"type": "mob",
|
||||
"width": 0.5,
|
||||
"height": 0.9,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"internalId": 66,
|
||||
"name": "Witch",
|
||||
"displayName": "Witch",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"internalId": 67,
|
||||
"name": "Endermite",
|
||||
"displayName": "Endermite",
|
||||
"type": "mob",
|
||||
"width": 0.4,
|
||||
"height": 0.3,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"internalId": 68,
|
||||
"name": "Guardian",
|
||||
"displayName": "Guardian",
|
||||
"type": "mob",
|
||||
"width": 0.85,
|
||||
"height": 0.85,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"internalId": 69,
|
||||
"name": "Shulker",
|
||||
"displayName": "Shulker",
|
||||
"type": "mob",
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 90,
|
||||
"internalId": 90,
|
||||
"name": "Pig",
|
||||
"displayName": "Pig",
|
||||
"type": "mob",
|
||||
"width": 0.9,
|
||||
"height": 0.9,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 91,
|
||||
"internalId": 91,
|
||||
"name": "Sheep",
|
||||
"displayName": "Sheep",
|
||||
"type": "mob",
|
||||
"width": 0.9,
|
||||
"height": 1.3,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 92,
|
||||
"internalId": 92,
|
||||
"name": "Cow",
|
||||
"displayName": "Cow",
|
||||
"type": "mob",
|
||||
"width": 0.9,
|
||||
"height": 1.3,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 93,
|
||||
"internalId": 93,
|
||||
"name": "Chicken",
|
||||
"displayName": "Chicken",
|
||||
"type": "mob",
|
||||
"width": 0.4,
|
||||
"height": 0.7,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 94,
|
||||
"internalId": 94,
|
||||
"name": "Squid",
|
||||
"displayName": "Squid",
|
||||
"type": "mob",
|
||||
"width": 0.95,
|
||||
"height": 0.95,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 95,
|
||||
"internalId": 95,
|
||||
"name": "Wolf",
|
||||
"displayName": "Wolf",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 0.8,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 96,
|
||||
"internalId": 96,
|
||||
"name": "MushroomCow",
|
||||
"displayName": "Mooshroom",
|
||||
"type": "mob",
|
||||
"width": 0.9,
|
||||
"height": 1.3,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 97,
|
||||
"internalId": 97,
|
||||
"name": "SnowMan",
|
||||
"displayName": "Snow Golem",
|
||||
"type": "mob",
|
||||
"width": 0.7,
|
||||
"height": 1.9,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 98,
|
||||
"internalId": 98,
|
||||
"name": "Ozelot",
|
||||
"displayName": "Ocelot",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 0.8,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 99,
|
||||
"internalId": 99,
|
||||
"name": "VillagerGolem",
|
||||
"displayName": "Iron Golem",
|
||||
"type": "mob",
|
||||
"width": 1.4,
|
||||
"height": 2.9,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 100,
|
||||
"internalId": 100,
|
||||
"name": "EntityHorse",
|
||||
"displayName": "Horse",
|
||||
"type": "mob",
|
||||
"width": 1.4,
|
||||
"height": 1.6,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 101,
|
||||
"internalId": 101,
|
||||
"name": "Rabbit",
|
||||
"displayName": "Rabbit",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 0.7,
|
||||
"category": "Passive mobs"
|
||||
},
|
||||
{
|
||||
"id": 120,
|
||||
"internalId": 120,
|
||||
"name": "Villager",
|
||||
"displayName": "Villager",
|
||||
"type": "mob",
|
||||
"width": 0.6,
|
||||
"height": 1.8,
|
||||
"category": "NPCs"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"internalId": 41,
|
||||
"name": "Boat",
|
||||
"displayName": "Boat",
|
||||
"type": "object",
|
||||
"width": 1.5,
|
||||
"height": 0.6,
|
||||
"category": "Vehicles"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"internalId": 1,
|
||||
"name": "Item",
|
||||
"displayName": "Dropped item",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Drops"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"internalId": 2,
|
||||
"name": "XPOrb",
|
||||
"displayName": "Experience Orb",
|
||||
"type": "object",
|
||||
"width": null,
|
||||
"height": null,
|
||||
"category": "Drops"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"internalId": 42,
|
||||
"name": "MinecartRideable",
|
||||
"displayName": "Minecart",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.7,
|
||||
"category": "Vehicles"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"internalId": 42,
|
||||
"name": "MinecartRideable",
|
||||
"displayName": "Minecart",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.7,
|
||||
"category": "Vehicles"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"internalId": 42,
|
||||
"name": "MinecartRideable",
|
||||
"displayName": "Minecart",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.7,
|
||||
"category": "Vehicles"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"internalId": 20,
|
||||
"name": "PrimedTnt",
|
||||
"displayName": "Primed TNT",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.98,
|
||||
"category": "Blocks"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"internalId": 200,
|
||||
"name": "EnderCrystal",
|
||||
"displayName": "Ender Crystal",
|
||||
"type": "object",
|
||||
"width": 2,
|
||||
"height": 2,
|
||||
"category": "Immobile"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"internalId": 10,
|
||||
"name": "Arrow",
|
||||
"displayName": "Shot arrow",
|
||||
"type": "object",
|
||||
"width": 0.5,
|
||||
"height": 0.5,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"internalId": 11,
|
||||
"name": "Snowball",
|
||||
"displayName": "Thrown snowball",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"internalId": 7,
|
||||
"name": "ThrownEgg",
|
||||
"displayName": "Thrown egg",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"internalId": 12,
|
||||
"name": "Fireball",
|
||||
"displayName": "Ghast fireball",
|
||||
"type": "object",
|
||||
"width": 1,
|
||||
"height": 1,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"internalId": 13,
|
||||
"name": "SmallFireball",
|
||||
"displayName": "Blaze fireball",
|
||||
"type": "object",
|
||||
"width": 0.3125,
|
||||
"height": 0.3125,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"internalId": 14,
|
||||
"name": "ThrownEnderpearl",
|
||||
"displayName": "Thrown Ender Pearl",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"internalId": 19,
|
||||
"name": "WitherSkull",
|
||||
"displayName": "Wither Skull",
|
||||
"type": "object",
|
||||
"width": 0.3125,
|
||||
"height": 0.3125,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"internalId": 69,
|
||||
"name": "Shulker",
|
||||
"displayName": "Shulker",
|
||||
"type": "object",
|
||||
"width": 0.3125,
|
||||
"height": 0.3125,
|
||||
"category": "Hostile mobs"
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"internalId": 21,
|
||||
"name": "FallingSand",
|
||||
"displayName": "Falling block",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.98,
|
||||
"category": "Blocks"
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"internalId": 18,
|
||||
"name": "ItemFrame",
|
||||
"displayName": "Item Frame",
|
||||
"type": "object",
|
||||
"width": null,
|
||||
"height": null,
|
||||
"category": "Immobile"
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"internalId": 15,
|
||||
"name": "EyeOfEnderSignal",
|
||||
"displayName": "Thrown Eye of Ender",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"internalId": 16,
|
||||
"name": "ThrownPotion",
|
||||
"displayName": "Thrown splash potion",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"internalId": 21,
|
||||
"name": "FallingSand",
|
||||
"displayName": "Falling block",
|
||||
"type": "object",
|
||||
"width": 0.98,
|
||||
"height": 0.98,
|
||||
"category": "Blocks"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"internalId": 17,
|
||||
"name": "ThrownExpBottle",
|
||||
"displayName": "Thrown Bottle o' Enchanting",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"internalId": 22,
|
||||
"name": "FireworksRocketEntity",
|
||||
"displayName": "Firework Rocket",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"internalId": 8,
|
||||
"name": "LeashKnot",
|
||||
"displayName": "Lead knot",
|
||||
"type": "object",
|
||||
"width": 0.5,
|
||||
"height": 0.5,
|
||||
"category": "Immobile"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"internalId": 30,
|
||||
"name": "ArmorStand",
|
||||
"displayName": "Armor Stand",
|
||||
"type": "object",
|
||||
"width": 0.5,
|
||||
"height": 2,
|
||||
"category": "Immobile"
|
||||
},
|
||||
{
|
||||
"id": 90,
|
||||
"name": "Fishing Float",
|
||||
"displayName": "Fishing Float",
|
||||
"type": "object",
|
||||
"width": 0.25,
|
||||
"height": 0.25
|
||||
},
|
||||
{
|
||||
"id": 91,
|
||||
"internalId": 10,
|
||||
"name": "Arrow",
|
||||
"displayName": "Shot arrow",
|
||||
"type": "object",
|
||||
"width": 0.5,
|
||||
"height": 0.5,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 92,
|
||||
"internalId": 10,
|
||||
"name": "Arrow",
|
||||
"displayName": "Shot arrow",
|
||||
"type": "object",
|
||||
"width": 0.5,
|
||||
"height": 0.5,
|
||||
"category": "Projectiles"
|
||||
},
|
||||
{
|
||||
"id": 93,
|
||||
"name": "Dragon Fireball",
|
||||
"displayName": "Dragon Fireball",
|
||||
"type": "object",
|
||||
"width": 0.3125,
|
||||
"height": 0.3125
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,340 @@
|
||||
[
|
||||
{
|
||||
"id": 103,
|
||||
"displayName": "Melon",
|
||||
"name": "melon_block",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 141,
|
||||
"displayName": "Carrot",
|
||||
"name": "carrots",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 3,
|
||||
"saturation": 3.6,
|
||||
"effectiveQuality": 6.6,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 142,
|
||||
"displayName": "Potato",
|
||||
"name": "potatoes",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 1,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 260,
|
||||
"displayName": "Apple",
|
||||
"stackSize": 64,
|
||||
"name": "apple",
|
||||
"foodPoints": 4,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 282,
|
||||
"displayName": "Mushroom Stew",
|
||||
"stackSize": 1,
|
||||
"name": "mushroom_stew",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 297,
|
||||
"displayName": "Bread",
|
||||
"stackSize": 64,
|
||||
"name": "bread",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 319,
|
||||
"displayName": "Raw Porkchop",
|
||||
"stackSize": 64,
|
||||
"name": "porkchop",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 320,
|
||||
"displayName": "Cooked Porkchop",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_porkchop",
|
||||
"foodPoints": 8,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 322,
|
||||
"displayName": "Golden Apple",
|
||||
"stackSize": 64,
|
||||
"name": "golden_apple",
|
||||
"variations": [
|
||||
{
|
||||
"metadata": 0,
|
||||
"displayName": "Golden Apple"
|
||||
},
|
||||
{
|
||||
"metadata": 1,
|
||||
"displayName": "Enchanted Golden Apple"
|
||||
}
|
||||
],
|
||||
"foodPoints": 4,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 349,
|
||||
"displayName": "Raw Fish",
|
||||
"stackSize": 64,
|
||||
"name": "fish",
|
||||
"variations": [
|
||||
{
|
||||
"metadata": 0,
|
||||
"displayName": "Raw Fish"
|
||||
},
|
||||
{
|
||||
"metadata": 1,
|
||||
"displayName": "Raw Salmon"
|
||||
},
|
||||
{
|
||||
"metadata": 2,
|
||||
"displayName": "Clownfish"
|
||||
},
|
||||
{
|
||||
"metadata": 3,
|
||||
"displayName": "Pufferfish"
|
||||
}
|
||||
],
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 350,
|
||||
"displayName": "Cooked Fish",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_fish",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 354,
|
||||
"displayName": "Cake",
|
||||
"stackSize": 1,
|
||||
"name": "cake",
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 357,
|
||||
"displayName": "Cookie",
|
||||
"stackSize": 64,
|
||||
"name": "cookie",
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 363,
|
||||
"displayName": "Raw Beef",
|
||||
"stackSize": 64,
|
||||
"name": "beef",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 364,
|
||||
"displayName": "Steak",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_beef",
|
||||
"foodPoints": 8,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 365,
|
||||
"displayName": "Raw Chicken",
|
||||
"stackSize": 64,
|
||||
"name": "chicken",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 366,
|
||||
"displayName": "Cooked Chicken",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_chicken",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 367,
|
||||
"displayName": "Rotten Flesh",
|
||||
"stackSize": 64,
|
||||
"name": "rotten_flesh",
|
||||
"foodPoints": 4,
|
||||
"saturation": 0.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 375,
|
||||
"displayName": "Spider Eye",
|
||||
"stackSize": 64,
|
||||
"name": "spider_eye",
|
||||
"foodPoints": 2,
|
||||
"saturation": 3.2,
|
||||
"effectiveQuality": 5.2,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 393,
|
||||
"displayName": "Baked Potato",
|
||||
"stackSize": 64,
|
||||
"name": "baked_potato",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 394,
|
||||
"displayName": "Poisonous Potato",
|
||||
"stackSize": 64,
|
||||
"name": "poisonous_potato",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 396,
|
||||
"displayName": "Golden Carrot",
|
||||
"stackSize": 64,
|
||||
"name": "golden_carrot",
|
||||
"foodPoints": 6,
|
||||
"saturation": 14.4,
|
||||
"effectiveQuality": 20.4,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 400,
|
||||
"displayName": "Pumpkin Pie",
|
||||
"stackSize": 64,
|
||||
"name": "pumpkin_pie",
|
||||
"foodPoints": 8,
|
||||
"saturation": 4.8,
|
||||
"effectiveQuality": 12.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 411,
|
||||
"displayName": "Raw Rabbit",
|
||||
"stackSize": 64,
|
||||
"name": "rabbit",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 412,
|
||||
"displayName": "Cooked Rabbit",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_rabbit",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 413,
|
||||
"displayName": "Rabbit Stew",
|
||||
"stackSize": 1,
|
||||
"name": "rabbit_stew",
|
||||
"foodPoints": 10,
|
||||
"saturation": 12,
|
||||
"effectiveQuality": 22,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 423,
|
||||
"displayName": "Raw Mutton",
|
||||
"stackSize": 64,
|
||||
"name": "mutton",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 424,
|
||||
"displayName": "Cooked Mutton",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_mutton",
|
||||
"foodPoints": 6,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.5999999999999999
|
||||
},
|
||||
{
|
||||
"id": 432,
|
||||
"displayName": "Chorus Fruit",
|
||||
"stackSize": 64,
|
||||
"name": "chorus_fruit",
|
||||
"foodPoints": 4,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 434,
|
||||
"displayName": "Beetroot",
|
||||
"stackSize": 64,
|
||||
"name": "beetroot",
|
||||
"foodPoints": 1,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 2.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 436,
|
||||
"displayName": "Beetroot Soup",
|
||||
"stackSize": 1,
|
||||
"name": "beetroot_soup",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "harp"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "doubleBass"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "snareDrum"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "sticks"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "bassDrum"
|
||||
}
|
||||
]
|
||||
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": {
|
||||
"257": 6,
|
||||
"270": 2,
|
||||
"274": 4,
|
||||
"278": 8,
|
||||
"285": 12
|
||||
},
|
||||
"wood": {
|
||||
"258": 6,
|
||||
"271": 2,
|
||||
"275": 4,
|
||||
"279": 8,
|
||||
"286": 12
|
||||
},
|
||||
"plant": {
|
||||
"258": 6,
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"271": 2,
|
||||
"272": 1.5,
|
||||
"275": 4,
|
||||
"276": 1.5,
|
||||
"279": 8,
|
||||
"283": 1.5,
|
||||
"286": 12
|
||||
},
|
||||
"melon": {
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"272": 1.5,
|
||||
"276": 1.5,
|
||||
"283": 1.5
|
||||
},
|
||||
"leaves": {
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"272": 1.5,
|
||||
"276": 1.5,
|
||||
"283": 1.5,
|
||||
"359": 6
|
||||
},
|
||||
"dirt": {
|
||||
"256": 6,
|
||||
"269": 2,
|
||||
"273": 4,
|
||||
"277": 8,
|
||||
"284": 12
|
||||
},
|
||||
"web": {
|
||||
"267": 15,
|
||||
"268": 15,
|
||||
"272": 15,
|
||||
"276": 15,
|
||||
"283": 15,
|
||||
"359": 15
|
||||
},
|
||||
"wool": {
|
||||
"359": 4.8
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,190 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "explode"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "largeexplode"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "hugeexplosion"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "fireworksSpark"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "bubble"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "splash"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "wake"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "suspended"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "depthsuspend"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "crit"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "magicCrit"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "smoke"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "largesmoke"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "spell"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "instantSpell"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "mobSpell"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "mobSpellAmbient"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "witchMagic"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "dripWater"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "dripLava"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "angryVillager"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "happyVillager"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "townaura"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "note"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "portal"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "enchantmenttable"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "flame"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "lava"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "footstep"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "cloud"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "reddust"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "snowballpoof"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "snowshovel"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "slime"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "heart"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "barrier"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "iconcrack"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "blockcrack"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "blockdust"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "droplet"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "take"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "mobappearance"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "dragonbreath"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "endRod"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "damageIndicator"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "sweepAttack"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "fallingdust"
|
||||
}
|
||||
]
|
||||
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 @@
|
||||
{
|
||||
"version":210,
|
||||
"minecraftVersion":"1.10",
|
||||
"majorVersion":"1.10"
|
||||
}
|
||||
@@ -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
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"minecraftVersion": "1.11.2",
|
||||
"version":316,
|
||||
"majorVersion": "1.11"
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
[
|
||||
{
|
||||
"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
|
||||
},
|
||||
{
|
||||
"name": "luck",
|
||||
"resource": "generic.luck",
|
||||
"default": 0,
|
||||
"min": -1024,
|
||||
"max": 1024
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,797 @@
|
||||
[
|
||||
{
|
||||
"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": 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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,316 @@
|
||||
{"blocks":{"air":0,
|
||||
"stone":1,
|
||||
"grass":1,
|
||||
"dirt":1,
|
||||
"cobblestone":1,
|
||||
"planks":1,
|
||||
"sapling":0,
|
||||
"bedrock":1,
|
||||
"flowing_water":0,
|
||||
"water":0,
|
||||
"flowing_lava":0,
|
||||
"lava":0,
|
||||
"sand":1,
|
||||
"gravel":1,
|
||||
"gold_ore":1,
|
||||
"iron_ore":1,
|
||||
"coal_ore":1,
|
||||
"log":1,
|
||||
"leaves":1,
|
||||
"sponge":1,
|
||||
"glass":1,
|
||||
"lapis_ore":1,
|
||||
"lapis_block":1,
|
||||
"dispenser":1,
|
||||
"sandstone":1,
|
||||
"noteblock":1,
|
||||
"bed":2,
|
||||
"golden_rail":0,
|
||||
"detector_rail":0,
|
||||
"sticky_piston":[1,1,1,1,1,1,0,0,3,4,5,6,7,8,0,0],
|
||||
"web":0,
|
||||
"tallgrass":0,
|
||||
"deadbush":0,
|
||||
"piston":[1,1,1,1,1,1,0,0,3,4,5,6,7,8,0,0],
|
||||
"piston_head":[10,11,9,12,13,14,0,0,10,11,9,12,13,14,0,0],
|
||||
"wool":1,
|
||||
"piston_extension":0,
|
||||
"yellow_flower":0,
|
||||
"red_flower":0,
|
||||
"brown_mushroom":0,
|
||||
"red_mushroom":0,
|
||||
"gold_block":1,
|
||||
"iron_block":1,
|
||||
"double_stone_slab":1,
|
||||
"stone_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"brick_block":1,
|
||||
"tnt":1,
|
||||
"bookshelf":1,
|
||||
"mossy_cobblestone":1,
|
||||
"obsidian":1,
|
||||
"torch":0,
|
||||
"fire":0,
|
||||
"mob_spawner":1,
|
||||
"oak_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"chest":25,
|
||||
"redstone_wire":0,
|
||||
"diamond_ore":1,
|
||||
"diamond_block":1,
|
||||
"crafting_table":1,
|
||||
"wheat":0,
|
||||
"farmland":26,
|
||||
"furnace":1,
|
||||
"lit_furnace":1,
|
||||
"standing_sign":0,
|
||||
"wooden_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"ladder":[27,27,27,29,30,28,27,27,27,29,30,28,27,27,27,29],
|
||||
"rail":0,
|
||||
"stone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"wall_sign":0,
|
||||
"lever":0,
|
||||
"stone_pressure_plate":0,
|
||||
"iron_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"wooden_pressure_plate":0,
|
||||
"redstone_ore":1,
|
||||
"lit_redstone_ore":1,
|
||||
"unlit_redstone_torch":0,
|
||||
"redstone_torch":0,
|
||||
"stone_button":0,
|
||||
"snow_layer":[0,31,32,33,15,34,4,35,0,31,32,33,15,34,4,35],
|
||||
"ice":1,
|
||||
"snow":1,
|
||||
"cactus":36,
|
||||
"clay":1,
|
||||
"reeds":0,
|
||||
"jukebox":1,
|
||||
"fence":37,
|
||||
"pumpkin":1,
|
||||
"netherrack":1,
|
||||
"soul_sand":35,
|
||||
"glowstone":1,
|
||||
"portal":0,
|
||||
"lit_pumpkin":1,
|
||||
"cake":[38,39,40,41,42,43,44,0,0,0,0,0,0,0,0,0],
|
||||
"unpowered_repeater":31,
|
||||
"powered_repeater":31,
|
||||
"stained_glass":1,
|
||||
"trapdoor":[45,45,45,45,27,29,30,28,46,46,46,46,27,29,30,28],
|
||||
"monster_egg":1,
|
||||
"stonebrick":1,
|
||||
"brown_mushroom_block":1,
|
||||
"red_mushroom_block":1,
|
||||
"iron_bars":47,
|
||||
"glass_pane":47,
|
||||
"melon_block":1,
|
||||
"pumpkin_stem":0,
|
||||
"melon_stem":0,
|
||||
"vine":0,
|
||||
"fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"stone_brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"mycelium":1,
|
||||
"waterlily":50,
|
||||
"nether_brick":1,
|
||||
"nether_brick_fence":37,
|
||||
"nether_brick_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"nether_wart":0,
|
||||
"enchanting_table":4,
|
||||
"brewing_stand":51,
|
||||
"cauldron":52,
|
||||
"end_portal":0,
|
||||
"end_portal_frame":[81,81,81,81,82,82,82,82,81,81,81,81,82,82,82,82],
|
||||
"end_stone":1,
|
||||
"dragon_egg":53,
|
||||
"redstone_lamp":1,
|
||||
"lit_redstone_lamp":1,
|
||||
"double_wooden_slab":1,
|
||||
"wooden_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"cocoa":[55,56,54,57,58,59,60,61,62,63,64,65,0,0,0,0],
|
||||
"sandstone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"emerald_ore":1,
|
||||
"ender_chest":25,
|
||||
"tripwire_hook":0,
|
||||
"tripwire":0,
|
||||
"emerald_block":1,
|
||||
"spruce_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"birch_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"jungle_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"command_block":1,
|
||||
"beacon":1,
|
||||
"cobblestone_wall":66,
|
||||
"flower_pot":67,
|
||||
"carrots":0,
|
||||
"potatoes":0,
|
||||
"wooden_button":0,
|
||||
"skull":[69,69,68,70,71,72,69,69,69,69,68,70,71,72,69,69],
|
||||
"anvil":[73,74,73,74,73,74,73,74,73,74,73,74,0,0,0,0],
|
||||
"trapped_chest":25,
|
||||
"light_weighted_pressure_plate":0,
|
||||
"heavy_weighted_pressure_plate":0,
|
||||
"unpowered_comparator":31,
|
||||
"powered_comparator":31,
|
||||
"daylight_detector":33,
|
||||
"redstone_block":1,
|
||||
"quartz_ore":1,
|
||||
"hopper":75,
|
||||
"quartz_block":1,
|
||||
"quartz_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"activator_rail":0,
|
||||
"dropper":1,
|
||||
"stained_hardened_clay":1,
|
||||
"stained_glass_pane":47,
|
||||
"leaves2":1,"log2":1,"acacia_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"dark_oak_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"slime":1,
|
||||
"barrier":1,
|
||||
"iron_trapdoor":[45,45,45,45,27,29,30,28,46,46,46,46,27,29,30,28],
|
||||
"prismarine":1,
|
||||
"sea_lantern":1,
|
||||
"hay_block":1,
|
||||
"carpet":76,
|
||||
"hardened_clay":1,
|
||||
"coal_block":1,
|
||||
"packed_ice":1,
|
||||
"double_plant":0,
|
||||
"standing_banner":0,
|
||||
"wall_banner":0,
|
||||
"daylight_detector_inverted":33,
|
||||
"red_sandstone":1,
|
||||
"red_sandstone_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"double_stone_slab2":1,"stone_slab2":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"spruce_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"birch_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"jungle_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"dark_oak_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"acacia_fence_gate":[48,49,48,49,0,0,0,0,48,49,48,49,0,0,0,0],
|
||||
"spruce_fence":37,
|
||||
"birch_fence":37,
|
||||
"jungle_fence":37,
|
||||
"dark_oak_fence":37,
|
||||
"acacia_fence":37,
|
||||
"spruce_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"birch_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"jungle_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"acacia_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"dark_oak_door":[28,29,30,27,29,30,27,28,28,29,30,27,29,30,27,28],
|
||||
"end_rod":[77,77,78,78,79,79,77,77,78,78,79,79,77,77,78,78],
|
||||
"chorus_plant":80,
|
||||
"chorus_flower":1,
|
||||
"purpur_block":1,
|
||||
"purpur_pillar":1,
|
||||
"purpur_stairs":[18,19,20,17,21,22,23,24,18,19,20,17,21,22,23,24],
|
||||
"purpur_double_slab":1,
|
||||
"purpur_slab":[15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16],
|
||||
"end_bricks":1,
|
||||
"beetroots":0,
|
||||
"grass_path":26,
|
||||
"end_gateway":0,
|
||||
"repeating_command_block":1,
|
||||
"chain_command_block":1,
|
||||
"frosted_ice":1,
|
||||
"magma":1,
|
||||
"nether_wart_block":1,
|
||||
"red_nether_brick":1,
|
||||
"bone_block":1,
|
||||
"structure_void":0,
|
||||
"observer":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,
|
||||
"structure_block":1},
|
||||
"shapes":{"0":[],
|
||||
"1":[[0.0,0.0,0.0,1.0,1.0,1.0]],
|
||||
"2":[[0.0,0.0,0.0,1.0,0.5625,1.0]],
|
||||
"3":[[0.0,0.25,0.0,1.0,1.0,1.0]],
|
||||
"4":[[0.0,0.0,0.0,1.0,0.75,1.0]],
|
||||
"5":[[0.0,0.0,0.25,1.0,1.0,1.0]],
|
||||
"6":[[0.0,0.0,0.0,1.0,1.0,0.75]],
|
||||
"7":[[0.25,0.0,0.0,1.0,1.0,1.0]],
|
||||
"8":[[0.0,0.0,0.0,0.75,1.0,1.0]],
|
||||
"9":[[0.0,0.0,0.0,1.0,1.0,0.25],[0.375,0.375,0.25,0.625,0.625,1.25]],
|
||||
"10":[[0.0,0.0,0.0,1.0,0.25,1.0],[0.375,0.25,0.375,0.625,1.25,0.625]],
|
||||
"11":[[0.0,0.75,0.0,1.0,1.0,1.0],[0.375,-0.25,0.375,0.625,0.75,0.625]],
|
||||
"12":[[0.0,0.0,0.75,1.0,1.0,1.0],[0.375,0.375,-0.25,0.625,0.625,0.75]],
|
||||
"13":[[0.0,0.0,0.0,0.25,1.0,1.0],[0.25,0.375,0.375,1.25,0.625,0.625]],
|
||||
"14":[[0.75,0.0,0.0,1.0,1.0,1.0],[-0.25,0.375,0.375,0.75,0.625,0.625]],
|
||||
"15":[[0.0,0.0,0.0,1.0,0.5,1.0]],
|
||||
"16":[[0.0,0.5,0.0,1.0,1.0,1.0]],
|
||||
"17":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,1.0,1.0,0.5]],
|
||||
"18":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.5,0.5,0.0,1.0,1.0,1.0]],
|
||||
"19":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.0,0.5,1.0,1.0]],
|
||||
"20":[[0.0,0.0,0.0,1.0,0.5,1.0],[0.0,0.5,0.5,1.0,1.0,1.0]],
|
||||
"21":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.5,0.0,0.0,1.0,0.5,1.0]],
|
||||
"22":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,0.5,0.5,1.0]],
|
||||
"23":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.5,1.0,0.5,1.0]],
|
||||
"24":[[0.0,0.5,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,1.0,0.5,0.5]],
|
||||
"25":[[0.0625,0.0,0.0625,0.9375,0.875,0.9375]],
|
||||
"26":[[0.0,0.0,0.0,1.0,0.9375,1.0]],
|
||||
"27":[[0.0,0.0,0.8125,1.0,1.0,1.0]],
|
||||
"28":[[0.0,0.0,0.0,0.1875,1.0,1.0]],
|
||||
"29":[[0.0,0.0,0.0,1.0,1.0,0.1875]],
|
||||
"30":[[0.8125,0.0,0.0,1.0,1.0,1.0]],
|
||||
"31":[[0.0,0.0,0.0,1.0,0.125,1.0]],
|
||||
"32":[[0.0,0.0,0.0,1.0,0.25,1.0]],
|
||||
"33":[[0.0,0.0,0.0,1.0,0.375,1.0]],
|
||||
"34":[[0.0,0.0,0.0,1.0,0.625,1.0]],
|
||||
"35":[[0.0,0.0,0.0,1.0,0.875,1.0]],
|
||||
"36":[[0.0625,0.0,0.0625,0.9375,0.9375,0.9375]],
|
||||
"37":[[0.375,0.0,0.375,0.625,1.5,0.625]],
|
||||
"38":[[0.0625,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"39":[[0.1875,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"40":[[0.3125,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"41":[[0.4375,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"42":[[0.5625,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"43":[[0.6875,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"44":[[0.8125,0.0,0.0625,0.9375,0.5,0.9375]],
|
||||
"45":[[0.0,0.0,0.0,1.0,0.1875,1.0]],
|
||||
"46":[[0.0,0.8125,0.0,1.0,1.0,1.0]],
|
||||
"47":[[0.4375,0.0,0.4375,0.5625,1.0,0.5625]],
|
||||
"48":[[0.0,0.0,0.375,1.0,1.5,0.625]],
|
||||
"49":[[0.375,0.0,0.0,0.625,1.5,1.0]],
|
||||
"50":[[0.0625,0.0,0.0625,0.9375,0.09375,0.9375]],
|
||||
"51":[[0.4375,0.0,0.4375,0.5625,0.875,0.5625],[0.0,0.0,0.0,1.0,0.125,1.0]],
|
||||
"52":[[0.0,0.0,0.0,1.0,0.3125,1.0],[0.0,0.0,0.0,0.125,1.0,1.0],[0.0,0.0,0.0,1.0,1.0,0.125],[0.875,0.0,0.0,1.0,1.0,1.0],[0.0,0.0,0.875,1.0,1.0,1.0]],
|
||||
"53":[[0.0625,0.0,0.0625,0.9375,1.0,0.9375]],
|
||||
"54":[[0.375,0.4375,0.0625,0.625,0.75,0.3125]],
|
||||
"55":[[0.375,0.4375,0.6875,0.625,0.75,0.9375]],
|
||||
"56":[[0.0625,0.4375,0.375,0.3125,0.75,0.625]],
|
||||
"57":[[0.6875,0.4375,0.375,0.9375,0.75,0.625]],
|
||||
"58":[[0.3125,0.3125,0.5625,0.6875,0.75,0.9375]],
|
||||
"59":[[0.0625,0.3125,0.3125,0.4375,0.75,0.6875]],
|
||||
"60":[[0.3125,0.3125,0.0625,0.6875,0.75,0.4375]],
|
||||
"61":[[0.5625,0.3125,0.3125,0.9375,0.75,0.6875]],
|
||||
"62":[[0.25,0.1875,0.4375,0.75,0.75,0.9375]],
|
||||
"63":[[0.0625,0.1875,0.25,0.5625,0.75,0.75]],
|
||||
"64":[[0.25,0.1875,0.0625,0.75,0.75,0.5625]],
|
||||
"65":[[0.4375,0.1875,0.25,0.9375,0.75,0.75]],
|
||||
"66":[[0.25,0.0,0.25,0.75,1.5,0.75]],
|
||||
"67":[[0.3125,0.0,0.3125,0.6875,0.375,0.6875]],
|
||||
"68":[[0.25,0.25,0.5,0.75,0.75,1.0]],
|
||||
"69":[[0.25,0.0,0.25,0.75,0.5,0.75]],
|
||||
"70":[[0.25,0.25,0.0,0.75,0.75,0.5]],
|
||||
"71":[[0.5,0.25,0.25,1.0,0.75,0.75]],
|
||||
"72":[[0.0,0.25,0.25,0.5,0.75,0.75]],
|
||||
"73":[[0.125,0.0,0.0,0.875,1.0,1.0]],
|
||||
"74":[[0.0,0.0,0.125,1.0,1.0,0.875]],
|
||||
"75":[[0.0,0.0,0.0,1.0,0.625,1.0],[0.0,0.0,0.0,0.125,1.0,1.0],[0.875,0.0,0.0,1.0,1.0,1.0],[0.0,0.0,0.0,1.0,1.0,0.125],[0.0,0.0,0.875,1.0,1.0,1.0]],
|
||||
"76":[[0.0,0.0,0.0,1.0,0.0625,1.0]],
|
||||
"77":[[0.375,0.0,0.375,0.625,1.0,0.625]],
|
||||
"78":[[0.375,0.375,0.0,0.625,0.625,1.0]],
|
||||
"79":[[0.0,0.375,0.375,1.0,0.625,0.625]],
|
||||
"80":[[0.1875,0.1875,0.1875,0.8125,0.8125,0.8125]],
|
||||
"81":[[0.0,0.0,0.0,1.0,0.8125,1.0]],
|
||||
"82":[[0.0,0.0,0.0,1.0,0.8125,1.0],[0.3125,0.8125,0.3125,0.6875,1.0,0.6875]]}}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,164 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,669 @@
|
||||
[
|
||||
{
|
||||
"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_chest",
|
||||
"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": 16,
|
||||
"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": 17,
|
||||
"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": 18,
|
||||
"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": 19,
|
||||
"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": 20,
|
||||
"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": 21,
|
||||
"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": 22,
|
||||
"name": "sweeping_edge",
|
||||
"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": 32,
|
||||
"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": 33,
|
||||
"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": 34,
|
||||
"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": 35,
|
||||
"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": 48,
|
||||
"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": 49,
|
||||
"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": 50,
|
||||
"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": 51,
|
||||
"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": 61,
|
||||
"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": 62,
|
||||
"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": 70,
|
||||
"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": 71,
|
||||
"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
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,358 @@
|
||||
[
|
||||
{
|
||||
"id": 103,
|
||||
"displayName": "Melon",
|
||||
"name": "melon_block",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 141,
|
||||
"displayName": "Carrot",
|
||||
"name": "carrots",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 3,
|
||||
"saturation": 3.6,
|
||||
"effectiveQuality": 6.6,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 142,
|
||||
"displayName": "Potato",
|
||||
"name": "potatoes",
|
||||
"stackSize": 64,
|
||||
"foodPoints": 1,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 260,
|
||||
"displayName": "Apple",
|
||||
"stackSize": 64,
|
||||
"name": "apple",
|
||||
"foodPoints": 4,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 282,
|
||||
"displayName": "Mushroom Stew",
|
||||
"stackSize": 1,
|
||||
"name": "mushroom_stew",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 297,
|
||||
"displayName": "Bread",
|
||||
"stackSize": 64,
|
||||
"name": "bread",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 319,
|
||||
"displayName": "Raw Porkchop",
|
||||
"stackSize": 64,
|
||||
"name": "porkchop",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 320,
|
||||
"displayName": "Cooked Porkchop",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_porkchop",
|
||||
"foodPoints": 8,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 322,
|
||||
"displayName": "Golden Apple",
|
||||
"stackSize": 64,
|
||||
"name": "golden_apple",
|
||||
"variations": [
|
||||
{
|
||||
"metadata": 0,
|
||||
"displayName": "Golden Apple"
|
||||
},
|
||||
{
|
||||
"metadata": 1,
|
||||
"displayName": "Enchanted Golden Apple"
|
||||
}
|
||||
],
|
||||
"foodPoints": 4,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 349,
|
||||
"displayName": "Raw Fish",
|
||||
"stackSize": 64,
|
||||
"name": "fish",
|
||||
"variations": [
|
||||
{
|
||||
"metadata": 0,
|
||||
"displayName": "Raw Fish"
|
||||
},
|
||||
{
|
||||
"metadata": 1,
|
||||
"displayName": "Raw Salmon"
|
||||
},
|
||||
{
|
||||
"metadata": 2,
|
||||
"displayName": "Clownfish"
|
||||
},
|
||||
{
|
||||
"metadata": 3,
|
||||
"displayName": "Pufferfish"
|
||||
}
|
||||
],
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 350,
|
||||
"displayName": "Cooked Fish",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_fish",
|
||||
"variations": [
|
||||
{
|
||||
"metadata": 0,
|
||||
"displayName": "Raw Fish"
|
||||
},
|
||||
{
|
||||
"metadata": 1,
|
||||
"displayName": "Raw Salmon"
|
||||
},
|
||||
{
|
||||
"metadata": 2,
|
||||
"displayName": "Clownfish"
|
||||
},
|
||||
{
|
||||
"metadata": 3,
|
||||
"displayName": "Pufferfish"
|
||||
}
|
||||
],
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 354,
|
||||
"displayName": "Cake",
|
||||
"stackSize": 1,
|
||||
"name": "cake",
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 357,
|
||||
"displayName": "Cookie",
|
||||
"stackSize": 64,
|
||||
"name": "cookie",
|
||||
"foodPoints": 2,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 363,
|
||||
"displayName": "Raw Beef",
|
||||
"stackSize": 64,
|
||||
"name": "beef",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 364,
|
||||
"displayName": "Steak",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_beef",
|
||||
"foodPoints": 8,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 365,
|
||||
"displayName": "Raw Chicken",
|
||||
"stackSize": 64,
|
||||
"name": "chicken",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 366,
|
||||
"displayName": "Cooked Chicken",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_chicken",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 367,
|
||||
"displayName": "Rotten Flesh",
|
||||
"stackSize": 64,
|
||||
"name": "rotten_flesh",
|
||||
"foodPoints": 4,
|
||||
"saturation": 0.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 375,
|
||||
"displayName": "Spider Eye",
|
||||
"stackSize": 64,
|
||||
"name": "spider_eye",
|
||||
"foodPoints": 2,
|
||||
"saturation": 3.2,
|
||||
"effectiveQuality": 5.2,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 393,
|
||||
"displayName": "Baked Potato",
|
||||
"stackSize": 64,
|
||||
"name": "baked_potato",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 394,
|
||||
"displayName": "Poisonous Potato",
|
||||
"stackSize": 64,
|
||||
"name": "poisonous_potato",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 396,
|
||||
"displayName": "Golden Carrot",
|
||||
"stackSize": 64,
|
||||
"name": "golden_carrot",
|
||||
"foodPoints": 6,
|
||||
"saturation": 14.4,
|
||||
"effectiveQuality": 20.4,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 400,
|
||||
"displayName": "Pumpkin Pie",
|
||||
"stackSize": 64,
|
||||
"name": "pumpkin_pie",
|
||||
"foodPoints": 8,
|
||||
"saturation": 4.8,
|
||||
"effectiveQuality": 12.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 411,
|
||||
"displayName": "Raw Rabbit",
|
||||
"stackSize": 64,
|
||||
"name": "rabbit",
|
||||
"foodPoints": 3,
|
||||
"saturation": 1.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 412,
|
||||
"displayName": "Cooked Rabbit",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_rabbit",
|
||||
"foodPoints": 5,
|
||||
"saturation": 6,
|
||||
"effectiveQuality": 11,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 413,
|
||||
"displayName": "Rabbit Stew",
|
||||
"stackSize": 1,
|
||||
"name": "rabbit_stew",
|
||||
"foodPoints": 10,
|
||||
"saturation": 12,
|
||||
"effectiveQuality": 22,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 423,
|
||||
"displayName": "Raw Mutton",
|
||||
"stackSize": 64,
|
||||
"name": "mutton",
|
||||
"foodPoints": 2,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 424,
|
||||
"displayName": "Cooked Mutton",
|
||||
"stackSize": 64,
|
||||
"name": "cooked_mutton",
|
||||
"foodPoints": 6,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.5999999999999999
|
||||
},
|
||||
{
|
||||
"id": 432,
|
||||
"displayName": "Chorus Fruit",
|
||||
"stackSize": 64,
|
||||
"name": "chorus_fruit",
|
||||
"foodPoints": 4,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 434,
|
||||
"displayName": "Beetroot",
|
||||
"stackSize": 64,
|
||||
"name": "beetroot",
|
||||
"foodPoints": 1,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 2.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 436,
|
||||
"displayName": "Beetroot Soup",
|
||||
"stackSize": 1,
|
||||
"name": "beetroot_soup",
|
||||
"foodPoints": 6,
|
||||
"saturation": 7.2,
|
||||
"effectiveQuality": 13.2,
|
||||
"saturationRatio": 1.2
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "harp"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "doubleBass"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "snareDrum"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "sticks"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "bassDrum"
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,62 @@
|
||||
[
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"rock": {
|
||||
"257": 6,
|
||||
"270": 2,
|
||||
"274": 4,
|
||||
"278": 8,
|
||||
"285": 12
|
||||
},
|
||||
"wood": {
|
||||
"258": 6,
|
||||
"271": 2,
|
||||
"275": 4,
|
||||
"279": 8,
|
||||
"286": 12
|
||||
},
|
||||
"plant": {
|
||||
"258": 6,
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"271": 2,
|
||||
"272": 1.5,
|
||||
"275": 4,
|
||||
"276": 1.5,
|
||||
"279": 8,
|
||||
"283": 1.5,
|
||||
"286": 12
|
||||
},
|
||||
"melon": {
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"272": 1.5,
|
||||
"276": 1.5,
|
||||
"283": 1.5
|
||||
},
|
||||
"leaves": {
|
||||
"267": 1.5,
|
||||
"268": 1.5,
|
||||
"272": 1.5,
|
||||
"276": 1.5,
|
||||
"283": 1.5,
|
||||
"359": 6
|
||||
},
|
||||
"dirt": {
|
||||
"256": 6,
|
||||
"269": 2,
|
||||
"273": 4,
|
||||
"277": 8,
|
||||
"284": 12
|
||||
},
|
||||
"web": {
|
||||
"267": 15,
|
||||
"268": 15,
|
||||
"272": 15,
|
||||
"276": 15,
|
||||
"283": 15,
|
||||
"359": 15
|
||||
},
|
||||
"wool": {
|
||||
"359": 4.8
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user