Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acb5fe8d90 | ||
|
|
d9bca7e517 | ||
|
|
b162d0d401 | ||
|
|
3273244c42 | ||
|
|
f579645b88 | ||
|
|
33754d7c71 | ||
|
|
8bd54a04f2 | ||
|
|
492dae8e83 | ||
|
|
d9543de951 | ||
|
|
f1f5374a5c | ||
|
|
0d6b6e1ab9 | ||
|
|
56c97a2b3f | ||
|
|
9063a0328d | ||
|
|
84b28d4c12 | ||
|
|
30cfc507ba | ||
|
|
d84618c116 | ||
|
|
5a55520126 | ||
|
|
8ac5e00c8e | ||
|
|
d46c678b89 | ||
|
|
0b714edcf5 | ||
|
|
45151add64 | ||
|
|
b90830881f | ||
|
|
94301a4a50 | ||
|
|
aa5d15a4dc | ||
|
|
d388e2c350 | ||
|
|
126ff5bca0 | ||
|
|
a347aedfc2 | ||
|
|
e324a95727 |
@@ -19,6 +19,8 @@ import (
|
||||
"github.com/admin-else/strom/cmd/strom/packet_inspector"
|
||||
"github.com/admin-else/strom/cmd/strom/print_nbt"
|
||||
"github.com/admin-else/strom/cmd/strom/print_replay"
|
||||
// "github.com/admin-else/strom/cmd/strom/raw_capture" // 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"
|
||||
@@ -60,6 +62,8 @@ var subcommands = map[string]func(args []string) error{
|
||||
"extract-mca": extract_mca.Run,
|
||||
"data": data.Run,
|
||||
"print-replay": print_replay.Run,
|
||||
// "raw-capture": raw_capture.Run, // 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,
|
||||
|
||||
@@ -51,7 +51,7 @@ func GetChunkFromMca(x, z int32, version string) (b []byte, err error) {
|
||||
z += anvil.ChunksWidthRegionFile
|
||||
}
|
||||
|
||||
f, err := os.Open(fmt.Sprintf("./level/anvil/testdata/securechattestworld/region/r.%v.%v.mca", xmca, zmca))
|
||||
f, err := os.Open(fmt.Sprintf("./.devres/anvil_testdata/securechattestworld/region/r.%v.%v.mca", xmca, zmca))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
+56
-18
@@ -3,6 +3,7 @@ package messenger
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
@@ -15,18 +16,28 @@ import (
|
||||
"github.com/admin-else/strom/mc/event"
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_11"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
)
|
||||
|
||||
func stror(a, b string) string {
|
||||
if a != "" {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
var (
|
||||
cmd = flag.NewFlagSet("status", flag.ContinueOnError)
|
||||
connectToFlag = cmd.String("addr", "", "server address to connect to")
|
||||
accFlag = cmd.String("acc", "strom_messenger", "the name to use if longer will be treated as ygg token")
|
||||
accFlag = cmd.String("acc", stror(os.Getenv("STROM_ACC"), "strom_messenger"), "the name to use if longer will be treated as ygg token")
|
||||
versionFlag = cmd.String("version", "26.2", "minecraft version to use (e.g. 1.8, 1.21.11)")
|
||||
)
|
||||
|
||||
type Messenger struct {
|
||||
*proto.Conn
|
||||
chat *chat.Module
|
||||
world *world.Module
|
||||
chat *chat.Module
|
||||
world *world.Module
|
||||
legacy bool
|
||||
}
|
||||
|
||||
func (m *Messenger) OnChat(e *v1_21_11.PlayToClientPacketPlayerChat) (err error) {
|
||||
@@ -44,15 +55,27 @@ func (m *Messenger) OnChatSystem(e *v1_21_11.PlayToClientPacketSystemChat) (err
|
||||
return
|
||||
}
|
||||
|
||||
func (m *Messenger) OnChatLegacy(e *v1_8.PlayToClientPacketChat) (err error) {
|
||||
m.Log.Info("chat", "m", e.Message)
|
||||
return
|
||||
}
|
||||
|
||||
func (m *Messenger) OnStdin(e event.Stdin) (err error) {
|
||||
input := strings.TrimSpace(e.Val)
|
||||
if strings.HasPrefix(input, ">say ") {
|
||||
return m.chat.SendMessage(strings.TrimSpace(strings.TrimPrefix(input, ">say")))
|
||||
return m.sendChat(strings.TrimSpace(strings.TrimPrefix(input, ">say")))
|
||||
}
|
||||
if strings.HasPrefix(input, ">getblock ") {
|
||||
if !m.legacy && strings.HasPrefix(input, ">getblock ") {
|
||||
return m.handleGetBlock(strings.TrimSpace(strings.TrimPrefix(input, ">getblock")))
|
||||
}
|
||||
return m.chat.SendMessage(input)
|
||||
return m.sendChat(input)
|
||||
}
|
||||
|
||||
func (m *Messenger) sendChat(message string) (err error) {
|
||||
if m.legacy {
|
||||
return m.Send(&v1_8.PlayToServerPacketChat{Message: message})
|
||||
}
|
||||
return m.chat.SendMessage(message)
|
||||
}
|
||||
|
||||
func (m *Messenger) handleGetBlock(args string) (err error) {
|
||||
@@ -97,30 +120,45 @@ func Run(args []string) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
c, err := client.Login(*connectToFlag, acc)
|
||||
c, err := client.Login(*connectToFlag, acc, client.WithVersion(*versionFlag))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer c.Close()
|
||||
|
||||
chatMod, err := chat.Start(c, acc)
|
||||
if err != nil {
|
||||
return
|
||||
isLegacy := c.ProtocolVersion < 764
|
||||
|
||||
var chatMod *chat.Module
|
||||
if !isLegacy {
|
||||
chatMod, err = chat.Start(c, acc)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Shareable world storage. Other bots can subscribe to the same World.
|
||||
w := world.NewWorld(c.Version, -64, 384)
|
||||
|
||||
m := &Messenger{
|
||||
Conn: c,
|
||||
chat: chatMod,
|
||||
world: world.Start(c, w),
|
||||
Conn: c,
|
||||
chat: chatMod,
|
||||
legacy: isLegacy,
|
||||
}
|
||||
|
||||
if !isLegacy {
|
||||
w := world.NewWorld(c.Version, -64, 384)
|
||||
m.world = world.Start(c, w)
|
||||
}
|
||||
|
||||
event.StartListingStdin(m.Loop)
|
||||
m.Register(m.OnStdin)
|
||||
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
|
||||
keepalive.Start(m.Conn)
|
||||
|
||||
if isLegacy {
|
||||
m.Register(m.OnChatLegacy)
|
||||
} else {
|
||||
m.RegisterUntilLatest(m.OnChat, m.OnChatUnsigned, m.OnChatSystem)
|
||||
}
|
||||
|
||||
if !isLegacy {
|
||||
keepalive.Start(m.Conn)
|
||||
}
|
||||
|
||||
return m.StartConn()
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"bytes"
|
||||
"testing"
|
||||
|
||||
generated "github.com/admin-else/strom/proto_generated/%v"
|
||||
generated "github.com/admin-else/strom/mc/proto_generated/%v"
|
||||
)
|
||||
|
||||
// Error: %v
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"go/format"
|
||||
"io"
|
||||
"log/slog"
|
||||
"os"
|
||||
@@ -24,7 +25,8 @@ var (
|
||||
FileFlag = cmd.String("file", "", "The tmcpr file to print")
|
||||
ProtocolVersion = cmd.Int("protocol", -1, "The protocol version")
|
||||
CreateTestsPath = cmd.String("create-tests", "", "")
|
||||
StateFlag = cmd.String("state", "login", "Initial state: login, config, play")
|
||||
StateFlag = cmd.String("state", "login", "Initial state: handshake, login, config, status, play")
|
||||
DirectionFlag = cmd.String("direction", "clientbound", "Packet direction: clientbound (ToClient) or serverbound (ToServer)")
|
||||
)
|
||||
|
||||
// TODO: maybe use the proto replay api
|
||||
@@ -32,32 +34,43 @@ var (
|
||||
//go:embed failed_packet.go.tmpl
|
||||
var TestSrcF string
|
||||
|
||||
func SaveUnCodeAbleAsTest(packet *proto.UnCodablePacket) {
|
||||
func SaveUnCodeAbleAsTest(packet *proto.UnCodablePacket) (err error) {
|
||||
if packet.Info.Type == nil {
|
||||
slog.Warn("skipping test for unknown packet id", "packet_id", packet.Info.PacketId, "state", packet.Info.State, "error", packet.Err)
|
||||
return
|
||||
}
|
||||
|
||||
hUntrimmed := sha256.Sum256(packet.Data)
|
||||
h := hUntrimmed[:8]
|
||||
f, err := os.Create(fmt.Sprintf(*CreateTestsPath+"/%v_%10x_test.go", len(packet.Data), h))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
if err = os.MkdirAll(*CreateTestsPath, 0755); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
ret, err := data.LookUpVersionByProtocolVersion(packet.Info.ProtocolVersion)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
return
|
||||
}
|
||||
goPackage := "v" + strings.ReplaceAll(ret.MinecraftVersion, ".", "_")
|
||||
typeName := reflect.TypeOf(packet.Info.Type).Elem().Name()
|
||||
|
||||
//goland:noinspection GoUnhandledErrorResult
|
||||
defer f.Close()
|
||||
_, err = fmt.Fprintf(f, TestSrcF, goPackage, packet.Err, h, reflect.TypeOf(packet.Info.Type).Elem().Name(), packet.Data)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
src := fmt.Sprintf(TestSrcF, goPackage, packet.Err, h, typeName, packet.Data)
|
||||
formatted, formatErr := format.Source([]byte(src))
|
||||
if formatErr != nil {
|
||||
formatted = []byte(src)
|
||||
}
|
||||
slog.Info("Packet failed to parse", "error", packet.Err, "saved", f.Name(), "data", fmt.Sprintf("%q", packet.Data))
|
||||
|
||||
filePath := fmt.Sprintf(*CreateTestsPath+"/%v_%10x_test.go", len(packet.Data), h)
|
||||
if err = os.WriteFile(filePath, formatted, 0644); err != nil {
|
||||
return
|
||||
}
|
||||
slog.Info("Packet failed to parse", "error", packet.Err, "saved", filePath, "data", fmt.Sprintf("%q", packet.Data))
|
||||
return
|
||||
}
|
||||
|
||||
var state = proto_base.Login
|
||||
var direction = proto_base.ToClient
|
||||
|
||||
func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, err error) {
|
||||
func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, i proto_base.PacketInfo, err error) {
|
||||
var timestamp, length uint32
|
||||
err = binary.Read(r, binary.BigEndian, ×tamp)
|
||||
if err != nil {
|
||||
@@ -87,7 +100,8 @@ func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, err error) {
|
||||
// indexafterid represents how many bytes we've read so far
|
||||
indexafterid := int(b.Size()) - b.Len()
|
||||
|
||||
i, ok := proto.LookUpTypeByPacketInfo(proto_base.ToClient, state, packetId, int32(*ProtocolVersion))
|
||||
var ok bool
|
||||
i, ok = proto.LookUpTypeByPacketInfo(direction, state, packetId, int32(*ProtocolVersion))
|
||||
if !ok {
|
||||
packet = &proto.UnCodablePacket{Err: proto.BadPacketIdErr, Data: packetData, Info: i}
|
||||
return
|
||||
@@ -98,13 +112,42 @@ func UnpackPacket(r io.Reader) (packet proto_base.EncodeDecodeAble, err error) {
|
||||
packet = &proto.UnCodablePacket{Err: err, Data: packetData[indexafterid:], Info: i}
|
||||
return
|
||||
}
|
||||
if b.Len() != 0 {
|
||||
packet = &proto.UnCodablePacket{Err: proto.PacketNotFullyDecodedErr, Data: packetData[indexafterid:], Info: i}
|
||||
return
|
||||
}
|
||||
trackState(packet, i)
|
||||
return
|
||||
}
|
||||
|
||||
func trackState(packet proto_base.EncodeDecodeAble, i proto_base.PacketInfo) {
|
||||
switch i.Name {
|
||||
case "set_protocol":
|
||||
v := reflect.ValueOf(packet).Elem()
|
||||
nsField := v.FieldByName("NextState")
|
||||
if nsField.IsValid() && nsField.Kind() == reflect.Int32 {
|
||||
switch nsField.Int() {
|
||||
case 1:
|
||||
state = proto_base.Status
|
||||
case 2:
|
||||
state = proto_base.Login
|
||||
}
|
||||
}
|
||||
case "login_start":
|
||||
if int32(*ProtocolVersion) <= 47 {
|
||||
state = proto_base.Play
|
||||
}
|
||||
case "success":
|
||||
state = proto_base.Configuration
|
||||
if int32(*ProtocolVersion) >= 764 {
|
||||
state = proto_base.Configuration
|
||||
} else {
|
||||
state = proto_base.Play
|
||||
}
|
||||
case "finish_configuration":
|
||||
state = proto_base.Play
|
||||
case "login_acknowledged":
|
||||
state = proto_base.Configuration
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func Run(args []string) (err error) {
|
||||
@@ -119,15 +162,27 @@ func Run(args []string) (err error) {
|
||||
return fmt.Errorf("no file specified")
|
||||
}
|
||||
switch *StateFlag {
|
||||
case "handshake":
|
||||
state = proto_base.Handshaking
|
||||
case "login":
|
||||
state = proto_base.Login
|
||||
case "config":
|
||||
state = proto_base.Configuration
|
||||
case "play":
|
||||
state = proto_base.Play
|
||||
case "status":
|
||||
state = proto_base.Status
|
||||
default:
|
||||
return fmt.Errorf("unknown state: %s", *StateFlag)
|
||||
}
|
||||
switch *DirectionFlag {
|
||||
case "clientbound", "to-client":
|
||||
direction = proto_base.ToClient
|
||||
case "serverbound", "to-server":
|
||||
direction = proto_base.ToServer
|
||||
default:
|
||||
return fmt.Errorf("unknown direction: %s", *DirectionFlag)
|
||||
}
|
||||
f, err := os.Open(*FileFlag)
|
||||
if err != nil {
|
||||
return
|
||||
@@ -137,21 +192,22 @@ func Run(args []string) (err error) {
|
||||
var totalPackets, failedPackets int
|
||||
for {
|
||||
var packet proto_base.EncodeDecodeAble
|
||||
packet, err = UnpackPacket(f)
|
||||
var info proto_base.PacketInfo
|
||||
packet, info, err = UnpackPacket(f)
|
||||
unCodablePacket, ok := packet.(*proto.UnCodablePacket)
|
||||
if ok {
|
||||
slog.Error("failed to decode packet", "error", err, "packet_name", info.Name)
|
||||
if *CreateTestsPath != "" {
|
||||
SaveUnCodeAbleAsTest(unCodablePacket)
|
||||
err = SaveUnCodeAbleAsTest(unCodablePacket)
|
||||
if err != nil {
|
||||
slog.Error("failed to save uncodable packet as test", "error", err)
|
||||
}
|
||||
}
|
||||
failedPackets++
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
} else {
|
||||
fmt.Printf("Packet: %#v\n", packet)
|
||||
}
|
||||
if errors.Is(err, io.EOF) {
|
||||
fmt.Printf("Packet: %#v\n", packet)
|
||||
if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) {
|
||||
break
|
||||
}
|
||||
totalPackets++
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2d90ee976987678593a6b1d09136bb9b4fd131390796ea6e413376a6ddc63226
|
||||
size 75035693
|
||||
@@ -1 +0,0 @@
|
||||
[{"realTimestamp":9845034,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9845138,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9844902,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9908896,"value":{"position":{"x":-1.6053634059630886,"y":91.672484820985,"z":-10.594536888795163,"yaw":-1151.6353,"pitch":16.142092,"roll":0.0}}},{"realTimestamp":9844750,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9853735,"value":{"position":{"x":-31.05268144454021,"y":88.0,"z":-25.371850030366133,"yaw":-624.37897,"pitch":16.105839,"roll":0.0}}},{"realTimestamp":9845690,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9938194,"value":{"position":{"x":39.88206777447001,"y":103.87657142499006,"z":58.09267383764874,"yaw":-1781.1023,"pitch":37.354122,"roll":0.0}}},{"realTimestamp":9846991,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-628.46875,"pitch":36.04,"roll":0.0}}},{"realTimestamp":9908638,"value":{"position":{"x":-1.5870303355717672,"y":91.672484820985,"z":-11.359450846926011,"yaw":-1142.6902,"pitch":20.997843,"roll":0.0}}},{"realTimestamp":9845490,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}},{"realTimestamp":9845990,"value":{"position":{"x":-31.946051078575692,"y":93.0,"z":29.523387113769626,"yaw":-627.44653,"pitch":37.573395,"roll":0.0}}}]
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d972b9b5f9d962199fe262eccef32a4b94504283fae97f9963702e7ab1550129
|
||||
size 437123
|
||||
@@ -1 +0,0 @@
|
||||
{"singleplayer":false,"serverName":"protect-test-server.anygate.cloud","customServerName":"proxied test server","duration":3368,"date":1776531741320,"mcversion":"1.21.11","fileFormat":"MCPR","fileFormatVersion":14,"protocol":774,"generator":"ReplayMod v1.21.11-2.6.26","selfId":-1,"players":[]}
|
||||
@@ -1 +0,0 @@
|
||||
{"requiredMods":[{"modID":"viafabricplus","modName":"ViaFabricPlus","modVersion":"4.4.4"}]}
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cef58ec0e3d1d25e34c2effc5c09241ee4c1b39c085ed9e11b7097dfd5c2d033
|
||||
size 3429878
|
||||
@@ -1 +0,0 @@
|
||||
234002168
|
||||
@@ -1 +0,0 @@
|
||||
{"singleplayer":false,"serverName":"protect-beta.anygate.cloud","customServerName":"protect-beta.anygate.cloud","duration":10198341,"date":1776535673280,"mcversion":"1.21.11","fileFormat":"MCPR","fileFormatVersion":14,"protocol":774,"generator":"ReplayMod v1.21.11-2.6.26","selfId":-1,"players":["fe2d6f64-7ab0-3373-a526-af097abbcb39"]}
|
||||
-1
@@ -1 +0,0 @@
|
||||
{"requiredMods":[{"modID":"viafabricplus","modName":"ViaFabricPlus","modVersion":"4.4.4"}]}
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:be007aa681f7959708e89e39e05390e228753291823a18274068d310a50aa78b
|
||||
size 526306397
|
||||
@@ -1 +0,0 @@
|
||||
270566013
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0da58f5cdd65ef241df8c61f9e633af7317faa77034183d4fb648b039c1e14ed
|
||||
size 842
|
||||
@@ -1 +0,0 @@
|
||||
{"singleplayer":false,"serverName":"protect-test-server.anygate.cloud","customServerName":"proxied test server","duration":476,"date":1776803431635,"mcversion":"1.21.11","fileFormat":"MCPR","fileFormatVersion":14,"protocol":774,"generator":"ReplayMod v1.21.11-2.6.26","selfId":-1,"players":[]}
|
||||
@@ -1 +0,0 @@
|
||||
{"requiredMods":[{"modID":"viafabricplus","modName":"ViaFabricPlus","modVersion":"4.4.4"}]}
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:52fa049f97918289e018fa4c3bf5ff789d4f99f44f590ad875ce1f65e5fa9563
|
||||
size 37
|
||||
@@ -1 +0,0 @@
|
||||
1105715802
|
||||
@@ -0,0 +1,243 @@
|
||||
package raw_to_tmcpr
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"compress/zlib"
|
||||
"errors"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/admin-else/strom/mc/proto/replay"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
)
|
||||
|
||||
var Cmd = flag.NewFlagSet("raw-to-tmcpr", flag.ContinueOnError)
|
||||
|
||||
var ClientboundIn = Cmd.String("clientbound", "", "raw tcpflow file for clientbound (server->client) direction")
|
||||
var ServerboundIn = Cmd.String("serverbound", "", "raw tcpflow file for serverbound (client->server) direction")
|
||||
var ClientboundOut = Cmd.String("clientbound-out", "clientbound.tmcpr", "output TMCPR file for clientbound")
|
||||
var ServerboundOut = Cmd.String("serverbound-out", "serverbound.tmcpr", "output TMCPR file for serverbound")
|
||||
var ClientboundState = Cmd.String("clientbound-state", "login", "initial state for clientbound: handshake, login, status, play")
|
||||
var ServerboundState = Cmd.String("serverbound-state", "handshake", "initial state for serverbound: handshake, login, status, play")
|
||||
|
||||
type captureReader struct {
|
||||
r io.Reader
|
||||
out *replay.Writer
|
||||
state proto_base.State
|
||||
threshold int32
|
||||
startTime time.Time
|
||||
haveStartTime bool
|
||||
direction proto_base.Direction
|
||||
pendingThreshold int32
|
||||
}
|
||||
|
||||
func (cr *captureReader) setStartTime() {
|
||||
if !cr.haveStartTime {
|
||||
cr.startTime = time.Now()
|
||||
cr.haveStartTime = true
|
||||
}
|
||||
}
|
||||
|
||||
func (cr *captureReader) timestamp() uint32 {
|
||||
return uint32(time.Since(cr.startTime).Milliseconds())
|
||||
}
|
||||
|
||||
func readPacketBytes(r io.Reader, threshold int32) ([]byte, error) {
|
||||
packetLen, err := proto_base.DecodeVarInt(r)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read packet length: %w", err)
|
||||
}
|
||||
|
||||
rawBytes := make([]byte, packetLen)
|
||||
_, err = io.ReadFull(r, rawBytes)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read packet data: %w", err)
|
||||
}
|
||||
|
||||
if threshold >= 0 {
|
||||
buf := bytes.NewReader(rawBytes)
|
||||
uncompressedLen, err := proto_base.DecodeVarInt(buf)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("read uncompressed length: %w", err)
|
||||
}
|
||||
if uncompressedLen == 0 {
|
||||
return io.ReadAll(buf)
|
||||
} else {
|
||||
zReader, err := zlib.NewReader(buf)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("zlib reader: %w", err)
|
||||
}
|
||||
defer zReader.Close()
|
||||
decompressed, err := io.ReadAll(zReader)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("decompress: %w", err)
|
||||
}
|
||||
return decompressed, nil
|
||||
}
|
||||
}
|
||||
|
||||
return rawBytes, nil
|
||||
}
|
||||
|
||||
func (cr *captureReader) trackState(packetBytes []byte) {
|
||||
buf := bytes.NewReader(packetBytes)
|
||||
packetId, err := proto_base.DecodeVarInt(buf)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
switch cr.state {
|
||||
case proto_base.Handshaking:
|
||||
if cr.direction == proto_base.ToServer && packetId == 0 {
|
||||
_, err = proto_base.DecodeVarInt(buf) // protocol version
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = proto_base.DecodeString(buf) // server address
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
portBytes := make([]byte, 2)
|
||||
_, err = io.ReadFull(buf, portBytes)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
nextState, err := proto_base.DecodeVarInt(buf)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if nextState == 2 {
|
||||
cr.state = proto_base.Login
|
||||
} else if nextState == 1 {
|
||||
cr.state = proto_base.Status
|
||||
}
|
||||
}
|
||||
case proto_base.Login:
|
||||
if cr.direction == proto_base.ToClient {
|
||||
if packetId == 0x03 {
|
||||
threshold, err := proto_base.DecodeVarInt(buf)
|
||||
if err == nil {
|
||||
cr.threshold = threshold
|
||||
}
|
||||
} else if packetId == 0x02 {
|
||||
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.Status:
|
||||
case proto_base.Play:
|
||||
}
|
||||
}
|
||||
|
||||
func (cr *captureReader) process() (count int, err error) {
|
||||
for {
|
||||
packetBytes, err := readPacketBytes(cr.r, cr.threshold)
|
||||
if err != nil {
|
||||
if errors.Is(err, io.EOF) || errors.Is(err, io.ErrUnexpectedEOF) {
|
||||
return count, nil
|
||||
}
|
||||
return count, err
|
||||
}
|
||||
|
||||
cr.setStartTime()
|
||||
cr.trackState(packetBytes)
|
||||
|
||||
err = cr.out.WriteRaw(packetBytes, cr.timestamp())
|
||||
if err != nil {
|
||||
return count, fmt.Errorf("write TMCPR: %w", err)
|
||||
}
|
||||
count++
|
||||
}
|
||||
}
|
||||
|
||||
func Run(args []string) (err error) {
|
||||
err = Cmd.Parse(args)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if *ClientboundIn == "" && *ServerboundIn == "" {
|
||||
return fmt.Errorf("at least one of -clientbound or -serverbound must be specified")
|
||||
}
|
||||
|
||||
parseState := func(name string) (proto_base.State, error) {
|
||||
switch name {
|
||||
case "handshake":
|
||||
return proto_base.Handshaking, nil
|
||||
case "login":
|
||||
return proto_base.Login, nil
|
||||
case "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)
|
||||
}
|
||||
}
|
||||
|
||||
var compressionThreshold int32 = -1
|
||||
|
||||
if *ClientboundIn != "" {
|
||||
state, err := parseState(*ClientboundState)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
compressionThreshold, err = processFile(*ClientboundIn, *ClientboundOut, state, proto_base.ToClient, -1)
|
||||
if err != nil {
|
||||
return fmt.Errorf("clientbound: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
if *ServerboundIn != "" {
|
||||
state, err := parseState(*ServerboundState)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = processFile(*ServerboundIn, *ServerboundOut, state, proto_base.ToServer, compressionThreshold)
|
||||
if err != nil {
|
||||
return fmt.Errorf("serverbound: %w", err)
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func processFile(inPath, outPath string, initial proto_base.State, dir proto_base.Direction, initialThreshold int32) (finalThreshold int32, err error) {
|
||||
in, err := os.Open(inPath)
|
||||
if err != nil {
|
||||
return initialThreshold, fmt.Errorf("open input: %w", err)
|
||||
}
|
||||
defer in.Close()
|
||||
|
||||
out, err := os.Create(outPath)
|
||||
if err != nil {
|
||||
return initialThreshold, fmt.Errorf("create output: %w", err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
cr := &captureReader{
|
||||
r: in,
|
||||
out: replay.NewWriter(out),
|
||||
state: initial,
|
||||
threshold: -1,
|
||||
direction: dir,
|
||||
pendingThreshold: initialThreshold,
|
||||
}
|
||||
if dir == proto_base.ToClient {
|
||||
cr.threshold = initialThreshold
|
||||
}
|
||||
|
||||
count, err := cr.process()
|
||||
if err != nil {
|
||||
return cr.threshold, err
|
||||
}
|
||||
|
||||
fmt.Printf("%s: %d packets written to %s (threshold=%d)\n", inPath, count, outPath, cr.threshold)
|
||||
return cr.threshold, nil
|
||||
}
|
||||
@@ -52,7 +52,7 @@ func GetChunkFromMca(x, z int32, version string) (b []byte, err error) {
|
||||
z += anvil.ChunksWidthRegionFile
|
||||
}
|
||||
|
||||
f, err := os.Open(fmt.Sprintf("./level/anvil/testdata/securechattestworld/region/r.%v.%v.mca", xmca, zmca))
|
||||
f, err := os.Open(fmt.Sprintf("./.devres/anvil_testdata/securechattestworld/region/r.%v.%v.mca", xmca, zmca))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -289,6 +289,9 @@ func (a *Account) CheckGiftCodeValidity(giftCode string) (valid bool, err error)
|
||||
return
|
||||
}
|
||||
|
||||
// NewAccountFromYGG creates an Account by authenticating the YGG token against
|
||||
// Mojang's API. It makes an HTTP call to fetch the player profile and returns
|
||||
// an Account with name and UUID populated, or an error if authentication fails.
|
||||
func NewAccountFromYGG(ygg string) (a *Account, err error) {
|
||||
a = &Account{
|
||||
Ygg: ygg,
|
||||
@@ -303,6 +306,8 @@ func NewAccountFromYGG(ygg string) (a *Account, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// NewAccount creates an Account from explicit name, UUID, and YGG token without
|
||||
// making any HTTP calls. The account uses Mojang's default API servers.
|
||||
func NewAccount(name string, uuid uuid.UUID, ygg string) (a *Account) {
|
||||
return &Account{
|
||||
Name: name,
|
||||
|
||||
@@ -4,6 +4,8 @@ import (
|
||||
"github.com/admin-else/strom/mc/crypto"
|
||||
)
|
||||
|
||||
// NewOfflineAccount creates an offline-mode Account with a UUID derived from the
|
||||
// player name. No HTTP calls are made; the UUID is computed locally.
|
||||
func NewOfflineAccount(name string) *Account {
|
||||
return &Account{
|
||||
Name: name,
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// BlockedServers fetches the list of SHA-1 hashes of blocked server IPs from
|
||||
// Mojang's session server. The returned strings are hex-encoded hashes.
|
||||
func BlockedServers() (s []string, err error) {
|
||||
resp, err := http.Get("https://sessionserver.mojang.com/blockedservers")
|
||||
if err != nil {
|
||||
@@ -36,6 +38,9 @@ type ProfileResp struct {
|
||||
Properties []ProfileProperty `json:"properties"`
|
||||
}
|
||||
|
||||
// HasJoined checks with Mojang's session server whether a player has joined a
|
||||
// given server. name is the player name, server is the server hash, and ip is
|
||||
// the optional player IP address. Returns the player's profile on success.
|
||||
func HasJoined(name, server, ip string) (p ProfileResp, err error) {
|
||||
url := "https://sessionserver.mojang.com/session/minecraft/hasJoined?username=" + name + "&serverId=" + server
|
||||
if ip != "" {
|
||||
@@ -62,6 +67,8 @@ type MojangPublicKeysResp struct {
|
||||
AuthenticationKeys []string `json:"authenticationKeys"`
|
||||
}
|
||||
|
||||
// MojangPublicKeys fetches Mojang's public keys for profile property signing and
|
||||
// player certificate verification from the session server.
|
||||
func MojangPublicKeys() (keys MojangPublicKeysResp, err error) {
|
||||
resp, err := http.Get("https://sessionserver.mojang.com/session/minecraft/profile/public_key_by_token")
|
||||
if err != nil {
|
||||
@@ -72,6 +79,8 @@ func MojangPublicKeys() (keys MojangPublicKeysResp, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// Profile fetches a player's profile by UUID from Mojang's session server.
|
||||
// If unsigned is false, signed profile properties are included in the response.
|
||||
func Profile(id string, unsinged bool) (p ProfileResp, err error) {
|
||||
url := "https://sessionserver.mojang.com/session/minecraft/profile/" + id
|
||||
if !unsinged {
|
||||
@@ -91,6 +100,8 @@ type IdName struct {
|
||||
Name string `json:"name"`
|
||||
}
|
||||
|
||||
// NameToId resolves a Minecraft player name to a UUID and canonical name by
|
||||
// making an HTTP GET to Mojang's API.
|
||||
func NameToId(name string) (idName IdName, err error) {
|
||||
// may also use these:
|
||||
//https://api.mojang.com/users/profiles/minecraft/<player name>
|
||||
@@ -105,6 +116,8 @@ func NameToId(name string) (idName IdName, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// NameToIdBulk resolves multiple Minecraft player names to UUIDs and canonical
|
||||
// names in a single HTTP POST to Mojang's API.
|
||||
func NameToIdBulk(names []string) (idNames []IdName, err error) {
|
||||
b := bytes.NewBuffer(nil)
|
||||
err = json.NewEncoder(b).Encode(names)
|
||||
|
||||
@@ -13,6 +13,7 @@ func (m *mod) onKeepAlive(p *v1_21_8.PlayToClientPacketKeepAlive) (err error) {
|
||||
return m.Send(&v1_21_8.PlayToServerPacketKeepAlive{KeepAliveId: p.KeepAliveId})
|
||||
}
|
||||
|
||||
// Start begins responding to keep-alive packets on the connection.
|
||||
func Start(c *proto.Conn) {
|
||||
m := &mod{Conn: c}
|
||||
m.RegisterUntilLatest(m.onKeepAlive)
|
||||
|
||||
@@ -2,6 +2,7 @@ package client
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/admin-else/strom/mc/data"
|
||||
@@ -21,6 +22,10 @@ func Connect(ctx context.Context, addr string, version string) (ret *proto.Conn,
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if s.Version.Protocol == 0 {
|
||||
err = errors.New("server didnt return protocol version")
|
||||
return
|
||||
}
|
||||
protocolVersion = s.Version.Protocol
|
||||
} else {
|
||||
var v data.VersionInfo
|
||||
@@ -55,3 +60,23 @@ func ConnectVersionLess(ctx context.Context, addr string) (ret *proto.Conn, err
|
||||
ret.W = ret.Conn
|
||||
return
|
||||
}
|
||||
|
||||
// ConnectWithConn wraps an existing net.Conn into a proto.Conn with the given
|
||||
// Minecraft version. The version must be non-empty.
|
||||
func ConnectWithConn(ctx context.Context, conn net.Conn, version string) (ret *proto.Conn, err error) {
|
||||
if ctx == nil {
|
||||
ctx = context.Background()
|
||||
}
|
||||
ret = proto.NewConnCtx(ctx)
|
||||
ret.Actor = proto_base.Client
|
||||
ret.Conn = conn
|
||||
ret.R = conn
|
||||
ret.W = conn
|
||||
v, err := data.LookUpVersionByName(version)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
ret.ProtocolVersion = v.Version
|
||||
ret.Version = version
|
||||
return
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ func (c *ConfigIgnorer) OnKeepAlive(packet *v1_21_8.ConfigurationToClientPacketK
|
||||
return
|
||||
}
|
||||
|
||||
// IgnoreConfig acknowledges configuration packets on the connection and transitions it to the Play state once configuration is complete.
|
||||
func IgnoreConfig(c *proto.Conn) (err error) {
|
||||
ci := &ConfigIgnorer{c}
|
||||
ci.RegisterCritical(ci.Default)
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
)
|
||||
|
||||
// MakeHandshakePacket creates a handshake packet using the connection's remote address as the server host.
|
||||
func MakeHandshakePacket(c *proto.Conn, nextState proto_base.State) (p *v1_21_8.HandshakingToServerPacketSetProtocol, err error) {
|
||||
return MakeHandshakePacketAddr(c, nextState, c.RemoteAddr().String())
|
||||
}
|
||||
|
||||
+143
-15
@@ -7,6 +7,7 @@ import (
|
||||
"crypto/x509"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net"
|
||||
|
||||
"github.com/admin-else/strom/mc/api"
|
||||
"github.com/admin-else/strom/mc/crypto"
|
||||
@@ -14,7 +15,10 @@ import (
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v26_2"
|
||||
"github.com/admin-else/strom/mc/text"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type LoginClient struct {
|
||||
@@ -110,22 +114,67 @@ func (s *LoginClient) OnDisconnect(packet *v1_21_8.LoginToClientPacketDisconnect
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnSuccess(success *v1_21_8.LoginToClientPacketSuccess) (err error) {
|
||||
s.GivenAccount = success
|
||||
err = s.Send(&v1_21_8.LoginToServerPacketLoginAcknowledged{})
|
||||
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
|
||||
}
|
||||
s.SetState(proto_base.Configuration)
|
||||
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),
|
||||
Username: success.Username,
|
||||
}
|
||||
s.SetState(proto_base.Play)
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnSuccess(success *v1_21_8.LoginToClientPacketSuccess) (err error) {
|
||||
s.GivenAccount = success
|
||||
if s.ProtocolVersion >= 764 {
|
||||
err = s.Send(&v1_21_8.LoginToServerPacketLoginAcknowledged{})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
s.SetState(proto_base.Configuration)
|
||||
} else {
|
||||
s.SetState(proto_base.Play)
|
||||
}
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnSuccess26_2(success *v26_2.LoginToClientPacketSuccess) (err error) {
|
||||
return s.OnSuccess(&v1_21_8.LoginToClientPacketSuccess{
|
||||
Uuid: success.Uuid,
|
||||
Username: success.Username,
|
||||
Properties: success.Properties,
|
||||
})
|
||||
}
|
||||
|
||||
func (s *LoginClient) OnStart() (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// LoginRaw performs the login handshake on an already-established connection without DNS resolution or configuration handling.
|
||||
// The handshake address is derived from the connection's RemoteAddr.
|
||||
func LoginRaw(c *proto.Conn, account *api.Account) (err error) {
|
||||
return LoginRawAddr(c, account, "")
|
||||
}
|
||||
|
||||
// LoginRawAddr performs the login handshake on an already-established connection using the given address for the handshake packet.
|
||||
// If hostAddr is empty, the handshake address is derived from the connection's RemoteAddr.
|
||||
func LoginRawAddr(c *proto.Conn, account *api.Account, hostAddr string) (err error) {
|
||||
lc := &LoginClient{
|
||||
Conn: c,
|
||||
Account: account,
|
||||
@@ -135,9 +184,18 @@ func LoginRaw(c *proto.Conn, account *api.Account) (err error) {
|
||||
lc.RegisterCriticalUntilLatest(lc.OnCompress)
|
||||
lc.RegisterCriticalUntilLatest(lc.OnEncrypt)
|
||||
lc.RegisterCriticalUntilLatest(lc.OnDisconnect)
|
||||
lc.RegisterCriticalUntilLatest(lc.OnSuccess)
|
||||
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)
|
||||
|
||||
p, err := MakeHandshakePacket(lc.Conn, proto_base.Login)
|
||||
var p proto_base.EncodeDecodeAble
|
||||
if hostAddr != "" {
|
||||
p, err = MakeHandshakePacketAddr(lc.Conn, proto_base.Login, hostAddr)
|
||||
} else {
|
||||
p, err = MakeHandshakePacket(lc.Conn, proto_base.Login)
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -147,7 +205,11 @@ func LoginRaw(c *proto.Conn, account *api.Account) (err error) {
|
||||
return
|
||||
}
|
||||
lc.SetState(proto_base.Login)
|
||||
err = lc.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: lc.Account.Name, PlayerUUID: lc.Account.Uuid})
|
||||
if lc.Conn.ProtocolVersion < 759 {
|
||||
err = lc.Send(&v1_8.LoginToServerPacketLoginStart{Username: lc.Account.Name})
|
||||
} else {
|
||||
err = lc.Send(&v1_21_8.LoginToServerPacketLoginStart{Username: lc.Account.Name, PlayerUUID: lc.Account.Uuid})
|
||||
}
|
||||
|
||||
err = lc.StartConn()
|
||||
if err != nil {
|
||||
@@ -156,31 +218,67 @@ func LoginRaw(c *proto.Conn, account *api.Account) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// WithoutDns returns a login setting that disables SRV DNS resolution during login.
|
||||
func WithoutDns() func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.NoDns = true
|
||||
}
|
||||
}
|
||||
|
||||
// WithContext returns a login setting that sets the context used for the connection dial and DNS resolution.
|
||||
func WithContext(ctx context.Context) func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.Ctx = ctx
|
||||
}
|
||||
}
|
||||
|
||||
// WithVersion returns a login setting that forces a specific Minecraft version string for the connection.
|
||||
func WithVersion(version string) func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.Version = version
|
||||
}
|
||||
}
|
||||
|
||||
func WithIgnoreConfig() func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.IgnoreConfig = true
|
||||
}
|
||||
}
|
||||
|
||||
// DialFunc is a context-aware dial function used by Login to establish a TCP connection.
|
||||
type DialFunc func(ctx context.Context, network, addr string) (net.Conn, error)
|
||||
|
||||
// WithConn returns a login setting that uses an already-established net.Conn instead of dialling.
|
||||
// WithVersion must also be set; auto-detection is not possible with a pre-established connection.
|
||||
func WithConn(conn net.Conn) func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.Conn = conn
|
||||
}
|
||||
}
|
||||
|
||||
// WithDialer returns a login setting that uses the given dial function instead of net.Dialer.
|
||||
// Auto version detection via status ping is still supported when no explicit version is set.
|
||||
func WithDialer(d DialFunc) func(ls *loginSettings) {
|
||||
return func(ls *loginSettings) {
|
||||
ls.Dialer = d
|
||||
}
|
||||
}
|
||||
|
||||
var (
|
||||
ErrWithConnRequiresVersion = errors.New("WithVersion is required when using WithConn")
|
||||
ErrWithConnNoStatus = errors.New("auto version detection is not supported with WithConn")
|
||||
)
|
||||
|
||||
type loginSettings struct {
|
||||
NoDns bool
|
||||
Ctx context.Context
|
||||
Version string
|
||||
IgnoreConfig bool
|
||||
Conn net.Conn
|
||||
Dialer DialFunc
|
||||
}
|
||||
|
||||
// Login resolves the address with SRV DNS, connects, performs the login handshake, and handles the configuration phase, returning an authenticated connection ready for play.
|
||||
func Login(connectTo string, account *api.Account, settings ...func(ls *loginSettings)) (c *proto.Conn, err error) {
|
||||
ls := &loginSettings{}
|
||||
|
||||
@@ -188,22 +286,52 @@ func Login(connectTo string, account *api.Account, settings ...func(ls *loginSet
|
||||
setting(ls)
|
||||
}
|
||||
|
||||
if !ls.NoDns {
|
||||
connectTo, _, _, err = DoDNSChecked(ls.Ctx, connectTo, nil)
|
||||
if ls.Conn != nil {
|
||||
if ls.Version == "" {
|
||||
return nil, ErrWithConnRequiresVersion
|
||||
}
|
||||
c, err = ConnectWithConn(ls.Ctx, ls.Conn, ls.Version)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
} else if ls.Dialer != nil {
|
||||
if ls.Version == "" {
|
||||
return nil, ErrWithConnRequiresVersion
|
||||
}
|
||||
if !ls.NoDns {
|
||||
connectTo, _, _, err = DoDNSChecked(ls.Ctx, connectTo, nil)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
var conn net.Conn
|
||||
conn, err = ls.Dialer(ls.Ctx, "tcp", connectTo)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
c, err = ConnectWithConn(ls.Ctx, conn, ls.Version)
|
||||
if err != nil {
|
||||
conn.Close()
|
||||
return
|
||||
}
|
||||
} else {
|
||||
if !ls.NoDns {
|
||||
connectTo, _, _, err = DoDNSChecked(ls.Ctx, connectTo, nil)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
c, err = Connect(ls.Ctx, connectTo, ls.Version)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
c, err = Connect(ls.Ctx, connectTo, ls.Version)
|
||||
err = LoginRawAddr(c, account, connectTo)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = LoginRaw(c, account)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if !ls.IgnoreConfig {
|
||||
if !ls.IgnoreConfig && c.ProtocolVersion >= 764 {
|
||||
err = IgnoreConfig(c)
|
||||
}
|
||||
return
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
package client_test
|
||||
|
||||
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"
|
||||
)
|
||||
|
||||
func assertClientSendConvertible(t *testing.T, srcType reflect.Type, name string, state proto_base.State, direction proto_base.Direction, targetVersion int32) {
|
||||
t.Helper()
|
||||
targetInfo, ok := proto.LookupPacketInfoByNameProtocolVersionStateAndDirection(name, targetVersion, state, direction)
|
||||
if !ok {
|
||||
t.Fatalf("packet %s not found for version %d", name, targetVersion)
|
||||
}
|
||||
targetType := reflect.TypeOf(targetInfo.Type)
|
||||
if !proto.SmartConvertibleTo(srcType, targetType) {
|
||||
t.Fatalf("%s is not smart-convertible from v1_21_8 to version %d", name, targetVersion)
|
||||
}
|
||||
}
|
||||
|
||||
func assertClientReceiveConvertible(t *testing.T, dstType reflect.Type, name string, state proto_base.State, direction proto_base.Direction, targetVersion int32) {
|
||||
t.Helper()
|
||||
targetInfo, ok := proto.LookupPacketInfoByNameProtocolVersionStateAndDirection(name, targetVersion, state, direction)
|
||||
if !ok {
|
||||
t.Fatalf("packet %s not found for version %d", name, targetVersion)
|
||||
}
|
||||
targetType := reflect.TypeOf(targetInfo.Type)
|
||||
if !proto.SmartConvertibleTo(targetType, dstType) {
|
||||
t.Fatalf("%s is not smart-convertible from version %d to v1_21_8", name, targetVersion)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoginClientSendAssumptions(t *testing.T) {
|
||||
v26_1Version := data.MustLookupProtocolVersion("26.1")
|
||||
|
||||
// Packets sent by LoginClient as v1_21_8.
|
||||
assertClientSendConvertible(t, reflect.TypeFor[*v1_21_8.HandshakingToServerPacketSetProtocol](), "set_protocol", proto_base.Handshaking, proto_base.ToServer, v26_1Version)
|
||||
assertClientSendConvertible(t, reflect.TypeFor[*v1_21_8.LoginToServerPacketLoginStart](), "login_start", proto_base.Login, proto_base.ToServer, v26_1Version)
|
||||
assertClientSendConvertible(t, reflect.TypeFor[*v1_21_8.LoginToServerPacketLoginAcknowledged](), "login_acknowledged", proto_base.Login, proto_base.ToServer, v26_1Version)
|
||||
assertClientSendConvertible(t, reflect.TypeFor[*v1_21_8.LoginToServerPacketEncryptionBegin](), "encryption_begin", proto_base.Login, proto_base.ToServer, v26_1Version)
|
||||
}
|
||||
|
||||
func TestLoginClientReceiveAssumptions(t *testing.T) {
|
||||
v26_1Version := data.MustLookupProtocolVersion("26.1")
|
||||
|
||||
// Packets received by LoginClient via RegisterCriticalUntilLatest.
|
||||
// login_success is excluded because 26.2 is not convertible.
|
||||
assertClientReceiveConvertible(t, reflect.TypeFor[*v1_21_8.LoginToClientPacketCompress](), "compress", proto_base.Login, proto_base.ToClient, v26_1Version)
|
||||
assertClientReceiveConvertible(t, reflect.TypeFor[*v1_21_8.LoginToClientPacketEncryptionBegin](), "encryption_begin", proto_base.Login, proto_base.ToClient, v26_1Version)
|
||||
assertClientReceiveConvertible(t, reflect.TypeFor[*v1_21_8.LoginToClientPacketDisconnect](), "disconnect", proto_base.Login, proto_base.ToClient, v26_1Version)
|
||||
}
|
||||
+30
-4
@@ -9,6 +9,7 @@ import (
|
||||
"github.com/admin-else/strom/mc/proto"
|
||||
"github.com/admin-else/strom/mc/proto_base"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_21_8"
|
||||
"github.com/admin-else/strom/mc/proto_generated/v1_8"
|
||||
"github.com/admin-else/strom/mc/server"
|
||||
)
|
||||
|
||||
@@ -36,16 +37,38 @@ func (s *StatusClient) OnPong(p *v1_21_8.StatusToClientPacketPing) (err error) {
|
||||
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) {
|
||||
s.PingReceiveTime = time.Now()
|
||||
err = event.HandlerDoneErr{}
|
||||
return
|
||||
}
|
||||
|
||||
// StatusRaw returns a StatusClient that is not connected to a server.
|
||||
// So ignore the resource leak warning. And maybe attach a warn ignore comment.
|
||||
// It does not resolve SRV records.
|
||||
func StatusRaw(ctx context.Context, addr string) (s *StatusClient, err error) {
|
||||
return StatusRawWithVersion(ctx, addr, "1.21.8")
|
||||
}
|
||||
|
||||
// StatusRawWithVersion is like StatusRaw but uses the given Minecraft version for the handshake.
|
||||
func StatusRawWithVersion(ctx context.Context, addr, version string) (s *StatusClient, err error) {
|
||||
c, err := ConnectVersionLess(ctx, addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer c.Close()
|
||||
err = c.SetVersion("1.21.8")
|
||||
err = c.SetVersion(version)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -54,6 +77,8 @@ func StatusRaw(ctx context.Context, addr string) (s *StatusClient, err error) {
|
||||
}
|
||||
s.RegisterCriticalUntilLatest(s.OnStatus)
|
||||
s.RegisterCriticalUntilLatest(s.OnPong)
|
||||
s.RegisterCritical(s.OnStatusV1_8)
|
||||
s.RegisterCritical(s.OnPongV1_8)
|
||||
|
||||
p, err := MakeHandshakePacketAddr(s.Conn, proto_base.Status, addr)
|
||||
if err != nil {
|
||||
@@ -71,11 +96,12 @@ func StatusRaw(ctx context.Context, addr string) (s *StatusClient, err error) {
|
||||
}
|
||||
|
||||
// StatusNoDns is like Status but does not resolve SRV records.
|
||||
func StatusNoDns(addr string) (status server.StatusResponse, err error) {
|
||||
s, err := StatusRaw(context.Background(), addr)
|
||||
func StatusNoDns(ctx context.Context, addr string) (status server.StatusResponse, err error) {
|
||||
s, err := StatusRaw(ctx, addr)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer s.Close()
|
||||
err = json.Unmarshal([]byte(s.Status), &status)
|
||||
return
|
||||
}
|
||||
@@ -86,5 +112,5 @@ func Status(ctx context.Context, addr string) (status server.StatusResponse, err
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return StatusNoDns(addr)
|
||||
return StatusNoDns(ctx, addr)
|
||||
}
|
||||
|
||||
@@ -41,10 +41,12 @@ type CFB8 struct {
|
||||
mutex sync.Mutex
|
||||
}
|
||||
|
||||
// NewCFB8Decrypt creates a new CFB8 stream cipher in decrypt mode.
|
||||
func NewCFB8Decrypt(c cipher.Block, iv []byte) *CFB8 {
|
||||
return newCFB8(c, iv, true)
|
||||
}
|
||||
|
||||
// NewCFB8Encrypt creates a new CFB8 stream cipher in encrypt mode.
|
||||
func NewCFB8Encrypt(c cipher.Block, iv []byte) *CFB8 {
|
||||
return newCFB8(c, iv, false)
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ func uuidV3(space []byte, data []byte) uuid.UUID {
|
||||
return u
|
||||
}
|
||||
|
||||
// FromOfflinePlayer generates a UUID for an offline-mode (cracked) player from their display name.
|
||||
func FromOfflinePlayer(displayName string) uuid.UUID {
|
||||
return uuidV3([]byte("OfflinePlayer:"), []byte(displayName))
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ type Biome struct {
|
||||
|
||||
var BiomesCache = make(map[string][]*Biome)
|
||||
|
||||
// BiomesForVersion returns the biome definitions for the given Minecraft version, caching them after the first load.
|
||||
func BiomesForVersion(v string) (ret []*Biome) {
|
||||
var ok bool
|
||||
if ret, ok = BiomesCache[v]; ok {
|
||||
@@ -39,6 +40,7 @@ func BiomesForVersion(v string) (ret []*Biome) {
|
||||
return b
|
||||
}
|
||||
|
||||
// LookupBiomeById returns the biome with the given numeric ID in the given version.
|
||||
func LookupBiomeById(version string, id int32) (biome *Biome, ok bool) {
|
||||
for _, b := range BiomesForVersion(version) {
|
||||
if b.Id == id {
|
||||
@@ -52,6 +54,7 @@ func LookupBiomeById(version string, id int32) (biome *Biome, ok bool) {
|
||||
|
||||
var UnknownBiomeNameErr = errors.New("unknown biome Name")
|
||||
|
||||
// LookupBiomeByName returns the biome with the given name in the given version.
|
||||
func LookupBiomeByName(version string, name string) (biome *Biome, ok bool) {
|
||||
for _, b := range BiomesForVersion(version) {
|
||||
if b.Name == name {
|
||||
|
||||
@@ -59,6 +59,7 @@ type BlockState struct {
|
||||
var BlocksCache = make(map[string][]*Block)
|
||||
var BlocksCacheIdMap = make(map[string]map[int32]*Block)
|
||||
|
||||
// BlocksForVersion returns the block definitions for the given Minecraft version, caching them after the first load.
|
||||
func BlocksForVersion(v string) (ret []*Block) {
|
||||
var ok bool
|
||||
if ret, ok = BlocksCache[v]; ok {
|
||||
@@ -84,6 +85,7 @@ func BlocksForVersion(v string) (ret []*Block) {
|
||||
return b
|
||||
}
|
||||
|
||||
// LookupBlockByStateId returns the block for the given global palette state ID in the given version.
|
||||
func LookupBlockByStateId(version string, stateId int32) (block *Block, ok bool) {
|
||||
idmap, found := BlocksCacheIdMap[version]
|
||||
if !found {
|
||||
@@ -101,6 +103,7 @@ func LookupBlockByStateId(version string, stateId int32) (block *Block, ok bool)
|
||||
|
||||
var UnknownBlockNameErr = errors.New("unknown block Name")
|
||||
|
||||
// LookupBlockByName returns the block with the given name in the given version.
|
||||
func LookupBlockByName(version string, name string) (block *Block, ok bool) {
|
||||
for _, b := range BlocksForVersion(version) {
|
||||
if b.Name == name {
|
||||
@@ -111,6 +114,7 @@ func LookupBlockByName(version string, name string) (block *Block, ok bool) {
|
||||
return
|
||||
}
|
||||
|
||||
// StateIdFromBlocKAndStateMap returns the global palette state ID for the given block name and state property map in the given version.
|
||||
func StateIdFromBlocKAndStateMap(version string, name string, stateMap map[string]string) (stateId int32, err error) {
|
||||
b, ok := LookupBlockByName(version, name)
|
||||
if !ok {
|
||||
@@ -135,6 +139,7 @@ var BadBlockStateTypeErr = errors.New("bad block state type")
|
||||
var BadEnumErr = errors.New("bad enum")
|
||||
var SupplyAllStatesErr = errors.New("supply all states")
|
||||
|
||||
// FromBlockState converts a global palette state ID back into a block definition and a map of state properties.
|
||||
func FromBlockState(version string, stateId int32) (b *Block, stateData map[string]string, err error) {
|
||||
b, ok := LookupBlockByStateId(version, stateId)
|
||||
if !ok {
|
||||
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/sh
|
||||
set -xeuo pipefail
|
||||
|
||||
# Copy minecraft-data from the local AnyGate checkout instead of cloning upstream.
|
||||
# This is used when upstream does not yet have the target version or when we want
|
||||
# to test local changes before pushing.
|
||||
|
||||
LOCAL_MINECRAFT_DATA="${LOCAL_MINECRAFT_DATA:-$HOME/src/anygate/minecraft-data}"
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
rm -rf minecraft-data/
|
||||
mkdir -p minecraft-data/pc
|
||||
|
||||
cp "$LOCAL_MINECRAFT_DATA/data/dataPaths.json" minecraft-data/
|
||||
|
||||
copy-mc() {
|
||||
cp -r "$LOCAL_MINECRAFT_DATA/data/pc/$1" minecraft-data/pc
|
||||
}
|
||||
|
||||
copy-mc common
|
||||
|
||||
copy-mc 1.21.8
|
||||
copy-mc 1.21.9
|
||||
copy-mc 1.21.11
|
||||
copy-mc 26.1
|
||||
copy-mc 26.2
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
//go:embed minecraft-data/pc minecraft-data/dataPaths.json
|
||||
var MinecraftData embed.FS
|
||||
|
||||
// LoadJson reads a JSON file from the embedded minecraft-data FS and unmarshals it into data.
|
||||
func LoadJson(path string, data any) (err error) {
|
||||
b, err := MinecraftData.ReadFile(path)
|
||||
if err != nil {
|
||||
@@ -21,6 +22,7 @@ func LoadJson(path string, data any) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// LoadVersionedJson loads a version-specific JSON data file from the embedded minecraft-data FS and unmarshals it into data.
|
||||
func LoadVersionedJson(version, dataName string, data any) (err error) {
|
||||
b, err := MinecraftData.ReadFile("minecraft-data/" + Paths.Data[version][dataName] + "/" + dataName + ".json")
|
||||
if err != nil {
|
||||
|
||||
@@ -3,6 +3,8 @@ set -xeuo pipefail
|
||||
|
||||
# Go get / install does not clone git submodules so we have to do it like this
|
||||
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
rm -rf minecraft-data/
|
||||
git clone --depth 1 git@github.com:PrismarineJS/minecraft-data.git
|
||||
mv minecraft-data minecraft-data-untrimmed
|
||||
|
||||
@@ -19,6 +19,7 @@ type Item struct {
|
||||
var ItemsCache = make(map[string][]*Item)
|
||||
var ItemsCacheMutex = &sync.RWMutex{}
|
||||
|
||||
// ItemsForVersion returns the item definitions for the given Minecraft version, caching them after the first load.
|
||||
func ItemsForVersion(v string) (ret []*Item) {
|
||||
var ok bool
|
||||
ItemsCacheMutex.RLock()
|
||||
@@ -35,6 +36,7 @@ func ItemsForVersion(v string) (ret []*Item) {
|
||||
return b
|
||||
}
|
||||
|
||||
// LookupItemById returns the item with the given numeric ID in the given version.
|
||||
func LookupItemById(version string, id int32) (item *Item, ok bool) {
|
||||
for _, i := range ItemsForVersion(version) {
|
||||
if i.Id == id {
|
||||
@@ -46,6 +48,7 @@ func LookupItemById(version string, id int32) (item *Item, ok bool) {
|
||||
return
|
||||
}
|
||||
|
||||
// LookupItemByName returns the item with the given name in the given version.
|
||||
func LookupItemByName(version string, name string) (item *Item, ok bool) {
|
||||
for _, i := range ItemsForVersion(version) {
|
||||
if i.Name == name {
|
||||
|
||||
@@ -1583,7 +1583,8 @@
|
||||
"tints": "pc/1.21.5",
|
||||
"version": "pc/1.21.5",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/1.21.5"
|
||||
"proto": "pc/1.21.5",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.5"
|
||||
},
|
||||
"1.21.6": {
|
||||
"attributes": "pc/1.21.6",
|
||||
@@ -1610,7 +1611,8 @@
|
||||
"tints": "pc/1.21.6",
|
||||
"version": "pc/1.21.6",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/1.21.6"
|
||||
"proto": "pc/1.21.6",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.6"
|
||||
},
|
||||
"1.21.8": {
|
||||
"attributes": "pc/1.21.8",
|
||||
@@ -1630,7 +1632,6 @@
|
||||
"loginPacket": "pc/1.21.3",
|
||||
"mapIcons": "pc/1.20.2",
|
||||
"materials": "pc/1.21.8",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.8",
|
||||
"particles": "pc/1.21.8",
|
||||
"protocol": "pc/1.21.8",
|
||||
"recipes": "pc/1.21.8",
|
||||
@@ -1638,7 +1639,8 @@
|
||||
"tints": "pc/1.21.8",
|
||||
"version": "pc/1.21.8",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/1.21.8"
|
||||
"proto": "pc/1.21.8",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.8"
|
||||
},
|
||||
"1.21.9": {
|
||||
"attributes": "pc/1.21.9",
|
||||
@@ -1658,7 +1660,6 @@
|
||||
"loginPacket": "pc/1.21.9",
|
||||
"mapIcons": "pc/1.20.2",
|
||||
"materials": "pc/1.21.9",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.9",
|
||||
"particles": "pc/1.21.9",
|
||||
"protocol": "pc/1.21.9",
|
||||
"recipes": "pc/1.21.9",
|
||||
@@ -1666,7 +1667,8 @@
|
||||
"tints": "pc/1.21.9",
|
||||
"version": "pc/1.21.9",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/1.21.9"
|
||||
"proto": "pc/1.21.9",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.9"
|
||||
},
|
||||
"1.21.10": {
|
||||
"attributes": "pc/1.21.9",
|
||||
@@ -1713,7 +1715,6 @@
|
||||
"loginPacket": "pc/1.21.11",
|
||||
"mapIcons": "pc/1.20.2",
|
||||
"materials": "pc/1.21.11",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.11",
|
||||
"particles": "pc/1.21.11",
|
||||
"protocol": "pc/1.21.11",
|
||||
"recipes": "pc/1.21.11",
|
||||
@@ -1721,7 +1722,62 @@
|
||||
"tints": "pc/1.21.11",
|
||||
"version": "pc/1.21.11",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/1.21.11",
|
||||
"multi_noise_biome_source_parameter_list": "pc/1.21.11"
|
||||
},
|
||||
"26.1": {
|
||||
"attributes": "pc/26.1",
|
||||
"blockCollisionShapes": "pc/26.1",
|
||||
"blocks": "pc/26.1",
|
||||
"blockLoot": "pc/1.20",
|
||||
"biomes": "pc/26.1",
|
||||
"commands": "pc/1.20.3",
|
||||
"effects": "pc/26.1",
|
||||
"enchantments": "pc/26.1",
|
||||
"entities": "pc/26.1",
|
||||
"entityLoot": "pc/1.20",
|
||||
"foods": "pc/26.1",
|
||||
"instruments": "pc/26.1",
|
||||
"items": "pc/26.1",
|
||||
"language": "pc/26.1",
|
||||
"loginPacket": "pc/1.21.11",
|
||||
"mapIcons": "pc/1.20.2",
|
||||
"materials": "pc/26.1",
|
||||
"particles": "pc/26.1",
|
||||
"protocol": "pc/26.1",
|
||||
"recipes": "pc/26.1",
|
||||
"sounds": "pc/26.1",
|
||||
"tints": "pc/26.1",
|
||||
"version": "pc/26.1",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/latest"
|
||||
},
|
||||
"26.2": {
|
||||
"attributes": "pc/26.2",
|
||||
"blockCollisionShapes": "pc/26.2",
|
||||
"blocks": "pc/26.2",
|
||||
"blockLoot": "pc/1.20",
|
||||
"biomes": "pc/26.2",
|
||||
"commands": "pc/1.20.3",
|
||||
"effects": "pc/26.2",
|
||||
"enchantments": "pc/26.2",
|
||||
"entities": "pc/26.2",
|
||||
"entityLoot": "pc/1.20",
|
||||
"foods": "pc/26.2",
|
||||
"instruments": "pc/26.2",
|
||||
"items": "pc/26.2",
|
||||
"language": "pc/26.2",
|
||||
"loginPacket": "pc/1.21.11",
|
||||
"mapIcons": "pc/1.20.2",
|
||||
"materials": "pc/26.2",
|
||||
"particles": "pc/26.2",
|
||||
"protocol": "pc/26.2",
|
||||
"recipes": "pc/26.2",
|
||||
"sounds": "pc/26.2",
|
||||
"tints": "pc/26.2",
|
||||
"version": "pc/26.2",
|
||||
"windows": "pc/1.16.1",
|
||||
"proto": "pc/26.2"
|
||||
}
|
||||
},
|
||||
"bedrock": {
|
||||
@@ -2767,12 +2823,12 @@
|
||||
"language": "bedrock/1.21.70"
|
||||
},
|
||||
"1.26.0": {
|
||||
"blocks": "bedrock/1.21.111",
|
||||
"blockStates": "bedrock/1.21.111",
|
||||
"blockCollisionShapes": "bedrock/1.21.111",
|
||||
"blocks": "bedrock/1.26.0",
|
||||
"blockStates": "bedrock/1.26.0",
|
||||
"blockCollisionShapes": "bedrock/1.26.0",
|
||||
"biomes": "bedrock/1.21.60",
|
||||
"entities": "bedrock/1.21.80",
|
||||
"items": "bedrock/1.21.111",
|
||||
"items": "bedrock/1.26.0",
|
||||
"recipes": "bedrock/1.19.10",
|
||||
"instruments": "bedrock/1.17.0",
|
||||
"materials": "pc/1.17",
|
||||
@@ -2781,33 +2837,77 @@
|
||||
"protocol": "bedrock/1.26.0",
|
||||
"windows": "bedrock/1.16.201",
|
||||
"steve": "bedrock/1.21.70",
|
||||
"blocksB2J": "bedrock/1.21.111",
|
||||
"blocksJ2B": "bedrock/1.21.111",
|
||||
"blocksB2J": "bedrock/1.26.0",
|
||||
"blocksJ2B": "bedrock/1.26.0",
|
||||
"proto": "bedrock/1.26.0",
|
||||
"types": "bedrock/latest",
|
||||
"version": "bedrock/1.26.0",
|
||||
"language": "bedrock/1.21.70"
|
||||
},
|
||||
"26.10": {
|
||||
"blocks": "bedrock/1.21.111",
|
||||
"blockStates": "bedrock/1.21.111",
|
||||
"blockCollisionShapes": "bedrock/1.21.111",
|
||||
"1.26.10": {
|
||||
"blocks": "bedrock/1.26.10",
|
||||
"blockStates": "bedrock/1.26.10",
|
||||
"blockCollisionShapes": "bedrock/1.26.10",
|
||||
"biomes": "bedrock/1.21.60",
|
||||
"entities": "bedrock/1.21.80",
|
||||
"items": "bedrock/1.21.111",
|
||||
"items": "bedrock/1.26.10",
|
||||
"recipes": "bedrock/1.19.10",
|
||||
"instruments": "bedrock/1.17.0",
|
||||
"materials": "pc/1.17",
|
||||
"enchantments": "bedrock/1.19.1",
|
||||
"effects": "pc/1.17",
|
||||
"protocol": "bedrock/26.10",
|
||||
"protocol": "bedrock/1.26.10",
|
||||
"windows": "bedrock/1.16.201",
|
||||
"steve": "bedrock/1.21.70",
|
||||
"blocksB2J": "bedrock/1.21.111",
|
||||
"blocksJ2B": "bedrock/1.21.111",
|
||||
"blocksB2J": "bedrock/1.26.0",
|
||||
"blocksJ2B": "bedrock/1.26.0",
|
||||
"proto": "bedrock/1.26.10",
|
||||
"types": "bedrock/latest",
|
||||
"version": "bedrock/1.26.10",
|
||||
"language": "bedrock/1.21.70"
|
||||
},
|
||||
"1.26.20": {
|
||||
"blocks": "bedrock/1.26.20",
|
||||
"blockStates": "bedrock/1.26.20",
|
||||
"blockCollisionShapes": "bedrock/1.26.20",
|
||||
"biomes": "bedrock/1.21.60",
|
||||
"entities": "bedrock/1.21.80",
|
||||
"items": "bedrock/1.26.20",
|
||||
"recipes": "bedrock/1.19.10",
|
||||
"instruments": "bedrock/1.17.0",
|
||||
"materials": "pc/1.17",
|
||||
"enchantments": "bedrock/1.19.1",
|
||||
"effects": "pc/1.17",
|
||||
"protocol": "bedrock/1.26.20",
|
||||
"windows": "bedrock/1.16.201",
|
||||
"steve": "bedrock/1.21.70",
|
||||
"blocksB2J": "bedrock/1.26.20",
|
||||
"blocksJ2B": "bedrock/1.26.20",
|
||||
"proto": "bedrock/1.26.20",
|
||||
"types": "bedrock/latest",
|
||||
"version": "bedrock/1.26.20",
|
||||
"language": "bedrock/1.21.70"
|
||||
},
|
||||
"1.26.30": {
|
||||
"blocks": "bedrock/1.26.30",
|
||||
"blockStates": "bedrock/1.26.30",
|
||||
"blockCollisionShapes": "bedrock/1.26.30",
|
||||
"biomes": "bedrock/1.21.60",
|
||||
"entities": "bedrock/1.21.80",
|
||||
"items": "bedrock/1.26.30",
|
||||
"recipes": "bedrock/1.19.10",
|
||||
"instruments": "bedrock/1.17.0",
|
||||
"materials": "pc/1.17",
|
||||
"enchantments": "bedrock/1.19.1",
|
||||
"effects": "pc/1.17",
|
||||
"protocol": "bedrock/1.26.30",
|
||||
"windows": "bedrock/1.16.201",
|
||||
"steve": "bedrock/1.21.70",
|
||||
"blocksB2J": "bedrock/1.26.30",
|
||||
"blocksJ2B": "bedrock/1.26.30",
|
||||
"proto": "bedrock/latest",
|
||||
"types": "bedrock/latest",
|
||||
"version": "bedrock/26.10",
|
||||
"version": "bedrock/1.26.30",
|
||||
"language": "bedrock/1.21.70"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,156 +1,4 @@
|
||||
{
|
||||
"minecraft:nether": [
|
||||
{
|
||||
"biome": "minecraft:nether_wastes",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:soul_sand_valley",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
-5000,
|
||||
-5000
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:crimson_forest",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
4000,
|
||||
4000
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:warped_forest",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
5000,
|
||||
5000
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.375
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:basalt_deltas",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
-5000,
|
||||
-5000
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.175
|
||||
}
|
||||
}
|
||||
],
|
||||
"minecraft:overworld": [
|
||||
{
|
||||
"biome": "minecraft:mushroom_fields",
|
||||
@@ -227942,5 +227790,157 @@
|
||||
"offset": 0.0
|
||||
}
|
||||
}
|
||||
],
|
||||
"minecraft:nether": [
|
||||
{
|
||||
"biome": "minecraft:nether_wastes",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:soul_sand_valley",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
-5000,
|
||||
-5000
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:crimson_forest",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
4000,
|
||||
4000
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.0
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:warped_forest",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"humidity": [
|
||||
5000,
|
||||
5000
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.375
|
||||
}
|
||||
},
|
||||
{
|
||||
"biome": "minecraft:basalt_deltas",
|
||||
"parameters": {
|
||||
"temperature": [
|
||||
-5000,
|
||||
-5000
|
||||
],
|
||||
"humidity": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"continentalness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"erosion": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"depth": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"weirdness": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"offset": 0.175
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -447,87 +447,61 @@
|
||||
]
|
||||
],
|
||||
"attribute_modifiers": [
|
||||
"array",
|
||||
{
|
||||
"countType": "varint",
|
||||
"type": [
|
||||
"container",
|
||||
[
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "attributes",
|
||||
"type": [
|
||||
"array",
|
||||
{
|
||||
"name": "typeId",
|
||||
"type": "varint"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"type": "f64"
|
||||
},
|
||||
{
|
||||
"name": "operation",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "add",
|
||||
"1": "multiply_base",
|
||||
"2": "multiply_total"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "slot",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "any",
|
||||
"1": "main_hand",
|
||||
"2": "off_hand",
|
||||
"3": "hand",
|
||||
"4": "feet",
|
||||
"5": "legs",
|
||||
"6": "chest",
|
||||
"7": "head",
|
||||
"8": "armor",
|
||||
"9": "body",
|
||||
"10": "saddle"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "display",
|
||||
"countType": "varint",
|
||||
"type": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "type",
|
||||
"name": "typeId",
|
||||
"type": "varint"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"type": "f64"
|
||||
},
|
||||
{
|
||||
"name": "operation",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "default",
|
||||
"1": "hidden",
|
||||
"2": "override"
|
||||
"0": "add",
|
||||
"1": "multiply_base",
|
||||
"2": "multiply_total"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "component",
|
||||
"name": "slot",
|
||||
"type": [
|
||||
"switch",
|
||||
"mapper",
|
||||
{
|
||||
"compareTo": "type",
|
||||
"fields": {
|
||||
"override": "anonymousNbt"
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "any",
|
||||
"1": "main_hand",
|
||||
"2": "off_hand",
|
||||
"3": "hand",
|
||||
"4": "feet",
|
||||
"5": "legs",
|
||||
"6": "chest",
|
||||
"7": "head",
|
||||
"8": "armor",
|
||||
"9": "body",
|
||||
"10": "saddle"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -536,8 +510,42 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "display",
|
||||
"type": [
|
||||
"container",
|
||||
[
|
||||
{
|
||||
"name": "type",
|
||||
"type": [
|
||||
"mapper",
|
||||
{
|
||||
"type": "varint",
|
||||
"mappings": {
|
||||
"0": "default",
|
||||
"1": "hidden",
|
||||
"2": "override"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "component",
|
||||
"type": [
|
||||
"switch",
|
||||
{
|
||||
"compareTo": "type",
|
||||
"fields": {
|
||||
"override": "anonymousNbt"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
]
|
||||
],
|
||||
"custom_model_data": [
|
||||
"container",
|
||||
@@ -5706,6 +5714,10 @@
|
||||
"play": {
|
||||
"toClient": {
|
||||
"types": {
|
||||
"packet_bundle_delimiter": [
|
||||
"container",
|
||||
[]
|
||||
],
|
||||
"SlotDisplay": [
|
||||
"container",
|
||||
[
|
||||
@@ -10121,7 +10133,7 @@
|
||||
{
|
||||
"compareTo": "name",
|
||||
"fields": {
|
||||
"bundle_delimiter": "void",
|
||||
"bundle_delimiter": "packet_bundle_delimiter",
|
||||
"spawn_entity": "packet_spawn_entity",
|
||||
"animation": "packet_animation",
|
||||
"statistics": "packet_statistics",
|
||||
|
||||
@@ -1595,6 +1595,9 @@
|
||||
if select_known_packs: packet_common_select_known_packs
|
||||
if custom_click_action: packet_common_custom_click_action
|
||||
^play.toClient.types:
|
||||
# MC: ClientboundBundleDelimiterPacket
|
||||
packet_bundle_delimiter:
|
||||
# empty
|
||||
SlotDisplay:
|
||||
type: varint =>
|
||||
- empty
|
||||
@@ -2844,7 +2847,7 @@
|
||||
- clear_dialog
|
||||
- show_dialog
|
||||
params: name ?
|
||||
if bundle_delimiter: void
|
||||
if bundle_delimiter: packet_bundle_delimiter
|
||||
if spawn_entity: packet_spawn_entity
|
||||
if animation: packet_animation
|
||||
if statistics: packet_statistics
|
||||
@@ -3031,7 +3034,7 @@
|
||||
"count": 3
|
||||
}
|
||||
]
|
||||
checksum: i8
|
||||
checksum: u8
|
||||
# MC: ServerboundChatPacket
|
||||
packet_chat_message:
|
||||
message: string
|
||||
@@ -3050,7 +3053,7 @@
|
||||
"count": 3
|
||||
}
|
||||
]
|
||||
checksum: i8
|
||||
checksum: u8
|
||||
# MC: ServerboundChatSessionUpdatePacket
|
||||
packet_chat_session_update:
|
||||
sessionUUID: UUID
|
||||
@@ -3076,7 +3079,7 @@
|
||||
# MC: ServerboundContainerButtonClickPacket
|
||||
packet_enchant_item:
|
||||
windowId: ContainerID
|
||||
enchantment: i8
|
||||
enchantment: varint
|
||||
# MC: ServerboundContainerClickPacket
|
||||
packet_window_click:
|
||||
windowId: ContainerID
|
||||
|
||||
@@ -4377,6 +4377,10 @@
|
||||
"play": {
|
||||
"toClient": {
|
||||
"types": {
|
||||
"packet_bundle_delimiter": [
|
||||
"container",
|
||||
[]
|
||||
],
|
||||
"SlotDisplay": [
|
||||
"container",
|
||||
[
|
||||
@@ -8702,7 +8706,7 @@
|
||||
{
|
||||
"compareTo": "name",
|
||||
"fields": {
|
||||
"bundle_delimiter": "void",
|
||||
"bundle_delimiter": "packet_bundle_delimiter",
|
||||
"spawn_entity": "packet_spawn_entity",
|
||||
"animation": "packet_animation",
|
||||
"statistics": "packet_statistics",
|
||||
@@ -8996,7 +9000,7 @@
|
||||
},
|
||||
{
|
||||
"name": "checksum",
|
||||
"type": "i8"
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
@@ -9042,7 +9046,7 @@
|
||||
},
|
||||
{
|
||||
"name": "checksum",
|
||||
"type": "i8"
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
@@ -9115,7 +9119,7 @@
|
||||
},
|
||||
{
|
||||
"name": "enchantment",
|
||||
"type": "i8"
|
||||
"type": "varint"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@@ -1835,6 +1835,9 @@
|
||||
if custom_click_action: packet_common_custom_click_action
|
||||
if accept_code_of_conduct: packet_accept_code_of_conduct
|
||||
^play.toClient.types:
|
||||
# MC: ClientboundBundleDelimiterPacket
|
||||
packet_bundle_delimiter:
|
||||
# empty
|
||||
SlotDisplay:
|
||||
type: varint =>
|
||||
- empty
|
||||
@@ -3114,7 +3117,7 @@
|
||||
- clear_dialog
|
||||
- show_dialog
|
||||
params: name ?
|
||||
if bundle_delimiter: void
|
||||
if bundle_delimiter: packet_bundle_delimiter
|
||||
if spawn_entity: packet_spawn_entity
|
||||
if animation: packet_animation
|
||||
if statistics: packet_statistics
|
||||
@@ -3305,7 +3308,7 @@
|
||||
"count": 3
|
||||
}
|
||||
]
|
||||
checksum: i8
|
||||
checksum: u8
|
||||
# MC: ServerboundChatPacket
|
||||
packet_chat_message:
|
||||
message: string
|
||||
@@ -3350,7 +3353,7 @@
|
||||
# MC: ServerboundContainerButtonClickPacket
|
||||
packet_enchant_item:
|
||||
windowId: ContainerID
|
||||
enchantment: i8
|
||||
enchantment: varint
|
||||
# MC: ServerboundContainerClickPacket
|
||||
packet_window_click:
|
||||
windowId: ContainerID
|
||||
|
||||
@@ -5416,6 +5416,10 @@
|
||||
"play": {
|
||||
"toClient": {
|
||||
"types": {
|
||||
"packet_bundle_delimiter": [
|
||||
"container",
|
||||
[]
|
||||
],
|
||||
"SlotDisplay": [
|
||||
"container",
|
||||
[
|
||||
@@ -9831,7 +9835,7 @@
|
||||
{
|
||||
"compareTo": "name",
|
||||
"fields": {
|
||||
"bundle_delimiter": "void",
|
||||
"bundle_delimiter": "packet_bundle_delimiter",
|
||||
"spawn_entity": "packet_spawn_entity",
|
||||
"animation": "packet_animation",
|
||||
"statistics": "packet_statistics",
|
||||
@@ -10130,7 +10134,7 @@
|
||||
},
|
||||
{
|
||||
"name": "checksum",
|
||||
"type": "i8"
|
||||
"type": "u8"
|
||||
}
|
||||
]
|
||||
],
|
||||
@@ -10249,7 +10253,7 @@
|
||||
},
|
||||
{
|
||||
"name": "enchantment",
|
||||
"type": "i8"
|
||||
"type": "varint"
|
||||
}
|
||||
]
|
||||
],
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
[
|
||||
{
|
||||
"name": "maxHealth",
|
||||
"resource": "generic.maxHealth",
|
||||
"default": 20,
|
||||
"min": 1,
|
||||
"max": 1024
|
||||
},
|
||||
{
|
||||
"name": "followRange",
|
||||
"resource": "generic.followRange",
|
||||
"default": 32,
|
||||
"min": 0,
|
||||
"max": 2048
|
||||
},
|
||||
{
|
||||
"name": "knockbackResistance",
|
||||
"resource": "generic.knockbackResistance",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 1
|
||||
},
|
||||
{
|
||||
"name": "movementSpeed",
|
||||
"resource": "generic.movementSpeed",
|
||||
"default": 0.7,
|
||||
"min": 0,
|
||||
"max": 1024
|
||||
},
|
||||
{
|
||||
"name": "attackDamage",
|
||||
"resource": "generic.attackDamage",
|
||||
"default": 2,
|
||||
"min": 0,
|
||||
"max": 2048
|
||||
},
|
||||
{
|
||||
"name": "horseJumpStrength",
|
||||
"resource": "horse.jumpStrength",
|
||||
"default": 0.7,
|
||||
"min": 0,
|
||||
"max": 2
|
||||
},
|
||||
{
|
||||
"name": "zombieSpawnReinforcements",
|
||||
"resource": "zombie.spawnReinforcements",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 1
|
||||
},
|
||||
{
|
||||
"name": "attackSpeed",
|
||||
"resource": "generic.attackSpeed",
|
||||
"default": 4,
|
||||
"min": 0,
|
||||
"max": 1024
|
||||
},
|
||||
{
|
||||
"name": "flyingSpeed",
|
||||
"resource": "generic.flyingSpeed",
|
||||
"default": 0.4,
|
||||
"min": 0,
|
||||
"max": 1024
|
||||
},
|
||||
{
|
||||
"name": "attackKnockback",
|
||||
"resource": "generic.attackKnockback",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 5
|
||||
},
|
||||
{
|
||||
"name": "armorHealth",
|
||||
"resource": "generic.armor",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 30
|
||||
},
|
||||
{
|
||||
"name": "armorToughness",
|
||||
"resource": "generic.armorToughness",
|
||||
"default": 0,
|
||||
"min": 0,
|
||||
"max": 20
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,817 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "ocean",
|
||||
"name_legacy": "ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"precipitation": "rain",
|
||||
"depth": -1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ocean",
|
||||
"color": 112,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "plains",
|
||||
"name_legacy": "plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Plains",
|
||||
"color": 9286496,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "desert",
|
||||
"name_legacy": "desert",
|
||||
"category": "desert",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Desert",
|
||||
"color": 16421912,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "mountains",
|
||||
"name_legacy": "mountains",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Extreme Hills",
|
||||
"color": 6316128,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "forest",
|
||||
"name_legacy": "forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Forest",
|
||||
"color": 353825,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "taiga",
|
||||
"name_legacy": "taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Taiga",
|
||||
"color": 747097,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "swamp",
|
||||
"name_legacy": "swamp",
|
||||
"category": "swamp",
|
||||
"temperature": 0.8,
|
||||
"precipitation": "rain",
|
||||
"depth": -0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Swampland",
|
||||
"color": 522674,
|
||||
"rainfall": 0.9
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "river",
|
||||
"name_legacy": "river",
|
||||
"category": "river",
|
||||
"temperature": 0.5,
|
||||
"precipitation": "rain",
|
||||
"depth": -0.5,
|
||||
"dimension": "overworld",
|
||||
"displayName": "River",
|
||||
"color": 255,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "nether_wastes",
|
||||
"name_legacy": "nether_wastes",
|
||||
"category": "nether",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.1,
|
||||
"dimension": "nether",
|
||||
"displayName": "Hell",
|
||||
"color": 12532539,
|
||||
"rainfall": 0,
|
||||
"climates": [
|
||||
{
|
||||
"temperature": 0,
|
||||
"humidity": 0,
|
||||
"altitude": 0,
|
||||
"weirdness": 0,
|
||||
"offset": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "the_end",
|
||||
"name_legacy": "the_end",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"precipitation": "none",
|
||||
"depth": 0.1,
|
||||
"dimension": "end",
|
||||
"displayName": "The End",
|
||||
"color": 8421631,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "frozen_ocean",
|
||||
"name_legacy": "frozen_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0,
|
||||
"precipitation": "snow",
|
||||
"depth": -1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen Ocean",
|
||||
"color": 7368918,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "frozen_river",
|
||||
"name_legacy": "frozen_river",
|
||||
"category": "river",
|
||||
"temperature": 0,
|
||||
"precipitation": "snow",
|
||||
"depth": -0.5,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen River",
|
||||
"color": 10526975,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "snowy_tundra",
|
||||
"name_legacy": "snowy_tundra",
|
||||
"category": "icy",
|
||||
"temperature": 0,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ice Plains",
|
||||
"color": 16777215,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "snowy_mountains",
|
||||
"name_legacy": "snowy_mountains",
|
||||
"category": "icy",
|
||||
"temperature": 0,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ice Mountains",
|
||||
"color": 10526880,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "mushroom_fields",
|
||||
"name_legacy": "mushroom_fields",
|
||||
"category": "mushroom",
|
||||
"temperature": 0.9,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mushroom Island",
|
||||
"color": 16711935,
|
||||
"rainfall": 1
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "mushroom_field_shore",
|
||||
"name_legacy": "mushroom_field_shore",
|
||||
"category": "mushroom",
|
||||
"temperature": 0.9,
|
||||
"precipitation": "rain",
|
||||
"depth": 0,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mushroom Island Shore",
|
||||
"color": 10486015,
|
||||
"rainfall": 1
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "beach",
|
||||
"name_legacy": "beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.8,
|
||||
"precipitation": "rain",
|
||||
"depth": 0,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Beach",
|
||||
"color": 16440917,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "desert_hills",
|
||||
"name_legacy": "desert_hills",
|
||||
"category": "desert",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Desert Hills",
|
||||
"color": 13786898,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "wooded_hills",
|
||||
"name_legacy": "wooded_hills",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Forest Hills",
|
||||
"color": 2250012,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "taiga_hills",
|
||||
"name_legacy": "taiga_hills",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Taiga Hills",
|
||||
"color": 1456435,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "mountain_edge",
|
||||
"name_legacy": "mountain_edge",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.8,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Extreme Hills Edge",
|
||||
"color": 7501978,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "jungle",
|
||||
"name_legacy": "jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle",
|
||||
"color": 5470985,
|
||||
"rainfall": 0.9
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "jungle_hills",
|
||||
"name_legacy": "jungle_hills",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle Hills",
|
||||
"color": 2900485,
|
||||
"rainfall": 0.9
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "jungle_edge",
|
||||
"name_legacy": "jungle_edge",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle Edge",
|
||||
"color": 6458135,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "deep_ocean",
|
||||
"name_legacy": "deep_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"precipitation": "rain",
|
||||
"depth": -1.8,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Ocean",
|
||||
"color": 48,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "stone_shore",
|
||||
"name_legacy": "stone_shore",
|
||||
"category": "none",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Stone Beach",
|
||||
"color": 10658436,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "snowy_beach",
|
||||
"name_legacy": "snowy_beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.05,
|
||||
"precipitation": "snow",
|
||||
"depth": 0,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Beach",
|
||||
"color": 16445632,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "birch_forest",
|
||||
"name_legacy": "birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest",
|
||||
"color": 3175492,
|
||||
"rainfall": 0.6
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "birch_forest_hills",
|
||||
"name_legacy": "birch_forest_hills",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest Hills",
|
||||
"color": 2055986,
|
||||
"rainfall": 0.6
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "dark_forest",
|
||||
"name_legacy": "dark_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Roofed Forest",
|
||||
"color": 4215066,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "snowy_taiga",
|
||||
"name_legacy": "snowy_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": -0.5,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Taiga",
|
||||
"color": 3233098,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "snowy_taiga_hills",
|
||||
"name_legacy": "snowy_taiga_hills",
|
||||
"category": "taiga",
|
||||
"temperature": -0.5,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Taiga Hills",
|
||||
"color": 2375478,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "giant_tree_taiga",
|
||||
"name_legacy": "giant_tree_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.3,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mega Taiga",
|
||||
"color": 5858897,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "giant_tree_taiga_hills",
|
||||
"name_legacy": "giant_tree_taiga_hills",
|
||||
"category": "taiga",
|
||||
"temperature": 0.3,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mega Taiga Hills",
|
||||
"color": 4542270,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "wooded_mountains",
|
||||
"name_legacy": "wooded_mountains",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Extreme Hills+",
|
||||
"color": 5271632,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "savanna",
|
||||
"name_legacy": "savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 1.2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna",
|
||||
"color": 12431967,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "savanna_plateau",
|
||||
"name_legacy": "savanna_plateau",
|
||||
"category": "savanna",
|
||||
"temperature": 1,
|
||||
"precipitation": "none",
|
||||
"depth": 1.5,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna Plateau",
|
||||
"color": 10984804,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "badlands",
|
||||
"name_legacy": "badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa",
|
||||
"color": 14238997,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "wooded_badlands_plateau",
|
||||
"name_legacy": "wooded_badlands_plateau",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 1.5,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa Plateau F",
|
||||
"color": 11573093,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "badlands_plateau",
|
||||
"name_legacy": "badlands_plateau",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 1.5,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa Plateau",
|
||||
"color": 13274213,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 129,
|
||||
"name": "sunflower_plains",
|
||||
"name_legacy": "mutated_plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Plains M",
|
||||
"color": 11918216,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 130,
|
||||
"name": "desert_lakes",
|
||||
"name_legacy": "mutated_desert",
|
||||
"category": "desert",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.125,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Desert M",
|
||||
"color": 16759872,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 131,
|
||||
"name": "gravelly_mountains",
|
||||
"name_legacy": "mutated_extreme_hills",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Extreme Hills M",
|
||||
"color": 8947848,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 132,
|
||||
"name": "flower_forest",
|
||||
"name_legacy": "mutated_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Forest M",
|
||||
"color": 2985545,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 133,
|
||||
"name": "taiga_mountains",
|
||||
"name_legacy": "mutated_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.3,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Taiga M",
|
||||
"color": 3378817,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 134,
|
||||
"name": "swamp_hills",
|
||||
"name_legacy": "mutated_swampland",
|
||||
"category": "swamp",
|
||||
"temperature": 0.8,
|
||||
"precipitation": "rain",
|
||||
"depth": -0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Swampland M",
|
||||
"color": 3145690,
|
||||
"rainfall": 0.9
|
||||
},
|
||||
{
|
||||
"id": 140,
|
||||
"name": "ice_spikes",
|
||||
"name_legacy": "mutated_ice_flats",
|
||||
"category": "icy",
|
||||
"temperature": 0,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.425,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ice Plains M",
|
||||
"color": 11853020,
|
||||
"rainfall": 0.5
|
||||
},
|
||||
{
|
||||
"id": 149,
|
||||
"name": "modified_jungle",
|
||||
"name_legacy": "mutated_jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle M",
|
||||
"color": 8102705,
|
||||
"rainfall": 0.9
|
||||
},
|
||||
{
|
||||
"id": 151,
|
||||
"name": "modified_jungle_edge",
|
||||
"name_legacy": "mutated_jungle_edge",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "JungleEdge M",
|
||||
"color": 9089855,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 155,
|
||||
"name": "tall_birch_forest",
|
||||
"name_legacy": "mutated_birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest M",
|
||||
"color": 5807212,
|
||||
"rainfall": 0.6
|
||||
},
|
||||
{
|
||||
"id": 156,
|
||||
"name": "tall_birch_hills",
|
||||
"name_legacy": "mutated_birch_forest_hills",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.55,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest Hills M",
|
||||
"color": 4687706,
|
||||
"rainfall": 0.6
|
||||
},
|
||||
{
|
||||
"id": 157,
|
||||
"name": "dark_forest_hills",
|
||||
"name_legacy": "mutated_roofed_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Roofed Forest M",
|
||||
"color": 6846786,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 158,
|
||||
"name": "snowy_taiga_mountains",
|
||||
"name_legacy": "mutated_taiga_cold",
|
||||
"category": "taiga",
|
||||
"temperature": -0.5,
|
||||
"precipitation": "snow",
|
||||
"depth": 0.3,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Taiga M",
|
||||
"color": 5864818,
|
||||
"rainfall": 0.4
|
||||
},
|
||||
{
|
||||
"id": 160,
|
||||
"name": "giant_spruce_taiga",
|
||||
"name_legacy": "mutated_redwood_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mega Taiga M",
|
||||
"color": 8490617,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 161,
|
||||
"name": "giant_spruce_taiga_hills",
|
||||
"name_legacy": "mutated_redwood_taiga_hills",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mega Taiga Hills M",
|
||||
"color": 7173990,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 161,
|
||||
"name": "giant_spruce_taiga_hills",
|
||||
"name_legacy": "mutated_redwood_taiga_hills",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"precipitation": "rain",
|
||||
"depth": 0.2,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Redwood Taiga Hills M",
|
||||
"color": 7173990,
|
||||
"rainfall": 0.8
|
||||
},
|
||||
{
|
||||
"id": 162,
|
||||
"name": "modified_gravelly_mountains",
|
||||
"name_legacy": "mutated_extreme_hills_with_trees",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"precipitation": "rain",
|
||||
"depth": 1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Extreme Hills+ M",
|
||||
"color": 7903352,
|
||||
"rainfall": 0.3
|
||||
},
|
||||
{
|
||||
"id": 163,
|
||||
"name": "shattered_savanna",
|
||||
"name_legacy": "mutated_savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 1.1,
|
||||
"precipitation": "none",
|
||||
"depth": 0.3625,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna M",
|
||||
"color": 15063687,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 164,
|
||||
"name": "shattered_savanna_plateau",
|
||||
"name_legacy": "mutated_savanna_rock",
|
||||
"category": "savanna",
|
||||
"temperature": 1,
|
||||
"precipitation": "none",
|
||||
"depth": 1.05,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna Plateau M",
|
||||
"color": 13616524,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 165,
|
||||
"name": "eroded_badlands",
|
||||
"name_legacy": "mutated_mesa",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.1,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa M",
|
||||
"color": 16739645,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 166,
|
||||
"name": "modified_wooded_badlands_plateau",
|
||||
"name_legacy": "mutated_mesa_rock",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa Plateau F M",
|
||||
"color": 14204813,
|
||||
"rainfall": 0
|
||||
},
|
||||
{
|
||||
"id": 167,
|
||||
"name": "modified_badlands_plateau",
|
||||
"name_legacy": "mutated_mesa_clear_rock",
|
||||
"category": "mesa",
|
||||
"temperature": 2,
|
||||
"precipitation": "none",
|
||||
"depth": 0.45,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mesa Plateau M",
|
||||
"color": 15905933,
|
||||
"rainfall": 0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,274 @@
|
||||
{"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]},
|
||||
"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]],
|
||||
"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,140 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,560 @@
|
||||
[
|
||||
{
|
||||
"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": 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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,580 @@
|
||||
[
|
||||
{
|
||||
"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": 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": 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": 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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,310 @@
|
||||
[
|
||||
{
|
||||
"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": 4.8,
|
||||
"effectiveQuality": 7.8,
|
||||
"saturationRatio": 1.5999999999999999
|
||||
},
|
||||
{
|
||||
"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": 7.2,
|
||||
"effectiveQuality": 12.2,
|
||||
"saturationRatio": 1.44
|
||||
},
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
@@ -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,170 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
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":47,
|
||||
"minecraftVersion":"1.8.8",
|
||||
"majorVersion":"1.8"
|
||||
}
|
||||
@@ -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": 3
|
||||
},
|
||||
{
|
||||
"name": "result",
|
||||
"index": 0,
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,247 @@
|
||||
[
|
||||
{
|
||||
"name": "armor",
|
||||
"resource": "minecraft:armor",
|
||||
"min": 0.0,
|
||||
"max": 30.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "armorToughness",
|
||||
"resource": "minecraft:armor_toughness",
|
||||
"min": 0.0,
|
||||
"max": 20.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "attackDamage",
|
||||
"resource": "minecraft:attack_damage",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 2.0
|
||||
},
|
||||
{
|
||||
"name": "attackKnockback",
|
||||
"resource": "minecraft:attack_knockback",
|
||||
"min": 0.0,
|
||||
"max": 5.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "attackSpeed",
|
||||
"resource": "minecraft:attack_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 4.0
|
||||
},
|
||||
{
|
||||
"name": "blockBreakSpeed",
|
||||
"resource": "minecraft:block_break_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "blockInteractionRange",
|
||||
"resource": "minecraft:block_interaction_range",
|
||||
"min": 0.0,
|
||||
"max": 64.0,
|
||||
"default": 4.5
|
||||
},
|
||||
{
|
||||
"name": "burningTime",
|
||||
"resource": "minecraft:burning_time",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "cameraDistance",
|
||||
"resource": "minecraft:camera_distance",
|
||||
"min": 0.0,
|
||||
"max": 32.0,
|
||||
"default": 4.0
|
||||
},
|
||||
{
|
||||
"name": "explosionKnockbackResistance",
|
||||
"resource": "minecraft:explosion_knockback_resistance",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "entityInteractionRange",
|
||||
"resource": "minecraft:entity_interaction_range",
|
||||
"min": 0.0,
|
||||
"max": 64.0,
|
||||
"default": 3.0
|
||||
},
|
||||
{
|
||||
"name": "fallDamageMultiplier",
|
||||
"resource": "minecraft:fall_damage_multiplier",
|
||||
"min": 0.0,
|
||||
"max": 100.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "flyingSpeed",
|
||||
"resource": "minecraft:flying_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.4
|
||||
},
|
||||
{
|
||||
"name": "followRange",
|
||||
"resource": "minecraft:follow_range",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 32.0
|
||||
},
|
||||
{
|
||||
"name": "gravity",
|
||||
"resource": "minecraft:gravity",
|
||||
"min": -1.0,
|
||||
"max": 1.0,
|
||||
"default": 0.08
|
||||
},
|
||||
{
|
||||
"name": "jumpStrength",
|
||||
"resource": "minecraft:jump_strength",
|
||||
"min": 0.0,
|
||||
"max": 32.0,
|
||||
"default": 0.41999998688697815
|
||||
},
|
||||
{
|
||||
"name": "knockbackResistance",
|
||||
"resource": "minecraft:knockback_resistance",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "luck",
|
||||
"resource": "minecraft:luck",
|
||||
"min": -1024.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "maxAbsorption",
|
||||
"resource": "minecraft:max_absorption",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "maxHealth",
|
||||
"resource": "minecraft:max_health",
|
||||
"min": 1.0,
|
||||
"max": 1024.0,
|
||||
"default": 20.0
|
||||
},
|
||||
{
|
||||
"name": "miningEfficiency",
|
||||
"resource": "minecraft:mining_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "movementEfficiency",
|
||||
"resource": "minecraft:movement_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "movementSpeed",
|
||||
"resource": "minecraft:movement_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.7
|
||||
},
|
||||
{
|
||||
"name": "oxygenBonus",
|
||||
"resource": "minecraft:oxygen_bonus",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "safeFallDistance",
|
||||
"resource": "minecraft:safe_fall_distance",
|
||||
"min": -1024.0,
|
||||
"max": 1024.0,
|
||||
"default": 3.0
|
||||
},
|
||||
{
|
||||
"name": "scale",
|
||||
"resource": "minecraft:scale",
|
||||
"min": 0.0625,
|
||||
"max": 16.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "sneakingSpeed",
|
||||
"resource": "minecraft:sneaking_speed",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.3
|
||||
},
|
||||
{
|
||||
"name": "spawnReinforcements",
|
||||
"resource": "minecraft:spawn_reinforcements",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "stepHeight",
|
||||
"resource": "minecraft:step_height",
|
||||
"min": 0.0,
|
||||
"max": 10.0,
|
||||
"default": 0.6
|
||||
},
|
||||
{
|
||||
"name": "submergedMiningSpeed",
|
||||
"resource": "minecraft:submerged_mining_speed",
|
||||
"min": 0.0,
|
||||
"max": 20.0,
|
||||
"default": 0.2
|
||||
},
|
||||
{
|
||||
"name": "sweepingDamageRatio",
|
||||
"resource": "minecraft:sweeping_damage_ratio",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "temptRange",
|
||||
"resource": "minecraft:tempt_range",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 10.0
|
||||
},
|
||||
{
|
||||
"name": "waterMovementEfficiency",
|
||||
"resource": "minecraft:water_movement_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "waypointTransmitRange",
|
||||
"resource": "minecraft:waypoint_transmit_range",
|
||||
"min": 0.0,
|
||||
"max": 6.0E7,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "waypointReceiveRange",
|
||||
"resource": "minecraft:waypoint_receive_range",
|
||||
"min": 0.0,
|
||||
"max": 6.0E7,
|
||||
"default": 0.0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,652 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Badlands",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "bamboo_jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Bamboo Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "basalt_deltas",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Basalt Deltas",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Beach",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest",
|
||||
"color": 8037887
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "cherry_grove",
|
||||
"category": "forest",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cherry Grove",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "cold_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "crimson_forest",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Crimson Forest",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "dark_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Dark Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "deep_cold_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Cold Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "deep_dark",
|
||||
"category": "underground",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Dark",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "deep_frozen_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Frozen Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "deep_lukewarm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Lukewarm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "deep_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "desert",
|
||||
"category": "desert",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Desert",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "dripstone_caves",
|
||||
"category": "underground",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Dripstone Caves",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "end_barrens",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Barrens",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "end_highlands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Highlands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "end_midlands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Midlands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "eroded_badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Eroded Badlands",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "flower_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Flower Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "frozen_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen Ocean",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "frozen_peaks",
|
||||
"category": "ice",
|
||||
"temperature": -0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen Peaks",
|
||||
"color": 8756735
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "frozen_river",
|
||||
"category": "ice",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen River",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "grove",
|
||||
"category": "forest",
|
||||
"temperature": -0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Grove",
|
||||
"color": 8495359
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "ice_spikes",
|
||||
"category": "ice",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ice Spikes",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "jagged_peaks",
|
||||
"category": "mountain",
|
||||
"temperature": -0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jagged Peaks",
|
||||
"color": 8756735
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "lukewarm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Lukewarm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "lush_caves",
|
||||
"category": "underground",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Lush Caves",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "mangrove_swamp",
|
||||
"category": "forest",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mangrove Swamp",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "meadow",
|
||||
"category": "mountain",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Meadow",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "mushroom_fields",
|
||||
"category": "mushroom",
|
||||
"temperature": 0.9,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mushroom Fields",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "nether_wastes",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Nether Wastes",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "old_growth_birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Birch Forest",
|
||||
"color": 8037887
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "old_growth_pine_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.3,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Pine Taiga",
|
||||
"color": 8168447
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "old_growth_spruce_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Spruce Taiga",
|
||||
"color": 8233983
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "pale_garden",
|
||||
"category": "none",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Pale Garden",
|
||||
"color": 12171705
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Plains",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "river",
|
||||
"category": "river",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "River",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "savanna_plateau",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna Plateau",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "small_end_islands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "Small End Islands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "snowy_beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.05,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Beach",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "snowy_plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Plains",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "snowy_slopes",
|
||||
"category": "mountain",
|
||||
"temperature": -0.3,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Slopes",
|
||||
"color": 8560639
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "snowy_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": -0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Taiga",
|
||||
"color": 8625919
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "soul_sand_valley",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Soul Sand Valley",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "sparse_jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Sparse Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "stony_peaks",
|
||||
"category": "mountain",
|
||||
"temperature": 1.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Stony Peaks",
|
||||
"color": 7776511
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "stony_shore",
|
||||
"category": "beach",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Stony Shore",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "sunflower_plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Sunflower Plains",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "swamp",
|
||||
"category": "swamp",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Swamp",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Taiga",
|
||||
"color": 8233983
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "the_end",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "The End",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "the_void",
|
||||
"category": "none",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "The Void",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "warm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Warm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "warped_forest",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Warped Forest",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "windswept_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Forest",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "windswept_gravelly_hills",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Gravelly Hills",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "windswept_hills",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Hills",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "windswept_savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Savanna",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "wooded_badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Wooded Badlands",
|
||||
"color": 7254527
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,242 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Speed",
|
||||
"displayName": "Speed",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Slowness",
|
||||
"displayName": "Slowness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Haste",
|
||||
"displayName": "Haste",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "MiningFatigue",
|
||||
"displayName": "Mining Fatigue",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "Strength",
|
||||
"displayName": "Strength",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "InstantHealth",
|
||||
"displayName": "Instant Health",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "InstantDamage",
|
||||
"displayName": "Instant Damage",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "JumpBoost",
|
||||
"displayName": "Jump Boost",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "Nausea",
|
||||
"displayName": "Nausea",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Regeneration",
|
||||
"displayName": "Regeneration",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "Resistance",
|
||||
"displayName": "Resistance",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "FireResistance",
|
||||
"displayName": "Fire Resistance",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "WaterBreathing",
|
||||
"displayName": "Water Breathing",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "Invisibility",
|
||||
"displayName": "Invisibility",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "Blindness",
|
||||
"displayName": "Blindness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "NightVision",
|
||||
"displayName": "Night Vision",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "Hunger",
|
||||
"displayName": "Hunger",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "Weakness",
|
||||
"displayName": "Weakness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "Poison",
|
||||
"displayName": "Poison",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "Wither",
|
||||
"displayName": "Wither",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "HealthBoost",
|
||||
"displayName": "Health Boost",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "Absorption",
|
||||
"displayName": "Absorption",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "Saturation",
|
||||
"displayName": "Saturation",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "Glowing",
|
||||
"displayName": "Glowing",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "Levitation",
|
||||
"displayName": "Levitation",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "Luck",
|
||||
"displayName": "Luck",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "BadLuck",
|
||||
"displayName": "Bad Luck",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "SlowFalling",
|
||||
"displayName": "Slow Falling",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "ConduitPower",
|
||||
"displayName": "Conduit Power",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "DolphinsGrace",
|
||||
"displayName": "Dolphin's Grace",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "BadOmen",
|
||||
"displayName": "Bad Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "HeroOfTheVillage",
|
||||
"displayName": "Hero of the Village",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "Darkness",
|
||||
"displayName": "Darkness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "TrialOmen",
|
||||
"displayName": "Trial Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "RaidOmen",
|
||||
"displayName": "Raid Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "WindCharged",
|
||||
"displayName": "Wind Charged",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "Weaving",
|
||||
"displayName": "Weaving",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "Oozing",
|
||||
"displayName": "Oozing",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "Infested",
|
||||
"displayName": "Infested",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "BreathOfTheNautilus",
|
||||
"displayName": "Breath of the Nautilus",
|
||||
"type": "good"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,980 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "aqua_affinity",
|
||||
"displayName": "Aqua Affinity",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "head_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "bane_of_arthropods",
|
||||
"displayName": "Bane of Arthropods",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "binding_curse",
|
||||
"displayName": "Curse of Binding",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": true,
|
||||
"exclude": [],
|
||||
"category": "equippable",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "blast_protection",
|
||||
"displayName": "Blast Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"fire_protection",
|
||||
"projectile_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "breach",
|
||||
"displayName": "Breach",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "mace",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "channeling",
|
||||
"displayName": "Channeling",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"riptide"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "density",
|
||||
"displayName": "Density",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "mace",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "depth_strider",
|
||||
"displayName": "Depth Strider",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"frost_walker"
|
||||
],
|
||||
"category": "foot_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "efficiency",
|
||||
"displayName": "Efficiency",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "mining",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "feather_falling",
|
||||
"displayName": "Feather Falling",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "foot_armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "fire_aspect",
|
||||
"displayName": "Fire Aspect",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fire_aspect",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "fire_protection",
|
||||
"displayName": "Fire Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"projectile_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "flame",
|
||||
"displayName": "Flame",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "fortune",
|
||||
"displayName": "Fortune",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"silk_touch"
|
||||
],
|
||||
"category": "mining_loot",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "frost_walker",
|
||||
"displayName": "Frost Walker",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"depth_strider"
|
||||
],
|
||||
"category": "foot_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "impaling",
|
||||
"displayName": "Impaling",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "infinity",
|
||||
"displayName": "Infinity",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"mending"
|
||||
],
|
||||
"category": "bow",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "knockback",
|
||||
"displayName": "Knockback",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "melee_weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "looting",
|
||||
"displayName": "Looting",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "melee_weapon",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "loyalty",
|
||||
"displayName": "Loyalty",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"riptide"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "luck_of_the_sea",
|
||||
"displayName": "Luck of the Sea",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fishing",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "lunge",
|
||||
"displayName": "Lunge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "lunge",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "lure",
|
||||
"displayName": "Lure",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fishing",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "mending",
|
||||
"displayName": "Mending",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"infinity"
|
||||
],
|
||||
"category": "durability",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "multishot",
|
||||
"displayName": "Multishot",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"piercing"
|
||||
],
|
||||
"category": "crossbow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "piercing",
|
||||
"displayName": "Piercing",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"multishot"
|
||||
],
|
||||
"category": "crossbow",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "power",
|
||||
"displayName": "Power",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "projectile_protection",
|
||||
"displayName": "Projectile Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"fire_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "protection",
|
||||
"displayName": "Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"fire_protection",
|
||||
"projectile_protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "punch",
|
||||
"displayName": "Punch",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "quick_charge",
|
||||
"displayName": "Quick Charge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "crossbow",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "respiration",
|
||||
"displayName": "Respiration",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "head_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "riptide",
|
||||
"displayName": "Riptide",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"channeling",
|
||||
"loyalty"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "sharpness",
|
||||
"displayName": "Sharpness",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"smite"
|
||||
],
|
||||
"category": "sharp_weapon",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "silk_touch",
|
||||
"displayName": "Silk Touch",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"fortune"
|
||||
],
|
||||
"category": "mining_loot",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "smite",
|
||||
"displayName": "Smite",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness"
|
||||
],
|
||||
"category": "weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "soul_speed",
|
||||
"displayName": "Soul Speed",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "foot_armor",
|
||||
"weight": 1,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "sweeping_edge",
|
||||
"displayName": "Sweeping Edge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "sweeping",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "swift_sneak",
|
||||
"displayName": "Swift Sneak",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "leg_armor",
|
||||
"weight": 1,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "thorns",
|
||||
"displayName": "Thorns",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "armor",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "unbreaking",
|
||||
"displayName": "Unbreaking",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "durability",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "vanishing_curse",
|
||||
"displayName": "Curse of Vanishing",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": true,
|
||||
"exclude": [],
|
||||
"category": "vanishing",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "wind_burst",
|
||||
"displayName": "Wind Burst",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "mace",
|
||||
"weight": 2,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,442 @@
|
||||
[
|
||||
{
|
||||
"id": 894,
|
||||
"name": "apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 948,
|
||||
"name": "mushroom_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Mushroom Stew",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 954,
|
||||
"name": "bread",
|
||||
"stackSize": 64,
|
||||
"displayName": "Bread",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 984,
|
||||
"name": "porkchop",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Porkchop",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 985,
|
||||
"name": "cooked_porkchop",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Porkchop",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 987,
|
||||
"name": "golden_apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Golden Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 988,
|
||||
"name": "enchanted_golden_apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Enchanted Golden Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 1020,
|
||||
"name": "pufferfish_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Pufferfish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1021,
|
||||
"name": "salmon_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Salmon",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1022,
|
||||
"name": "cod_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Cod",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1023,
|
||||
"name": "tropical_fish_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Tropical Fish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1058,
|
||||
"name": "cod",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Cod",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1059,
|
||||
"name": "salmon",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Salmon",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1060,
|
||||
"name": "tropical_fish",
|
||||
"stackSize": 64,
|
||||
"displayName": "Tropical Fish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1061,
|
||||
"name": "pufferfish",
|
||||
"stackSize": 64,
|
||||
"displayName": "Pufferfish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1062,
|
||||
"name": "cooked_cod",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Cod",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1063,
|
||||
"name": "cooked_salmon",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Salmon",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1103,
|
||||
"name": "cookie",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cookie",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1107,
|
||||
"name": "melon_slice",
|
||||
"stackSize": 64,
|
||||
"displayName": "Melon Slice",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1108,
|
||||
"name": "dried_kelp",
|
||||
"stackSize": 64,
|
||||
"displayName": "Dried Kelp",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1111,
|
||||
"name": "beef",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Beef",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1112,
|
||||
"name": "cooked_beef",
|
||||
"stackSize": 64,
|
||||
"displayName": "Steak",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1113,
|
||||
"name": "chicken",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Chicken",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1114,
|
||||
"name": "cooked_chicken",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Chicken",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1115,
|
||||
"name": "rotten_flesh",
|
||||
"stackSize": 64,
|
||||
"displayName": "Rotten Flesh",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 0.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1123,
|
||||
"name": "spider_eye",
|
||||
"stackSize": 64,
|
||||
"displayName": "Spider Eye",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 3.2,
|
||||
"effectiveQuality": 5.2,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1228,
|
||||
"name": "carrot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Carrot",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 3.6000001,
|
||||
"effectiveQuality": 6.6000004,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1229,
|
||||
"name": "potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Potato",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1230,
|
||||
"name": "baked_potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Baked Potato",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1231,
|
||||
"name": "poisonous_potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Poisonous Potato",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1233,
|
||||
"name": "golden_carrot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Golden Carrot",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 14.400001,
|
||||
"effectiveQuality": 20.400002,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 1242,
|
||||
"name": "pumpkin_pie",
|
||||
"stackSize": 64,
|
||||
"displayName": "Pumpkin Pie",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 4.8,
|
||||
"effectiveQuality": 12.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1250,
|
||||
"name": "rabbit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Rabbit",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1251,
|
||||
"name": "cooked_rabbit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Rabbit",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1252,
|
||||
"name": "rabbit_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Rabbit Stew",
|
||||
"foodPoints": 10.0,
|
||||
"saturation": 12.0,
|
||||
"effectiveQuality": 22.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1265,
|
||||
"name": "mutton",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Mutton",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1266,
|
||||
"name": "cooked_mutton",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Mutton",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1284,
|
||||
"name": "chorus_fruit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Chorus Fruit",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1288,
|
||||
"name": "beetroot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Beetroot",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 2.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1290,
|
||||
"name": "beetroot_soup",
|
||||
"stackSize": 1,
|
||||
"displayName": "Beetroot Soup",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1341,
|
||||
"name": "suspicious_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Suspicious Stew",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1374,
|
||||
"name": "sweet_berries",
|
||||
"stackSize": 64,
|
||||
"displayName": "Sweet Berries",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1375,
|
||||
"name": "glow_berries",
|
||||
"stackSize": 64,
|
||||
"displayName": "Glow Berries",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1382,
|
||||
"name": "honey_bottle",
|
||||
"stackSize": 16,
|
||||
"displayName": "Honey Bottle",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 7.2,
|
||||
"saturationRatio": 0.2
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,110 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "harp"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "basedrum"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "snare"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "hat"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "bass"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "flute"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "bell"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "guitar"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "chime"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "xylophone"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "iron_xylophone"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "cow_bell"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "didgeridoo"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "bit"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "banjo"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "pling"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "trumpet"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "trumpet_exposed"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "trumpet_oxidized"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "trumpet_weathered"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "zombie"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "skeleton"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "creeper"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "dragon"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "wither_skeleton"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "piglin"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "custom_head"
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,233 @@
|
||||
{
|
||||
"default": {},
|
||||
"leaves": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"coweb": {
|
||||
"1106": 15.0,
|
||||
"912": 15.0,
|
||||
"917": 15.0,
|
||||
"922": 15.0,
|
||||
"927": 15.0,
|
||||
"932": 15.0,
|
||||
"937": 15.0,
|
||||
"942": 15.0
|
||||
},
|
||||
"plant": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"gourd": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"vine_or_glow_lichen": {
|
||||
"1106": 2.0
|
||||
},
|
||||
"wool": {
|
||||
"1106": 1.0
|
||||
},
|
||||
"sword_instantly_mines": {
|
||||
"912": 2.0,
|
||||
"917": 1.0,
|
||||
"922": 4.0,
|
||||
"927": 12.0,
|
||||
"932": 6.0,
|
||||
"937": 8.0,
|
||||
"942": 9.0
|
||||
},
|
||||
"sword_efficient": {
|
||||
"912": 2.0,
|
||||
"917": 1.0,
|
||||
"922": 4.0,
|
||||
"927": 12.0,
|
||||
"932": 6.0,
|
||||
"937": 8.0,
|
||||
"942": 9.0
|
||||
},
|
||||
"incorrect_for_wooden_tool": {
|
||||
"913": 2.0,
|
||||
"914": 2.0,
|
||||
"915": 2.0,
|
||||
"916": 2.0
|
||||
},
|
||||
"mineable/shovel": {
|
||||
"913": 2.0,
|
||||
"918": 1.0,
|
||||
"923": 4.0,
|
||||
"928": 12.0,
|
||||
"933": 6.0,
|
||||
"938": 8.0,
|
||||
"943": 9.0
|
||||
},
|
||||
"mineable/pickaxe": {
|
||||
"914": 2.0,
|
||||
"919": 1.0,
|
||||
"924": 4.0,
|
||||
"929": 12.0,
|
||||
"934": 6.0,
|
||||
"939": 8.0,
|
||||
"944": 9.0
|
||||
},
|
||||
"mineable/axe": {
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"mineable/hoe": {
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"incorrect_for_copper_tool": {
|
||||
"918": 1.0,
|
||||
"919": 1.0,
|
||||
"920": 1.0,
|
||||
"921": 1.0
|
||||
},
|
||||
"incorrect_for_stone_tool": {
|
||||
"923": 4.0,
|
||||
"924": 4.0,
|
||||
"925": 4.0,
|
||||
"926": 4.0
|
||||
},
|
||||
"incorrect_for_gold_tool": {
|
||||
"928": 12.0,
|
||||
"929": 12.0,
|
||||
"930": 12.0,
|
||||
"931": 12.0
|
||||
},
|
||||
"incorrect_for_iron_tool": {
|
||||
"933": 6.0,
|
||||
"934": 6.0,
|
||||
"935": 6.0,
|
||||
"936": 6.0
|
||||
},
|
||||
"incorrect_for_diamond_tool": {
|
||||
"938": 8.0,
|
||||
"939": 8.0,
|
||||
"940": 8.0,
|
||||
"941": 8.0
|
||||
},
|
||||
"incorrect_for_netherite_tool": {
|
||||
"943": 9.0,
|
||||
"944": 9.0,
|
||||
"945": 9.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"plant;mineable/axe": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"gourd;mineable/axe": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"leaves;mineable/hoe": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"leaves;mineable/axe;mineable/hoe": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0,
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"vine_or_glow_lichen;plant;mineable/axe": {
|
||||
"1106": 2.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,470 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "angry_villager"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "block"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "block_marker"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "bubble"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "cloud"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "copper_fire_flame"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "crit"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "damage_indicator"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "dragon_breath"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "dripping_lava"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "falling_lava"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "landing_lava"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "dripping_water"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "falling_water"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "dust"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "dust_color_transition"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "effect"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "elder_guardian"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "enchanted_hit"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "enchant"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "end_rod"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "entity_effect"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "explosion_emitter"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "explosion"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "gust"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "small_gust"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "gust_emitter_large"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "gust_emitter_small"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "sonic_boom"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "falling_dust"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "firework"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "fishing"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "flame"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "infested"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "cherry_leaves"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "pale_oak_leaves"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "tinted_leaves"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "sculk_soul"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "sculk_charge"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "sculk_charge_pop"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "soul_fire_flame"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "soul"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "flash"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "happy_villager"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "composter"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "heart"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "instant_effect"
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "item"
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "vibration"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "trail"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "pause_mob_growth"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "reset_mob_growth"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "item_slime"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "item_cobweb"
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "item_snowball"
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "large_smoke"
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "lava"
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "mycelium"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "note"
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "poof"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "portal"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "rain"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "smoke"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "white_smoke"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "sneeze"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"name": "spit"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"name": "squid_ink"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"name": "sweep_attack"
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"name": "totem_of_undying"
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"name": "underwater"
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"name": "splash"
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"name": "witch"
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"name": "bubble_pop"
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"name": "current_down"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"name": "bubble_column_up"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"name": "nautilus"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"name": "dolphin"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"name": "campfire_cosy_smoke"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"name": "campfire_signal_smoke"
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"name": "dripping_honey"
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"name": "falling_honey"
|
||||
},
|
||||
{
|
||||
"id": 81,
|
||||
"name": "landing_honey"
|
||||
},
|
||||
{
|
||||
"id": 82,
|
||||
"name": "falling_nectar"
|
||||
},
|
||||
{
|
||||
"id": 83,
|
||||
"name": "falling_spore_blossom"
|
||||
},
|
||||
{
|
||||
"id": 84,
|
||||
"name": "ash"
|
||||
},
|
||||
{
|
||||
"id": 85,
|
||||
"name": "crimson_spore"
|
||||
},
|
||||
{
|
||||
"id": 86,
|
||||
"name": "warped_spore"
|
||||
},
|
||||
{
|
||||
"id": 87,
|
||||
"name": "spore_blossom_air"
|
||||
},
|
||||
{
|
||||
"id": 88,
|
||||
"name": "dripping_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 89,
|
||||
"name": "falling_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 90,
|
||||
"name": "landing_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 91,
|
||||
"name": "reverse_portal"
|
||||
},
|
||||
{
|
||||
"id": 92,
|
||||
"name": "white_ash"
|
||||
},
|
||||
{
|
||||
"id": 93,
|
||||
"name": "small_flame"
|
||||
},
|
||||
{
|
||||
"id": 94,
|
||||
"name": "snowflake"
|
||||
},
|
||||
{
|
||||
"id": 95,
|
||||
"name": "dripping_dripstone_lava"
|
||||
},
|
||||
{
|
||||
"id": 96,
|
||||
"name": "falling_dripstone_lava"
|
||||
},
|
||||
{
|
||||
"id": 97,
|
||||
"name": "dripping_dripstone_water"
|
||||
},
|
||||
{
|
||||
"id": 98,
|
||||
"name": "falling_dripstone_water"
|
||||
},
|
||||
{
|
||||
"id": 99,
|
||||
"name": "glow_squid_ink"
|
||||
},
|
||||
{
|
||||
"id": 100,
|
||||
"name": "glow"
|
||||
},
|
||||
{
|
||||
"id": 101,
|
||||
"name": "wax_on"
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"name": "wax_off"
|
||||
},
|
||||
{
|
||||
"id": 103,
|
||||
"name": "electric_spark"
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"name": "scrape"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"name": "shriek"
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"name": "egg_crack"
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"name": "dust_plume"
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"name": "trial_spawner_detection"
|
||||
},
|
||||
{
|
||||
"id": 109,
|
||||
"name": "trial_spawner_detection_ominous"
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"name": "vault_connection"
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"name": "dust_pillar"
|
||||
},
|
||||
{
|
||||
"id": 112,
|
||||
"name": "ominous_spawning"
|
||||
},
|
||||
{
|
||||
"id": 113,
|
||||
"name": "raid_omen"
|
||||
},
|
||||
{
|
||||
"id": 114,
|
||||
"name": "trial_omen"
|
||||
},
|
||||
{
|
||||
"id": 115,
|
||||
"name": "block_crumble"
|
||||
},
|
||||
{
|
||||
"id": 116,
|
||||
"name": "firefly"
|
||||
}
|
||||
]
|
||||
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,465 @@
|
||||
{
|
||||
"grass": {
|
||||
"data": [
|
||||
{
|
||||
"keys": [
|
||||
"badlands",
|
||||
"eroded_badlands",
|
||||
"wooded_badlands"
|
||||
],
|
||||
"color": -7306931
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"bamboo_jungle",
|
||||
"basalt_deltas",
|
||||
"beach",
|
||||
"birch_forest",
|
||||
"cold_ocean",
|
||||
"crimson_forest",
|
||||
"deep_cold_ocean",
|
||||
"deep_dark",
|
||||
"deep_frozen_ocean",
|
||||
"deep_lukewarm_ocean",
|
||||
"deep_ocean",
|
||||
"desert",
|
||||
"dripstone_caves",
|
||||
"end_barrens",
|
||||
"end_highlands",
|
||||
"end_midlands",
|
||||
"flower_forest",
|
||||
"forest",
|
||||
"frozen_ocean",
|
||||
"frozen_peaks",
|
||||
"frozen_river",
|
||||
"grove",
|
||||
"ice_spikes",
|
||||
"jagged_peaks",
|
||||
"jungle",
|
||||
"lukewarm_ocean",
|
||||
"lush_caves",
|
||||
"meadow",
|
||||
"mushroom_fields",
|
||||
"nether_wastes",
|
||||
"ocean",
|
||||
"old_growth_birch_forest",
|
||||
"old_growth_pine_taiga",
|
||||
"old_growth_spruce_taiga",
|
||||
"plains",
|
||||
"river",
|
||||
"savanna",
|
||||
"savanna_plateau",
|
||||
"small_end_islands",
|
||||
"snowy_beach",
|
||||
"snowy_plains",
|
||||
"snowy_slopes",
|
||||
"snowy_taiga",
|
||||
"soul_sand_valley",
|
||||
"sparse_jungle",
|
||||
"stony_peaks",
|
||||
"stony_shore",
|
||||
"sunflower_plains",
|
||||
"taiga",
|
||||
"the_end",
|
||||
"the_void",
|
||||
"warm_ocean",
|
||||
"warped_forest",
|
||||
"windswept_forest",
|
||||
"windswept_gravelly_hills",
|
||||
"windswept_hills",
|
||||
"windswept_savanna"
|
||||
],
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"cherry_grove"
|
||||
],
|
||||
"color": -4793503
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"dark_forest"
|
||||
],
|
||||
"color": -15459835
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"mangrove_swamp",
|
||||
"swamp"
|
||||
],
|
||||
"color": -9801671
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"pale_garden"
|
||||
],
|
||||
"color": -8945038
|
||||
}
|
||||
]
|
||||
},
|
||||
"foliage": {
|
||||
"data": [
|
||||
{
|
||||
"keys": [
|
||||
"badlands",
|
||||
"eroded_badlands",
|
||||
"wooded_badlands"
|
||||
],
|
||||
"color": -6389427
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"bamboo_jungle",
|
||||
"basalt_deltas",
|
||||
"beach",
|
||||
"birch_forest",
|
||||
"cold_ocean",
|
||||
"crimson_forest",
|
||||
"dark_forest",
|
||||
"deep_cold_ocean",
|
||||
"deep_dark",
|
||||
"deep_frozen_ocean",
|
||||
"deep_lukewarm_ocean",
|
||||
"deep_ocean",
|
||||
"desert",
|
||||
"dripstone_caves",
|
||||
"end_barrens",
|
||||
"end_highlands",
|
||||
"end_midlands",
|
||||
"flower_forest",
|
||||
"forest",
|
||||
"frozen_ocean",
|
||||
"frozen_peaks",
|
||||
"frozen_river",
|
||||
"grove",
|
||||
"ice_spikes",
|
||||
"jagged_peaks",
|
||||
"jungle",
|
||||
"lukewarm_ocean",
|
||||
"lush_caves",
|
||||
"meadow",
|
||||
"mushroom_fields",
|
||||
"nether_wastes",
|
||||
"ocean",
|
||||
"old_growth_birch_forest",
|
||||
"old_growth_pine_taiga",
|
||||
"old_growth_spruce_taiga",
|
||||
"plains",
|
||||
"river",
|
||||
"savanna",
|
||||
"savanna_plateau",
|
||||
"small_end_islands",
|
||||
"snowy_beach",
|
||||
"snowy_plains",
|
||||
"snowy_slopes",
|
||||
"snowy_taiga",
|
||||
"soul_sand_valley",
|
||||
"sparse_jungle",
|
||||
"stony_peaks",
|
||||
"stony_shore",
|
||||
"sunflower_plains",
|
||||
"taiga",
|
||||
"the_end",
|
||||
"the_void",
|
||||
"warm_ocean",
|
||||
"warped_forest",
|
||||
"windswept_forest",
|
||||
"windswept_gravelly_hills",
|
||||
"windswept_hills",
|
||||
"windswept_savanna"
|
||||
],
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"cherry_grove"
|
||||
],
|
||||
"color": -4793503
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"mangrove_swamp"
|
||||
],
|
||||
"color": -7491289
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"pale_garden"
|
||||
],
|
||||
"color": -7893642
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"swamp"
|
||||
],
|
||||
"color": -9801671
|
||||
}
|
||||
]
|
||||
},
|
||||
"water": {
|
||||
"data": [
|
||||
{
|
||||
"keys": [
|
||||
"badlands",
|
||||
"bamboo_jungle",
|
||||
"basalt_deltas",
|
||||
"beach",
|
||||
"birch_forest",
|
||||
"crimson_forest",
|
||||
"dark_forest",
|
||||
"deep_dark",
|
||||
"deep_ocean",
|
||||
"desert",
|
||||
"dripstone_caves",
|
||||
"end_barrens",
|
||||
"end_highlands",
|
||||
"end_midlands",
|
||||
"eroded_badlands",
|
||||
"flower_forest",
|
||||
"forest",
|
||||
"frozen_peaks",
|
||||
"grove",
|
||||
"ice_spikes",
|
||||
"jagged_peaks",
|
||||
"jungle",
|
||||
"lush_caves",
|
||||
"mushroom_fields",
|
||||
"nether_wastes",
|
||||
"ocean",
|
||||
"old_growth_birch_forest",
|
||||
"old_growth_pine_taiga",
|
||||
"old_growth_spruce_taiga",
|
||||
"plains",
|
||||
"river",
|
||||
"savanna",
|
||||
"savanna_plateau",
|
||||
"small_end_islands",
|
||||
"snowy_plains",
|
||||
"snowy_slopes",
|
||||
"soul_sand_valley",
|
||||
"sparse_jungle",
|
||||
"stony_peaks",
|
||||
"stony_shore",
|
||||
"sunflower_plains",
|
||||
"taiga",
|
||||
"the_end",
|
||||
"the_void",
|
||||
"warped_forest",
|
||||
"windswept_forest",
|
||||
"windswept_gravelly_hills",
|
||||
"windswept_hills",
|
||||
"windswept_savanna",
|
||||
"wooded_badlands"
|
||||
],
|
||||
"color": -12618012
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"cherry_grove"
|
||||
],
|
||||
"color": -10635281
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"cold_ocean",
|
||||
"deep_cold_ocean",
|
||||
"snowy_beach",
|
||||
"snowy_taiga"
|
||||
],
|
||||
"color": -12757034
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"deep_frozen_ocean",
|
||||
"frozen_ocean",
|
||||
"frozen_river"
|
||||
],
|
||||
"color": -13027127
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"deep_lukewarm_ocean",
|
||||
"lukewarm_ocean"
|
||||
],
|
||||
"color": -12210702
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"mangrove_swamp"
|
||||
],
|
||||
"color": -12944790
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"meadow"
|
||||
],
|
||||
"color": -15839537
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"pale_garden"
|
||||
],
|
||||
"color": -9008995
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"swamp"
|
||||
],
|
||||
"color": -10388636
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"warm_ocean"
|
||||
],
|
||||
"color": -12331538
|
||||
}
|
||||
]
|
||||
},
|
||||
"redstone": {
|
||||
"data": [
|
||||
{
|
||||
"keys": [
|
||||
0
|
||||
],
|
||||
"color": 4980736
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
1
|
||||
],
|
||||
"color": 7340032
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
2
|
||||
],
|
||||
"color": 7995392
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
3
|
||||
],
|
||||
"color": 8650752
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
4
|
||||
],
|
||||
"color": 9306112
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
5
|
||||
],
|
||||
"color": 10027008
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
6
|
||||
],
|
||||
"color": 10682368
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
7
|
||||
],
|
||||
"color": 11337728
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
8
|
||||
],
|
||||
"color": 11993088
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
9
|
||||
],
|
||||
"color": 12648448
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
10
|
||||
],
|
||||
"color": 13369344
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
11
|
||||
],
|
||||
"color": 14024704
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
12
|
||||
],
|
||||
"color": 14680064
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
13
|
||||
],
|
||||
"color": 15336960
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
14
|
||||
],
|
||||
"color": 15997696
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
15
|
||||
],
|
||||
"color": 16724480
|
||||
}
|
||||
]
|
||||
},
|
||||
"constant": {
|
||||
"data": [
|
||||
{
|
||||
"keys": [
|
||||
"birch_leaves"
|
||||
],
|
||||
"color": -8345771
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"spruce_leaves"
|
||||
],
|
||||
"color": -10380959
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"lily_pad"
|
||||
],
|
||||
"color": -14647248
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"attached_melon_stem"
|
||||
],
|
||||
"color": -2046180
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"attached_pumpkin_stem"
|
||||
],
|
||||
"color": -2046180
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"melon_stem"
|
||||
],
|
||||
"color": -16711936
|
||||
},
|
||||
{
|
||||
"keys": [
|
||||
"pumpkin_stem"
|
||||
],
|
||||
"color": -16711936
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"version": 775,
|
||||
"minecraftVersion": "26.1",
|
||||
"majorVersion": "26.1",
|
||||
"releaseType": "release"
|
||||
}
|
||||
@@ -0,0 +1,247 @@
|
||||
[
|
||||
{
|
||||
"name": "armor",
|
||||
"resource": "minecraft:armor",
|
||||
"min": 0.0,
|
||||
"max": 30.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "armorToughness",
|
||||
"resource": "minecraft:armor_toughness",
|
||||
"min": 0.0,
|
||||
"max": 20.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "attackDamage",
|
||||
"resource": "minecraft:attack_damage",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 2.0
|
||||
},
|
||||
{
|
||||
"name": "attackKnockback",
|
||||
"resource": "minecraft:attack_knockback",
|
||||
"min": 0.0,
|
||||
"max": 5.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "attackSpeed",
|
||||
"resource": "minecraft:attack_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 4.0
|
||||
},
|
||||
{
|
||||
"name": "blockBreakSpeed",
|
||||
"resource": "minecraft:block_break_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "blockInteractionRange",
|
||||
"resource": "minecraft:block_interaction_range",
|
||||
"min": 0.0,
|
||||
"max": 64.0,
|
||||
"default": 4.5
|
||||
},
|
||||
{
|
||||
"name": "burningTime",
|
||||
"resource": "minecraft:burning_time",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "cameraDistance",
|
||||
"resource": "minecraft:camera_distance",
|
||||
"min": 0.0,
|
||||
"max": 32.0,
|
||||
"default": 4.0
|
||||
},
|
||||
{
|
||||
"name": "explosionKnockbackResistance",
|
||||
"resource": "minecraft:explosion_knockback_resistance",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "entityInteractionRange",
|
||||
"resource": "minecraft:entity_interaction_range",
|
||||
"min": 0.0,
|
||||
"max": 64.0,
|
||||
"default": 3.0
|
||||
},
|
||||
{
|
||||
"name": "fallDamageMultiplier",
|
||||
"resource": "minecraft:fall_damage_multiplier",
|
||||
"min": 0.0,
|
||||
"max": 100.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "flyingSpeed",
|
||||
"resource": "minecraft:flying_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.4
|
||||
},
|
||||
{
|
||||
"name": "followRange",
|
||||
"resource": "minecraft:follow_range",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 32.0
|
||||
},
|
||||
{
|
||||
"name": "gravity",
|
||||
"resource": "minecraft:gravity",
|
||||
"min": -1.0,
|
||||
"max": 1.0,
|
||||
"default": 0.08
|
||||
},
|
||||
{
|
||||
"name": "jumpStrength",
|
||||
"resource": "minecraft:jump_strength",
|
||||
"min": 0.0,
|
||||
"max": 32.0,
|
||||
"default": 0.41999998688697815
|
||||
},
|
||||
{
|
||||
"name": "knockbackResistance",
|
||||
"resource": "minecraft:knockback_resistance",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "luck",
|
||||
"resource": "minecraft:luck",
|
||||
"min": -1024.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "maxAbsorption",
|
||||
"resource": "minecraft:max_absorption",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "maxHealth",
|
||||
"resource": "minecraft:max_health",
|
||||
"min": 1.0,
|
||||
"max": 1024.0,
|
||||
"default": 20.0
|
||||
},
|
||||
{
|
||||
"name": "miningEfficiency",
|
||||
"resource": "minecraft:mining_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "movementEfficiency",
|
||||
"resource": "minecraft:movement_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "movementSpeed",
|
||||
"resource": "minecraft:movement_speed",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.7
|
||||
},
|
||||
{
|
||||
"name": "oxygenBonus",
|
||||
"resource": "minecraft:oxygen_bonus",
|
||||
"min": 0.0,
|
||||
"max": 1024.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "safeFallDistance",
|
||||
"resource": "minecraft:safe_fall_distance",
|
||||
"min": -1024.0,
|
||||
"max": 1024.0,
|
||||
"default": 3.0
|
||||
},
|
||||
{
|
||||
"name": "scale",
|
||||
"resource": "minecraft:scale",
|
||||
"min": 0.0625,
|
||||
"max": 16.0,
|
||||
"default": 1.0
|
||||
},
|
||||
{
|
||||
"name": "sneakingSpeed",
|
||||
"resource": "minecraft:sneaking_speed",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.3
|
||||
},
|
||||
{
|
||||
"name": "spawnReinforcements",
|
||||
"resource": "minecraft:spawn_reinforcements",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "stepHeight",
|
||||
"resource": "minecraft:step_height",
|
||||
"min": 0.0,
|
||||
"max": 10.0,
|
||||
"default": 0.6
|
||||
},
|
||||
{
|
||||
"name": "submergedMiningSpeed",
|
||||
"resource": "minecraft:submerged_mining_speed",
|
||||
"min": 0.0,
|
||||
"max": 20.0,
|
||||
"default": 0.2
|
||||
},
|
||||
{
|
||||
"name": "sweepingDamageRatio",
|
||||
"resource": "minecraft:sweeping_damage_ratio",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "temptRange",
|
||||
"resource": "minecraft:tempt_range",
|
||||
"min": 0.0,
|
||||
"max": 2048.0,
|
||||
"default": 10.0
|
||||
},
|
||||
{
|
||||
"name": "waterMovementEfficiency",
|
||||
"resource": "minecraft:water_movement_efficiency",
|
||||
"min": 0.0,
|
||||
"max": 1.0,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "waypointTransmitRange",
|
||||
"resource": "minecraft:waypoint_transmit_range",
|
||||
"min": 0.0,
|
||||
"max": 6.0E7,
|
||||
"default": 0.0
|
||||
},
|
||||
{
|
||||
"name": "waypointReceiveRange",
|
||||
"resource": "minecraft:waypoint_receive_range",
|
||||
"min": 0.0,
|
||||
"max": 6.0E7,
|
||||
"default": 0.0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,652 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Badlands",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "bamboo_jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Bamboo Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "basalt_deltas",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Basalt Deltas",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Beach",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Birch Forest",
|
||||
"color": 8037887
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "cherry_grove",
|
||||
"category": "forest",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cherry Grove",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "cold_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Cold Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "crimson_forest",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Crimson Forest",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "dark_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Dark Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "deep_cold_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Cold Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "deep_dark",
|
||||
"category": "underground",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Dark",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "deep_frozen_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Frozen Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "deep_lukewarm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Lukewarm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "deep_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Deep Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "desert",
|
||||
"category": "desert",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Desert",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "dripstone_caves",
|
||||
"category": "underground",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Dripstone Caves",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "end_barrens",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Barrens",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "end_highlands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Highlands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "end_midlands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "End Midlands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "eroded_badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Eroded Badlands",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "flower_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Flower Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Forest",
|
||||
"color": 7972607
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "frozen_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen Ocean",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "frozen_peaks",
|
||||
"category": "ice",
|
||||
"temperature": -0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen Peaks",
|
||||
"color": 8756735
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "frozen_river",
|
||||
"category": "ice",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Frozen River",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "grove",
|
||||
"category": "forest",
|
||||
"temperature": -0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Grove",
|
||||
"color": 8495359
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "ice_spikes",
|
||||
"category": "ice",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ice Spikes",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "jagged_peaks",
|
||||
"category": "mountain",
|
||||
"temperature": -0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jagged Peaks",
|
||||
"color": 8756735
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "lukewarm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Lukewarm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "lush_caves",
|
||||
"category": "underground",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Lush Caves",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "mangrove_swamp",
|
||||
"category": "forest",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mangrove Swamp",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "meadow",
|
||||
"category": "mountain",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Meadow",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "mushroom_fields",
|
||||
"category": "mushroom",
|
||||
"temperature": 0.9,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Mushroom Fields",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "nether_wastes",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Nether Wastes",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "old_growth_birch_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.6,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Birch Forest",
|
||||
"color": 8037887
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "old_growth_pine_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.3,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Pine Taiga",
|
||||
"color": 8168447
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "old_growth_spruce_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Old Growth Spruce Taiga",
|
||||
"color": 8233983
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "pale_garden",
|
||||
"category": "none",
|
||||
"temperature": 0.7,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Pale Garden",
|
||||
"color": 12171705
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Plains",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "river",
|
||||
"category": "river",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "River",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "savanna_plateau",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Savanna Plateau",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "small_end_islands",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "Small End Islands",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "snowy_beach",
|
||||
"category": "beach",
|
||||
"temperature": 0.05,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Beach",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "snowy_plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Plains",
|
||||
"color": 8364543
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "snowy_slopes",
|
||||
"category": "mountain",
|
||||
"temperature": -0.3,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Slopes",
|
||||
"color": 8560639
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "snowy_taiga",
|
||||
"category": "taiga",
|
||||
"temperature": -0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Snowy Taiga",
|
||||
"color": 8625919
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "soul_sand_valley",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Soul Sand Valley",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "sparse_jungle",
|
||||
"category": "jungle",
|
||||
"temperature": 0.95,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Sparse Jungle",
|
||||
"color": 7842047
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "stony_peaks",
|
||||
"category": "mountain",
|
||||
"temperature": 1.0,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Stony Peaks",
|
||||
"color": 7776511
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "stony_shore",
|
||||
"category": "beach",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Stony Shore",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "sunflower_plains",
|
||||
"category": "plains",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Sunflower Plains",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "swamp",
|
||||
"category": "swamp",
|
||||
"temperature": 0.8,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Swamp",
|
||||
"color": 7907327
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "taiga",
|
||||
"category": "taiga",
|
||||
"temperature": 0.25,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Taiga",
|
||||
"color": 8233983
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "the_end",
|
||||
"category": "the_end",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "end",
|
||||
"displayName": "The End",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "the_void",
|
||||
"category": "none",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "The Void",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "warm_ocean",
|
||||
"category": "ocean",
|
||||
"temperature": 0.5,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Warm Ocean",
|
||||
"color": 8103167
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "warped_forest",
|
||||
"category": "nether",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "nether",
|
||||
"displayName": "Warped Forest",
|
||||
"color": 0
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "windswept_forest",
|
||||
"category": "forest",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Forest",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "windswept_gravelly_hills",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Gravelly Hills",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "windswept_hills",
|
||||
"category": "extreme_hills",
|
||||
"temperature": 0.2,
|
||||
"has_precipitation": true,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Hills",
|
||||
"color": 8233727
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "windswept_savanna",
|
||||
"category": "savanna",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Windswept Savanna",
|
||||
"color": 7254527
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "wooded_badlands",
|
||||
"category": "mesa",
|
||||
"temperature": 2.0,
|
||||
"has_precipitation": false,
|
||||
"dimension": "overworld",
|
||||
"displayName": "Wooded Badlands",
|
||||
"color": 7254527
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,242 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "Speed",
|
||||
"displayName": "Speed",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "Slowness",
|
||||
"displayName": "Slowness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Haste",
|
||||
"displayName": "Haste",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "MiningFatigue",
|
||||
"displayName": "Mining Fatigue",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "Strength",
|
||||
"displayName": "Strength",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "InstantHealth",
|
||||
"displayName": "Instant Health",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "InstantDamage",
|
||||
"displayName": "Instant Damage",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "JumpBoost",
|
||||
"displayName": "Jump Boost",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "Nausea",
|
||||
"displayName": "Nausea",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Regeneration",
|
||||
"displayName": "Regeneration",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "Resistance",
|
||||
"displayName": "Resistance",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "FireResistance",
|
||||
"displayName": "Fire Resistance",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "WaterBreathing",
|
||||
"displayName": "Water Breathing",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "Invisibility",
|
||||
"displayName": "Invisibility",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "Blindness",
|
||||
"displayName": "Blindness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "NightVision",
|
||||
"displayName": "Night Vision",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "Hunger",
|
||||
"displayName": "Hunger",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "Weakness",
|
||||
"displayName": "Weakness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "Poison",
|
||||
"displayName": "Poison",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "Wither",
|
||||
"displayName": "Wither",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "HealthBoost",
|
||||
"displayName": "Health Boost",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "Absorption",
|
||||
"displayName": "Absorption",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "Saturation",
|
||||
"displayName": "Saturation",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "Glowing",
|
||||
"displayName": "Glowing",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "Levitation",
|
||||
"displayName": "Levitation",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "Luck",
|
||||
"displayName": "Luck",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "BadLuck",
|
||||
"displayName": "Bad Luck",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "SlowFalling",
|
||||
"displayName": "Slow Falling",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "ConduitPower",
|
||||
"displayName": "Conduit Power",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "DolphinsGrace",
|
||||
"displayName": "Dolphin's Grace",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "BadOmen",
|
||||
"displayName": "Bad Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "HeroOfTheVillage",
|
||||
"displayName": "Hero of the Village",
|
||||
"type": "good"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "Darkness",
|
||||
"displayName": "Darkness",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "TrialOmen",
|
||||
"displayName": "Trial Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "RaidOmen",
|
||||
"displayName": "Raid Omen",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "WindCharged",
|
||||
"displayName": "Wind Charged",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "Weaving",
|
||||
"displayName": "Weaving",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "Oozing",
|
||||
"displayName": "Oozing",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "Infested",
|
||||
"displayName": "Infested",
|
||||
"type": "bad"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "BreathOfTheNautilus",
|
||||
"displayName": "Breath of the Nautilus",
|
||||
"type": "good"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,980 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "aqua_affinity",
|
||||
"displayName": "Aqua Affinity",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "head_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "bane_of_arthropods",
|
||||
"displayName": "Bane of Arthropods",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "binding_curse",
|
||||
"displayName": "Curse of Binding",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": true,
|
||||
"exclude": [],
|
||||
"category": "equippable",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "blast_protection",
|
||||
"displayName": "Blast Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"fire_protection",
|
||||
"projectile_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "breach",
|
||||
"displayName": "Breach",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "mace",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "channeling",
|
||||
"displayName": "Channeling",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"riptide"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "density",
|
||||
"displayName": "Density",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"impaling",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "mace",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "depth_strider",
|
||||
"displayName": "Depth Strider",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"frost_walker"
|
||||
],
|
||||
"category": "foot_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "efficiency",
|
||||
"displayName": "Efficiency",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "mining",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "feather_falling",
|
||||
"displayName": "Feather Falling",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "foot_armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "fire_aspect",
|
||||
"displayName": "Fire Aspect",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fire_aspect",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "fire_protection",
|
||||
"displayName": "Fire Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"projectile_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "flame",
|
||||
"displayName": "Flame",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "fortune",
|
||||
"displayName": "Fortune",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"silk_touch"
|
||||
],
|
||||
"category": "mining_loot",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "frost_walker",
|
||||
"displayName": "Frost Walker",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"depth_strider"
|
||||
],
|
||||
"category": "foot_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "impaling",
|
||||
"displayName": "Impaling",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"sharpness",
|
||||
"smite"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "infinity",
|
||||
"displayName": "Infinity",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"mending"
|
||||
],
|
||||
"category": "bow",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "knockback",
|
||||
"displayName": "Knockback",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "melee_weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "looting",
|
||||
"displayName": "Looting",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "melee_weapon",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "loyalty",
|
||||
"displayName": "Loyalty",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"riptide"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "luck_of_the_sea",
|
||||
"displayName": "Luck of the Sea",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fishing",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "lunge",
|
||||
"displayName": "Lunge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "lunge",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "lure",
|
||||
"displayName": "Lure",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "fishing",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "mending",
|
||||
"displayName": "Mending",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"infinity"
|
||||
],
|
||||
"category": "durability",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "multishot",
|
||||
"displayName": "Multishot",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"piercing"
|
||||
],
|
||||
"category": "crossbow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "piercing",
|
||||
"displayName": "Piercing",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"multishot"
|
||||
],
|
||||
"category": "crossbow",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "power",
|
||||
"displayName": "Power",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "projectile_protection",
|
||||
"displayName": "Projectile Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"fire_protection",
|
||||
"protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "protection",
|
||||
"displayName": "Protection",
|
||||
"maxLevel": 4,
|
||||
"minCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 3,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"blast_protection",
|
||||
"fire_protection",
|
||||
"projectile_protection"
|
||||
],
|
||||
"category": "armor",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "punch",
|
||||
"displayName": "Punch",
|
||||
"maxLevel": 2,
|
||||
"minCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 1,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "bow",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "quick_charge",
|
||||
"displayName": "Quick Charge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "crossbow",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "respiration",
|
||||
"displayName": "Respiration",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "head_armor",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "riptide",
|
||||
"displayName": "Riptide",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"channeling",
|
||||
"loyalty"
|
||||
],
|
||||
"category": "trident",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "sharpness",
|
||||
"displayName": "Sharpness",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"smite"
|
||||
],
|
||||
"category": "sharp_weapon",
|
||||
"weight": 10,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "silk_touch",
|
||||
"displayName": "Silk Touch",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"fortune"
|
||||
],
|
||||
"category": "mining_loot",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "smite",
|
||||
"displayName": "Smite",
|
||||
"maxLevel": 5,
|
||||
"minCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 4,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [
|
||||
"bane_of_arthropods",
|
||||
"breach",
|
||||
"density",
|
||||
"impaling",
|
||||
"sharpness"
|
||||
],
|
||||
"category": "weapon",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "soul_speed",
|
||||
"displayName": "Soul Speed",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "foot_armor",
|
||||
"weight": 1,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "sweeping_edge",
|
||||
"displayName": "Sweeping Edge",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "sweeping",
|
||||
"weight": 2,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "swift_sneak",
|
||||
"displayName": "Swift Sneak",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "leg_armor",
|
||||
"weight": 1,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "thorns",
|
||||
"displayName": "Thorns",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "armor",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "unbreaking",
|
||||
"displayName": "Unbreaking",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": false,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "durability",
|
||||
"weight": 5,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "vanishing_curse",
|
||||
"displayName": "Curse of Vanishing",
|
||||
"maxLevel": 1,
|
||||
"minCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 0,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": true,
|
||||
"exclude": [],
|
||||
"category": "vanishing",
|
||||
"weight": 1,
|
||||
"tradeable": true,
|
||||
"discoverable": true
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "wind_burst",
|
||||
"displayName": "Wind Burst",
|
||||
"maxLevel": 3,
|
||||
"minCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"maxCost": {
|
||||
"a": 2,
|
||||
"b": 1
|
||||
},
|
||||
"treasureOnly": true,
|
||||
"curse": false,
|
||||
"exclude": [],
|
||||
"category": "mace",
|
||||
"weight": 2,
|
||||
"tradeable": false,
|
||||
"discoverable": false
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,442 @@
|
||||
[
|
||||
{
|
||||
"id": 894,
|
||||
"name": "apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 948,
|
||||
"name": "mushroom_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Mushroom Stew",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 954,
|
||||
"name": "bread",
|
||||
"stackSize": 64,
|
||||
"displayName": "Bread",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 984,
|
||||
"name": "porkchop",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Porkchop",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 985,
|
||||
"name": "cooked_porkchop",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Porkchop",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 987,
|
||||
"name": "golden_apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Golden Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 988,
|
||||
"name": "enchanted_golden_apple",
|
||||
"stackSize": 64,
|
||||
"displayName": "Enchanted Golden Apple",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 13.6,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 1020,
|
||||
"name": "pufferfish_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Pufferfish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1021,
|
||||
"name": "salmon_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Salmon",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1022,
|
||||
"name": "cod_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Cod",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1023,
|
||||
"name": "tropical_fish_bucket",
|
||||
"stackSize": 1,
|
||||
"displayName": "Bucket of Tropical Fish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1058,
|
||||
"name": "cod",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Cod",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1059,
|
||||
"name": "salmon",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Salmon",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1060,
|
||||
"name": "tropical_fish",
|
||||
"stackSize": 64,
|
||||
"displayName": "Tropical Fish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1061,
|
||||
"name": "pufferfish",
|
||||
"stackSize": 64,
|
||||
"displayName": "Pufferfish",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.2,
|
||||
"effectiveQuality": 1.2,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1062,
|
||||
"name": "cooked_cod",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Cod",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1063,
|
||||
"name": "cooked_salmon",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Salmon",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1103,
|
||||
"name": "cookie",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cookie",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1107,
|
||||
"name": "melon_slice",
|
||||
"stackSize": 64,
|
||||
"displayName": "Melon Slice",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1108,
|
||||
"name": "dried_kelp",
|
||||
"stackSize": 64,
|
||||
"displayName": "Dried Kelp",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1111,
|
||||
"name": "beef",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Beef",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1112,
|
||||
"name": "cooked_beef",
|
||||
"stackSize": 64,
|
||||
"displayName": "Steak",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 12.8,
|
||||
"effectiveQuality": 20.8,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1113,
|
||||
"name": "chicken",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Chicken",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1114,
|
||||
"name": "cooked_chicken",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Chicken",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1115,
|
||||
"name": "rotten_flesh",
|
||||
"stackSize": 64,
|
||||
"displayName": "Rotten Flesh",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 0.8,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1123,
|
||||
"name": "spider_eye",
|
||||
"stackSize": 64,
|
||||
"displayName": "Spider Eye",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 3.2,
|
||||
"effectiveQuality": 5.2,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1228,
|
||||
"name": "carrot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Carrot",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 3.6000001,
|
||||
"effectiveQuality": 6.6000004,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1229,
|
||||
"name": "potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Potato",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 0.6,
|
||||
"effectiveQuality": 1.6,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1230,
|
||||
"name": "baked_potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Baked Potato",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1231,
|
||||
"name": "poisonous_potato",
|
||||
"stackSize": 64,
|
||||
"displayName": "Poisonous Potato",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1233,
|
||||
"name": "golden_carrot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Golden Carrot",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 14.400001,
|
||||
"effectiveQuality": 20.400002,
|
||||
"saturationRatio": 2.4
|
||||
},
|
||||
{
|
||||
"id": 1242,
|
||||
"name": "pumpkin_pie",
|
||||
"stackSize": 64,
|
||||
"displayName": "Pumpkin Pie",
|
||||
"foodPoints": 8.0,
|
||||
"saturation": 4.8,
|
||||
"effectiveQuality": 12.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1250,
|
||||
"name": "rabbit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Rabbit",
|
||||
"foodPoints": 3.0,
|
||||
"saturation": 1.8000001,
|
||||
"effectiveQuality": 4.8,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1251,
|
||||
"name": "cooked_rabbit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Rabbit",
|
||||
"foodPoints": 5.0,
|
||||
"saturation": 6.0,
|
||||
"effectiveQuality": 11.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1252,
|
||||
"name": "rabbit_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Rabbit Stew",
|
||||
"foodPoints": 10.0,
|
||||
"saturation": 12.0,
|
||||
"effectiveQuality": 22.0,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1265,
|
||||
"name": "mutton",
|
||||
"stackSize": 64,
|
||||
"displayName": "Raw Mutton",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 3.2,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1266,
|
||||
"name": "cooked_mutton",
|
||||
"stackSize": 64,
|
||||
"displayName": "Cooked Mutton",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 9.6,
|
||||
"effectiveQuality": 15.6,
|
||||
"saturationRatio": 1.6
|
||||
},
|
||||
{
|
||||
"id": 1284,
|
||||
"name": "chorus_fruit",
|
||||
"stackSize": 64,
|
||||
"displayName": "Chorus Fruit",
|
||||
"foodPoints": 4.0,
|
||||
"saturation": 2.4,
|
||||
"effectiveQuality": 6.4,
|
||||
"saturationRatio": 0.6
|
||||
},
|
||||
{
|
||||
"id": 1288,
|
||||
"name": "beetroot",
|
||||
"stackSize": 64,
|
||||
"displayName": "Beetroot",
|
||||
"foodPoints": 1.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 2.2,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1290,
|
||||
"name": "beetroot_soup",
|
||||
"stackSize": 1,
|
||||
"displayName": "Beetroot Soup",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1341,
|
||||
"name": "suspicious_stew",
|
||||
"stackSize": 1,
|
||||
"displayName": "Suspicious Stew",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 7.2000003,
|
||||
"effectiveQuality": 13.200001,
|
||||
"saturationRatio": 1.2
|
||||
},
|
||||
{
|
||||
"id": 1374,
|
||||
"name": "sweet_berries",
|
||||
"stackSize": 64,
|
||||
"displayName": "Sweet Berries",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1375,
|
||||
"name": "glow_berries",
|
||||
"stackSize": 64,
|
||||
"displayName": "Glow Berries",
|
||||
"foodPoints": 2.0,
|
||||
"saturation": 0.4,
|
||||
"effectiveQuality": 2.4,
|
||||
"saturationRatio": 0.2
|
||||
},
|
||||
{
|
||||
"id": 1382,
|
||||
"name": "honey_bottle",
|
||||
"stackSize": 16,
|
||||
"displayName": "Honey Bottle",
|
||||
"foodPoints": 6.0,
|
||||
"saturation": 1.2,
|
||||
"effectiveQuality": 7.2,
|
||||
"saturationRatio": 0.2
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,110 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "harp"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "basedrum"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "snare"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "hat"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "bass"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "flute"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "bell"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "guitar"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "chime"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "xylophone"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "iron_xylophone"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "cow_bell"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "didgeridoo"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "bit"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "banjo"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "pling"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "trumpet"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "trumpet_exposed"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "trumpet_oxidized"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "trumpet_weathered"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "zombie"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "skeleton"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "creeper"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "dragon"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "wither_skeleton"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "piglin"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "custom_head"
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,233 @@
|
||||
{
|
||||
"default": {},
|
||||
"leaves": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"coweb": {
|
||||
"1106": 15.0,
|
||||
"912": 15.0,
|
||||
"917": 15.0,
|
||||
"922": 15.0,
|
||||
"927": 15.0,
|
||||
"932": 15.0,
|
||||
"937": 15.0,
|
||||
"942": 15.0
|
||||
},
|
||||
"plant": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"gourd": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5
|
||||
},
|
||||
"vine_or_glow_lichen": {
|
||||
"1106": 2.0
|
||||
},
|
||||
"wool": {
|
||||
"1106": 1.0
|
||||
},
|
||||
"sword_instantly_mines": {
|
||||
"912": 2.0,
|
||||
"917": 1.0,
|
||||
"922": 4.0,
|
||||
"927": 12.0,
|
||||
"932": 6.0,
|
||||
"937": 8.0,
|
||||
"942": 9.0
|
||||
},
|
||||
"sword_efficient": {
|
||||
"912": 2.0,
|
||||
"917": 1.0,
|
||||
"922": 4.0,
|
||||
"927": 12.0,
|
||||
"932": 6.0,
|
||||
"937": 8.0,
|
||||
"942": 9.0
|
||||
},
|
||||
"incorrect_for_wooden_tool": {
|
||||
"913": 2.0,
|
||||
"914": 2.0,
|
||||
"915": 2.0,
|
||||
"916": 2.0
|
||||
},
|
||||
"mineable/shovel": {
|
||||
"913": 2.0,
|
||||
"918": 1.0,
|
||||
"923": 4.0,
|
||||
"928": 12.0,
|
||||
"933": 6.0,
|
||||
"938": 8.0,
|
||||
"943": 9.0
|
||||
},
|
||||
"mineable/pickaxe": {
|
||||
"914": 2.0,
|
||||
"919": 1.0,
|
||||
"924": 4.0,
|
||||
"929": 12.0,
|
||||
"934": 6.0,
|
||||
"939": 8.0,
|
||||
"944": 9.0
|
||||
},
|
||||
"mineable/axe": {
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"mineable/hoe": {
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"incorrect_for_copper_tool": {
|
||||
"918": 1.0,
|
||||
"919": 1.0,
|
||||
"920": 1.0,
|
||||
"921": 1.0
|
||||
},
|
||||
"incorrect_for_stone_tool": {
|
||||
"923": 4.0,
|
||||
"924": 4.0,
|
||||
"925": 4.0,
|
||||
"926": 4.0
|
||||
},
|
||||
"incorrect_for_gold_tool": {
|
||||
"928": 12.0,
|
||||
"929": 12.0,
|
||||
"930": 12.0,
|
||||
"931": 12.0
|
||||
},
|
||||
"incorrect_for_iron_tool": {
|
||||
"933": 6.0,
|
||||
"934": 6.0,
|
||||
"935": 6.0,
|
||||
"936": 6.0
|
||||
},
|
||||
"incorrect_for_diamond_tool": {
|
||||
"938": 8.0,
|
||||
"939": 8.0,
|
||||
"940": 8.0,
|
||||
"941": 8.0
|
||||
},
|
||||
"incorrect_for_netherite_tool": {
|
||||
"943": 9.0,
|
||||
"944": 9.0,
|
||||
"945": 9.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"plant;mineable/axe": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"gourd;mineable/axe": {
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
},
|
||||
"leaves;mineable/hoe": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"leaves;mineable/axe;mineable/hoe": {
|
||||
"1106": 1.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0,
|
||||
"916": 2.0,
|
||||
"921": 1.0,
|
||||
"926": 4.0,
|
||||
"931": 12.0,
|
||||
"936": 6.0,
|
||||
"941": 8.0,
|
||||
"946": 9.0
|
||||
},
|
||||
"vine_or_glow_lichen;plant;mineable/axe": {
|
||||
"1106": 2.0,
|
||||
"912": 1.5,
|
||||
"917": 1.5,
|
||||
"922": 1.5,
|
||||
"927": 1.5,
|
||||
"932": 1.5,
|
||||
"937": 1.5,
|
||||
"942": 1.5,
|
||||
"915": 2.0,
|
||||
"920": 1.0,
|
||||
"925": 4.0,
|
||||
"930": 12.0,
|
||||
"935": 6.0,
|
||||
"940": 8.0,
|
||||
"945": 9.0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,470 @@
|
||||
[
|
||||
{
|
||||
"id": 0,
|
||||
"name": "angry_villager"
|
||||
},
|
||||
{
|
||||
"id": 1,
|
||||
"name": "block"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "block_marker"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "bubble"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "cloud"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "copper_fire_flame"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "crit"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "damage_indicator"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "dragon_breath"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "dripping_lava"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "falling_lava"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "landing_lava"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "dripping_water"
|
||||
},
|
||||
{
|
||||
"id": 13,
|
||||
"name": "falling_water"
|
||||
},
|
||||
{
|
||||
"id": 14,
|
||||
"name": "dust"
|
||||
},
|
||||
{
|
||||
"id": 15,
|
||||
"name": "dust_color_transition"
|
||||
},
|
||||
{
|
||||
"id": 16,
|
||||
"name": "effect"
|
||||
},
|
||||
{
|
||||
"id": 17,
|
||||
"name": "elder_guardian"
|
||||
},
|
||||
{
|
||||
"id": 18,
|
||||
"name": "enchanted_hit"
|
||||
},
|
||||
{
|
||||
"id": 19,
|
||||
"name": "enchant"
|
||||
},
|
||||
{
|
||||
"id": 20,
|
||||
"name": "end_rod"
|
||||
},
|
||||
{
|
||||
"id": 21,
|
||||
"name": "entity_effect"
|
||||
},
|
||||
{
|
||||
"id": 22,
|
||||
"name": "explosion_emitter"
|
||||
},
|
||||
{
|
||||
"id": 23,
|
||||
"name": "explosion"
|
||||
},
|
||||
{
|
||||
"id": 24,
|
||||
"name": "gust"
|
||||
},
|
||||
{
|
||||
"id": 25,
|
||||
"name": "small_gust"
|
||||
},
|
||||
{
|
||||
"id": 26,
|
||||
"name": "gust_emitter_large"
|
||||
},
|
||||
{
|
||||
"id": 27,
|
||||
"name": "gust_emitter_small"
|
||||
},
|
||||
{
|
||||
"id": 28,
|
||||
"name": "sonic_boom"
|
||||
},
|
||||
{
|
||||
"id": 29,
|
||||
"name": "falling_dust"
|
||||
},
|
||||
{
|
||||
"id": 30,
|
||||
"name": "firework"
|
||||
},
|
||||
{
|
||||
"id": 31,
|
||||
"name": "fishing"
|
||||
},
|
||||
{
|
||||
"id": 32,
|
||||
"name": "flame"
|
||||
},
|
||||
{
|
||||
"id": 33,
|
||||
"name": "infested"
|
||||
},
|
||||
{
|
||||
"id": 34,
|
||||
"name": "cherry_leaves"
|
||||
},
|
||||
{
|
||||
"id": 35,
|
||||
"name": "pale_oak_leaves"
|
||||
},
|
||||
{
|
||||
"id": 36,
|
||||
"name": "tinted_leaves"
|
||||
},
|
||||
{
|
||||
"id": 37,
|
||||
"name": "sculk_soul"
|
||||
},
|
||||
{
|
||||
"id": 38,
|
||||
"name": "sculk_charge"
|
||||
},
|
||||
{
|
||||
"id": 39,
|
||||
"name": "sculk_charge_pop"
|
||||
},
|
||||
{
|
||||
"id": 40,
|
||||
"name": "soul_fire_flame"
|
||||
},
|
||||
{
|
||||
"id": 41,
|
||||
"name": "soul"
|
||||
},
|
||||
{
|
||||
"id": 42,
|
||||
"name": "flash"
|
||||
},
|
||||
{
|
||||
"id": 43,
|
||||
"name": "happy_villager"
|
||||
},
|
||||
{
|
||||
"id": 44,
|
||||
"name": "composter"
|
||||
},
|
||||
{
|
||||
"id": 45,
|
||||
"name": "heart"
|
||||
},
|
||||
{
|
||||
"id": 46,
|
||||
"name": "instant_effect"
|
||||
},
|
||||
{
|
||||
"id": 47,
|
||||
"name": "item"
|
||||
},
|
||||
{
|
||||
"id": 48,
|
||||
"name": "vibration"
|
||||
},
|
||||
{
|
||||
"id": 49,
|
||||
"name": "trail"
|
||||
},
|
||||
{
|
||||
"id": 50,
|
||||
"name": "pause_mob_growth"
|
||||
},
|
||||
{
|
||||
"id": 51,
|
||||
"name": "reset_mob_growth"
|
||||
},
|
||||
{
|
||||
"id": 52,
|
||||
"name": "item_slime"
|
||||
},
|
||||
{
|
||||
"id": 53,
|
||||
"name": "item_cobweb"
|
||||
},
|
||||
{
|
||||
"id": 54,
|
||||
"name": "item_snowball"
|
||||
},
|
||||
{
|
||||
"id": 55,
|
||||
"name": "large_smoke"
|
||||
},
|
||||
{
|
||||
"id": 56,
|
||||
"name": "lava"
|
||||
},
|
||||
{
|
||||
"id": 57,
|
||||
"name": "mycelium"
|
||||
},
|
||||
{
|
||||
"id": 58,
|
||||
"name": "note"
|
||||
},
|
||||
{
|
||||
"id": 59,
|
||||
"name": "poof"
|
||||
},
|
||||
{
|
||||
"id": 60,
|
||||
"name": "portal"
|
||||
},
|
||||
{
|
||||
"id": 61,
|
||||
"name": "rain"
|
||||
},
|
||||
{
|
||||
"id": 62,
|
||||
"name": "smoke"
|
||||
},
|
||||
{
|
||||
"id": 63,
|
||||
"name": "white_smoke"
|
||||
},
|
||||
{
|
||||
"id": 64,
|
||||
"name": "sneeze"
|
||||
},
|
||||
{
|
||||
"id": 65,
|
||||
"name": "spit"
|
||||
},
|
||||
{
|
||||
"id": 66,
|
||||
"name": "squid_ink"
|
||||
},
|
||||
{
|
||||
"id": 67,
|
||||
"name": "sweep_attack"
|
||||
},
|
||||
{
|
||||
"id": 68,
|
||||
"name": "totem_of_undying"
|
||||
},
|
||||
{
|
||||
"id": 69,
|
||||
"name": "underwater"
|
||||
},
|
||||
{
|
||||
"id": 70,
|
||||
"name": "splash"
|
||||
},
|
||||
{
|
||||
"id": 71,
|
||||
"name": "witch"
|
||||
},
|
||||
{
|
||||
"id": 72,
|
||||
"name": "bubble_pop"
|
||||
},
|
||||
{
|
||||
"id": 73,
|
||||
"name": "current_down"
|
||||
},
|
||||
{
|
||||
"id": 74,
|
||||
"name": "bubble_column_up"
|
||||
},
|
||||
{
|
||||
"id": 75,
|
||||
"name": "nautilus"
|
||||
},
|
||||
{
|
||||
"id": 76,
|
||||
"name": "dolphin"
|
||||
},
|
||||
{
|
||||
"id": 77,
|
||||
"name": "campfire_cosy_smoke"
|
||||
},
|
||||
{
|
||||
"id": 78,
|
||||
"name": "campfire_signal_smoke"
|
||||
},
|
||||
{
|
||||
"id": 79,
|
||||
"name": "dripping_honey"
|
||||
},
|
||||
{
|
||||
"id": 80,
|
||||
"name": "falling_honey"
|
||||
},
|
||||
{
|
||||
"id": 81,
|
||||
"name": "landing_honey"
|
||||
},
|
||||
{
|
||||
"id": 82,
|
||||
"name": "falling_nectar"
|
||||
},
|
||||
{
|
||||
"id": 83,
|
||||
"name": "falling_spore_blossom"
|
||||
},
|
||||
{
|
||||
"id": 84,
|
||||
"name": "ash"
|
||||
},
|
||||
{
|
||||
"id": 85,
|
||||
"name": "crimson_spore"
|
||||
},
|
||||
{
|
||||
"id": 86,
|
||||
"name": "warped_spore"
|
||||
},
|
||||
{
|
||||
"id": 87,
|
||||
"name": "spore_blossom_air"
|
||||
},
|
||||
{
|
||||
"id": 88,
|
||||
"name": "dripping_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 89,
|
||||
"name": "falling_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 90,
|
||||
"name": "landing_obsidian_tear"
|
||||
},
|
||||
{
|
||||
"id": 91,
|
||||
"name": "reverse_portal"
|
||||
},
|
||||
{
|
||||
"id": 92,
|
||||
"name": "white_ash"
|
||||
},
|
||||
{
|
||||
"id": 93,
|
||||
"name": "small_flame"
|
||||
},
|
||||
{
|
||||
"id": 94,
|
||||
"name": "snowflake"
|
||||
},
|
||||
{
|
||||
"id": 95,
|
||||
"name": "dripping_dripstone_lava"
|
||||
},
|
||||
{
|
||||
"id": 96,
|
||||
"name": "falling_dripstone_lava"
|
||||
},
|
||||
{
|
||||
"id": 97,
|
||||
"name": "dripping_dripstone_water"
|
||||
},
|
||||
{
|
||||
"id": 98,
|
||||
"name": "falling_dripstone_water"
|
||||
},
|
||||
{
|
||||
"id": 99,
|
||||
"name": "glow_squid_ink"
|
||||
},
|
||||
{
|
||||
"id": 100,
|
||||
"name": "glow"
|
||||
},
|
||||
{
|
||||
"id": 101,
|
||||
"name": "wax_on"
|
||||
},
|
||||
{
|
||||
"id": 102,
|
||||
"name": "wax_off"
|
||||
},
|
||||
{
|
||||
"id": 103,
|
||||
"name": "electric_spark"
|
||||
},
|
||||
{
|
||||
"id": 104,
|
||||
"name": "scrape"
|
||||
},
|
||||
{
|
||||
"id": 105,
|
||||
"name": "shriek"
|
||||
},
|
||||
{
|
||||
"id": 106,
|
||||
"name": "egg_crack"
|
||||
},
|
||||
{
|
||||
"id": 107,
|
||||
"name": "dust_plume"
|
||||
},
|
||||
{
|
||||
"id": 108,
|
||||
"name": "trial_spawner_detection"
|
||||
},
|
||||
{
|
||||
"id": 109,
|
||||
"name": "trial_spawner_detection_ominous"
|
||||
},
|
||||
{
|
||||
"id": 110,
|
||||
"name": "vault_connection"
|
||||
},
|
||||
{
|
||||
"id": 111,
|
||||
"name": "dust_pillar"
|
||||
},
|
||||
{
|
||||
"id": 112,
|
||||
"name": "ominous_spawning"
|
||||
},
|
||||
{
|
||||
"id": 113,
|
||||
"name": "raid_omen"
|
||||
},
|
||||
{
|
||||
"id": 114,
|
||||
"name": "trial_omen"
|
||||
},
|
||||
{
|
||||
"id": 115,
|
||||
"name": "block_crumble"
|
||||
},
|
||||
{
|
||||
"id": 116,
|
||||
"name": "firefly"
|
||||
}
|
||||
]
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user