1.13 items support
+ Add 1.16 block and item definitions
This commit is contained in:
parent
951a0212d8
commit
7425305154
@ -158,9 +158,10 @@ target_sources(
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(FOLDERS
|
set(FOLDERS
|
||||||
OSSupport HTTP Items Blocks Protocol Generating mbedTLS++ Bindings
|
Bindings BlockEntities Blocks Entities
|
||||||
WorldStorage Mobs Entities Simulator Simulator/IncrementalRedstoneSimulator
|
Generating HTTP Items mbedTLS++ Mobs Noise
|
||||||
BlockEntities UI Noise
|
OSSupport Protocol Registries Simulator
|
||||||
|
Simulator/IncrementalRedstoneSimulator UI WorldStorage
|
||||||
)
|
)
|
||||||
|
|
||||||
# Add all child source directories:
|
# Add all child source directories:
|
||||||
|
@ -44,6 +44,7 @@ local g_IgnoredFiles =
|
|||||||
"Bindings/Bindings.h",
|
"Bindings/Bindings.h",
|
||||||
"Bindings/Bindings.cpp",
|
"Bindings/Bindings.cpp",
|
||||||
"Bindings/LuaState_Implementation.cpp",
|
"Bindings/LuaState_Implementation.cpp",
|
||||||
|
"Registries/Blocks.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
--- The list of files not to be processed, as a dictionary (filename => true), built from g_IgnoredFiles
|
--- The list of files not to be processed, as a dictionary (filename => true), built from g_IgnoredFiles
|
||||||
|
@ -32,3 +32,5 @@ target_sources(
|
|||||||
ProtocolRecognizer.h
|
ProtocolRecognizer.h
|
||||||
RecipeMapper.h
|
RecipeMapper.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_subdirectory(Palettes)
|
@ -5,6 +5,9 @@
|
|||||||
#include "Protocol_1_9.h"
|
#include "Protocol_1_9.h"
|
||||||
#include "../ByteBuffer.h"
|
#include "../ByteBuffer.h"
|
||||||
|
|
||||||
|
#include "Palettes/Upgrade.h"
|
||||||
|
#include "Palettes/Palette_1_13.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -45,7 +48,7 @@ cChunkDataSerializer::cChunkDataSerializer(
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int a_ChunkZ, const std::map<UInt32, UInt32> & a_BlockTypeMap)
|
const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int a_ChunkZ)
|
||||||
{
|
{
|
||||||
Serializations::const_iterator itr = m_Serializations.find(a_Version);
|
Serializations::const_iterator itr = m_Serializations.find(a_Version);
|
||||||
if (itr != m_Serializations.end())
|
if (itr != m_Serializations.end())
|
||||||
@ -59,7 +62,7 @@ const AString & cChunkDataSerializer::Serialize(int a_Version, int a_ChunkX, int
|
|||||||
case RELEASE_1_8_0: Serialize47 (data, a_ChunkX, a_ChunkZ); break;
|
case RELEASE_1_8_0: Serialize47 (data, a_ChunkX, a_ChunkZ); break;
|
||||||
case RELEASE_1_9_0: Serialize107(data, a_ChunkX, a_ChunkZ); break;
|
case RELEASE_1_9_0: Serialize107(data, a_ChunkX, a_ChunkZ); break;
|
||||||
case RELEASE_1_9_4: Serialize110(data, a_ChunkX, a_ChunkZ); break;
|
case RELEASE_1_9_4: Serialize110(data, a_ChunkX, a_ChunkZ); break;
|
||||||
case RELEASE_1_13: Serialize393(data, a_ChunkX, a_ChunkZ, a_BlockTypeMap); break;
|
case RELEASE_1_13: Serialize393(data, a_ChunkX, a_ChunkZ); break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
@ -434,12 +437,10 @@ void cChunkDataSerializer::Serialize110(AString & a_Data, int a_ChunkX, int a_Ch
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cChunkDataSerializer::Serialize393(AString & a_Data, int a_ChunkX, int a_ChunkZ, const std::map<UInt32, UInt32> & a_BlockTypeMap)
|
void cChunkDataSerializer::Serialize393(AString & a_Data, int a_ChunkX, int a_ChunkZ)
|
||||||
{
|
{
|
||||||
// This function returns the fully compressed packet (including packet size), not the raw packet!
|
// This function returns the fully compressed packet (including packet size), not the raw packet!
|
||||||
|
|
||||||
ASSERT(!a_BlockTypeMap.empty()); // We need a protocol-specific translation map
|
|
||||||
|
|
||||||
// Create the packet:
|
// Create the packet:
|
||||||
cByteBuffer Packet(512 KiB);
|
cByteBuffer Packet(512 KiB);
|
||||||
Packet.WriteVarInt32(0x22); // Packet id (Chunk Data packet)
|
Packet.WriteVarInt32(0x22); // Packet id (Chunk Data packet)
|
||||||
@ -485,8 +486,7 @@ void cChunkDataSerializer::Serialize393(AString & a_Data, int a_ChunkX, int a_Ch
|
|||||||
{
|
{
|
||||||
UInt32 blockType = a_Section.m_BlockTypes[Index];
|
UInt32 blockType = a_Section.m_BlockTypes[Index];
|
||||||
UInt32 blockMeta = (a_Section.m_BlockMetas[Index / 2] >> ((Index % 2) * 4)) & 0x0f;
|
UInt32 blockMeta = (a_Section.m_BlockMetas[Index / 2] >> ((Index % 2) * 4)) & 0x0f;
|
||||||
auto itr = a_BlockTypeMap.find(blockType * 16 | blockMeta);
|
UInt64 Value = Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(blockType, blockMeta));
|
||||||
UInt64 Value = (itr == a_BlockTypeMap.end()) ? 0 :itr->second;
|
|
||||||
Value &= Mask; // It shouldn't go out of bounds, but it's still worth being careful
|
Value &= Mask; // It shouldn't go out of bounds, but it's still worth being careful
|
||||||
|
|
||||||
// Painful part where we write data into the long array. Based off of the normal code.
|
// Painful part where we write data into the long array. Based off of the normal code.
|
||||||
|
@ -13,6 +13,7 @@ other clients using the same protocol. */
|
|||||||
class cChunkDataSerializer
|
class cChunkDataSerializer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
RELEASE_1_8_0 = 47,
|
RELEASE_1_8_0 = 47,
|
||||||
@ -27,17 +28,13 @@ public:
|
|||||||
const eDimension a_Dimension
|
const eDimension a_Dimension
|
||||||
);
|
);
|
||||||
|
|
||||||
/** Serializes the contained chunk data into the specified protocol version.
|
/** Serializes the contained chunk data into the specified protocol version. */
|
||||||
TEMPORARY: a_BlockTypeMap is used for the 1.13+ protocols to map from BLOCKTYPE#META to NetBlockID.
|
const AString & Serialize(int a_Version, int a_ChunkX, int a_ChunkZ);
|
||||||
a_BlockTypeMap is ignored for pre-1.13 protocols. */
|
|
||||||
const AString & Serialize(int a_Version, int a_ChunkX, int a_ChunkZ, const std::map<UInt32, UInt32> & a_BlockTypeMap);
|
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
using Serializations = std::map<int, AString>;
|
using Serializations = std::map<int, AString>;
|
||||||
|
|
||||||
|
|
||||||
/** The data read from the chunk, to be serialized. */
|
/** The data read from the chunk, to be serialized. */
|
||||||
const cChunkData & m_Data;
|
const cChunkData & m_Data;
|
||||||
|
|
||||||
@ -50,11 +47,10 @@ protected:
|
|||||||
/** The per-protocol serialized data, cached for reuse for other clients. */
|
/** The per-protocol serialized data, cached for reuse for other clients. */
|
||||||
Serializations m_Serializations;
|
Serializations m_Serializations;
|
||||||
|
|
||||||
|
|
||||||
void Serialize47 (AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.8
|
void Serialize47 (AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.8
|
||||||
void Serialize107(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.9
|
void Serialize107(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.9
|
||||||
void Serialize110(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.9.4
|
void Serialize110(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.9.4
|
||||||
void Serialize393(AString & a_Data, int a_ChunkX, int a_ChunkZ, const std::map<UInt32, UInt32> & a_BlockTypeMap); // Release 1.13
|
void Serialize393(AString & a_Data, int a_ChunkX, int a_ChunkZ); // Release 1.13
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
11
src/Protocol/Palettes/CMakeLists.txt
Normal file
11
src/Protocol/Palettes/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
target_sources(
|
||||||
|
${CMAKE_PROJECT_NAME} PRIVATE
|
||||||
|
|
||||||
|
Palette_1_13.cpp
|
||||||
|
Palette_1_16.cpp
|
||||||
|
Upgrade.cpp
|
||||||
|
|
||||||
|
Palette_1_13.h
|
||||||
|
Palette_1_16.h
|
||||||
|
Upgrade.h
|
||||||
|
)
|
8655
src/Protocol/Palettes/Palette_1_13.cpp
Normal file
8655
src/Protocol/Palettes/Palette_1_13.cpp
Normal file
File diff suppressed because it is too large
Load Diff
10
src/Protocol/Palettes/Palette_1_13.h
Normal file
10
src/Protocol/Palettes/Palette_1_13.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../../Registries/Items.h"
|
||||||
|
|
||||||
|
namespace Palette_1_13
|
||||||
|
{
|
||||||
|
Int32 FromBlock(short ID);
|
||||||
|
Int32 FromItem(Item ID);
|
||||||
|
Item ToItem(Int32 ID);
|
||||||
|
}
|
13747
src/Protocol/Palettes/Palette_1_16.cpp
Normal file
13747
src/Protocol/Palettes/Palette_1_16.cpp
Normal file
File diff suppressed because it is too large
Load Diff
10
src/Protocol/Palettes/Palette_1_16.h
Normal file
10
src/Protocol/Palettes/Palette_1_16.h
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../../Registries/Items.h"
|
||||||
|
|
||||||
|
namespace Palette_1_16
|
||||||
|
{
|
||||||
|
Int32 FromBlock(short ID);
|
||||||
|
Int32 FromItem(Item ID);
|
||||||
|
Item ToItem(Int32 ID);
|
||||||
|
}
|
3207
src/Protocol/Palettes/Upgrade.cpp
Normal file
3207
src/Protocol/Palettes/Upgrade.cpp
Normal file
File diff suppressed because it is too large
Load Diff
11
src/Protocol/Palettes/Upgrade.h
Normal file
11
src/Protocol/Palettes/Upgrade.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "../../BlockType.h"
|
||||||
|
#include "../../Registries/Items.h"
|
||||||
|
|
||||||
|
namespace PaletteUpgrade
|
||||||
|
{
|
||||||
|
short FromBlock(BLOCKTYPE Block, NIBBLETYPE Meta);
|
||||||
|
Item FromItem(short Item, short Meta);
|
||||||
|
std::pair<short, short> ToItem(Item ID);
|
||||||
|
}
|
@ -57,12 +57,6 @@ public:
|
|||||||
|
|
||||||
virtual ~cProtocol() {}
|
virtual ~cProtocol() {}
|
||||||
|
|
||||||
|
|
||||||
/** Called after construction so that the protocol class can initialize itself.
|
|
||||||
Throws a std::exception descendant on failure; the client is kicked
|
|
||||||
with the exception's message as a result. */
|
|
||||||
virtual void Initialize(cClientHandle & a_Client) {}
|
|
||||||
|
|
||||||
/** Logical types of outgoing packets.
|
/** Logical types of outgoing packets.
|
||||||
These values get translated to on-wire packet IDs in GetPacketID(), specific for each protocol.
|
These values get translated to on-wire packet IDs in GetPacketID(), specific for each protocol.
|
||||||
This is mainly useful for protocol sub-versions that re-number the packets while using mostly the same packet layout. */
|
This is mainly useful for protocol sub-versions that re-number the packets while using mostly the same packet layout. */
|
||||||
|
@ -228,9 +228,6 @@ void cMultiVersionProtocol::TryRecognizeProtocol(cClientHandle & a_Client, std::
|
|||||||
|
|
||||||
m_Protocol = TryRecognizeLengthedProtocol(a_Client, a_Data);
|
m_Protocol = TryRecognizeLengthedProtocol(a_Client, a_Data);
|
||||||
ASSERT(m_Protocol != nullptr);
|
ASSERT(m_Protocol != nullptr);
|
||||||
|
|
||||||
// The protocol has been recognized, initialize it:
|
|
||||||
m_Protocol->Initialize(a_Client);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -11,7 +11,6 @@ Implements the 1.13 protocol classes:
|
|||||||
#include "ProtocolRecognizer.h"
|
#include "ProtocolRecognizer.h"
|
||||||
#include "ChunkDataSerializer.h"
|
#include "ChunkDataSerializer.h"
|
||||||
#include "Packetizer.h"
|
#include "Packetizer.h"
|
||||||
#include "ProtocolPalettes.h"
|
|
||||||
|
|
||||||
#include "../Entities/Boat.h"
|
#include "../Entities/Boat.h"
|
||||||
#include "../Entities/Minecart.h"
|
#include "../Entities/Minecart.h"
|
||||||
@ -24,7 +23,6 @@ Implements the 1.13 protocol classes:
|
|||||||
|
|
||||||
#include "../Mobs/IncludeAllMonsters.h"
|
#include "../Mobs/IncludeAllMonsters.h"
|
||||||
|
|
||||||
#include "../BlockTypePalette.h"
|
|
||||||
#include "../ClientHandle.h"
|
#include "../ClientHandle.h"
|
||||||
#include "../Root.h"
|
#include "../Root.h"
|
||||||
#include "../Server.h"
|
#include "../Server.h"
|
||||||
@ -33,6 +31,9 @@ Implements the 1.13 protocol classes:
|
|||||||
|
|
||||||
#include "../Bindings/PluginManager.h"
|
#include "../Bindings/PluginManager.h"
|
||||||
|
|
||||||
|
#include "Palettes/Upgrade.h"
|
||||||
|
#include "Palettes/Palette_1_13.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -76,41 +77,13 @@ cProtocol_1_13::cProtocol_1_13(cClientHandle * a_Client, const AString & a_Serve
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cProtocol_1_13::Initialize(cClientHandle & a_Client)
|
|
||||||
{
|
|
||||||
// Get the palettes; fail if not available:
|
|
||||||
auto paletteVersion = this->GetPaletteVersion();
|
|
||||||
m_BlockTypePalette = cRoot::Get()->GetProtocolPalettes().blockTypePalette(paletteVersion);
|
|
||||||
if (m_BlockTypePalette == nullptr)
|
|
||||||
{
|
|
||||||
throw std::runtime_error(Printf("This server doesn't support protocol %s.", paletteVersion));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Process the palette into the temporary BLOCKTYPE -> NetBlockID map:
|
|
||||||
auto upg = cRoot::Get()->GetUpgradeBlockTypePalette();
|
|
||||||
m_BlockTypeMap = m_BlockTypePalette->createTransformMapWithFallback(upg, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
AString cProtocol_1_13::GetPaletteVersion() const
|
|
||||||
{
|
|
||||||
return "1.13";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void cProtocol_1_13::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
void cProtocol_1_13::SendBlockChange(int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
|
||||||
{
|
{
|
||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
cPacketizer Pkt(*this, pktBlockChange);
|
cPacketizer Pkt(*this, pktBlockChange);
|
||||||
Pkt.WritePosition64(a_BlockX, a_BlockY, a_BlockZ);
|
Pkt.WritePosition64(a_BlockX, a_BlockY, a_BlockZ);
|
||||||
Pkt.WriteVarInt32(static_cast<UInt32>(a_BlockType)); // TODO: Palette
|
Pkt.WriteVarInt32(static_cast<UInt32>(Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(a_BlockType, a_BlockMeta)))); // TODO: Palette
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,7 +102,7 @@ void cProtocol_1_13::SendBlockChanges(int a_ChunkX, int a_ChunkZ, const sSetBloc
|
|||||||
{
|
{
|
||||||
Int16 Coords = static_cast<Int16>(itr->m_RelY | (itr->m_RelZ << 8) | (itr->m_RelX << 12));
|
Int16 Coords = static_cast<Int16>(itr->m_RelY | (itr->m_RelZ << 8) | (itr->m_RelX << 12));
|
||||||
Pkt.WriteBEInt16(Coords);
|
Pkt.WriteBEInt16(Coords);
|
||||||
Pkt.WriteVarInt32(static_cast<UInt32>(itr->m_BlockType)); // TODO: Palette
|
Pkt.WriteVarInt32(static_cast<UInt32>(Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(itr->m_BlockType, itr->m_BlockMeta)))); // TODO: Palette
|
||||||
} // for itr - a_Changes[]
|
} // for itr - a_Changes[]
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,7 +114,7 @@ void cProtocol_1_13::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSeriali
|
|||||||
{
|
{
|
||||||
ASSERT(m_State == 3); // In game mode?
|
ASSERT(m_State == 3); // In game mode?
|
||||||
|
|
||||||
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_13, a_ChunkX, a_ChunkZ, m_BlockTypeMap);
|
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_13, a_ChunkX, a_ChunkZ);
|
||||||
cCSLock Lock(m_CSPacket);
|
cCSLock Lock(m_CSPacket);
|
||||||
SendData(ChunkData.data(), ChunkData.size());
|
SendData(ChunkData.data(), ChunkData.size());
|
||||||
}
|
}
|
||||||
@ -582,8 +555,10 @@ UInt8 cProtocol_1_13::GetEntityMetadataID(eEntityMetadata a_Metadata)
|
|||||||
case eEntityMetadata::AreaEffectCloudParticleParameter1:
|
case eEntityMetadata::AreaEffectCloudParticleParameter1:
|
||||||
case eEntityMetadata::AreaEffectCloudParticleParameter2:
|
case eEntityMetadata::AreaEffectCloudParticleParameter2:
|
||||||
case eEntityMetadata::AbstractSkeletonArmsSwinging:
|
case eEntityMetadata::AbstractSkeletonArmsSwinging:
|
||||||
case eEntityMetadata::ZombieUnusedWasType: UNREACHABLE("Retrieved invalid metadata for protocol");
|
case eEntityMetadata::ZombieUnusedWasType: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UNREACHABLE("Retrieved invalid metadata for protocol");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -614,6 +589,8 @@ UInt8 cProtocol_1_13::GetEntityMetadataID(eEntityMetadataType a_FieldType)
|
|||||||
case eEntityMetadataType::OptVarInt: return 17;
|
case eEntityMetadataType::OptVarInt: return 17;
|
||||||
case eEntityMetadataType::Pose: return 18;
|
case eEntityMetadataType::Pose: return 18;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UNREACHABLE("Translated invalid metadata type for protocol");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -622,18 +599,20 @@ UInt8 cProtocol_1_13::GetEntityMetadataID(eEntityMetadataType a_FieldType)
|
|||||||
|
|
||||||
bool cProtocol_1_13::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes)
|
bool cProtocol_1_13::ReadItem(cByteBuffer & a_ByteBuffer, cItem & a_Item, size_t a_KeepRemainingBytes)
|
||||||
{
|
{
|
||||||
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemType);
|
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemID);
|
||||||
if (ItemType == -1)
|
if (ItemID == -1)
|
||||||
{
|
{
|
||||||
// The item is empty, no more data follows
|
// The item is empty, no more data follows
|
||||||
a_Item.Empty();
|
a_Item.Empty();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
a_Item.m_ItemType = ItemType;
|
|
||||||
|
const auto Translated = PaletteUpgrade::ToItem(Palette_1_13::ToItem(ItemID));
|
||||||
|
a_Item.m_ItemType = Translated.first;
|
||||||
|
a_Item.m_ItemDamage = Translated.second;
|
||||||
|
|
||||||
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt8, Int8, ItemCount);
|
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt8, Int8, ItemCount);
|
||||||
a_Item.m_ItemCount = ItemCount;
|
a_Item.m_ItemCount = ItemCount;
|
||||||
a_Item.m_ItemDamage = 0; // o no, no more damage in 1.13
|
|
||||||
if (ItemCount <= 0)
|
if (ItemCount <= 0)
|
||||||
{
|
{
|
||||||
a_Item.Empty();
|
a_Item.Empty();
|
||||||
@ -672,7 +651,7 @@ void cProtocol_1_13::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item)
|
|||||||
|
|
||||||
// Normal item
|
// Normal item
|
||||||
// TODO: use new item ids
|
// TODO: use new item ids
|
||||||
a_Pkt.WriteBEInt16(ItemType);
|
a_Pkt.WriteBEInt16(Palette_1_13::FromItem(PaletteUpgrade::FromItem(a_Item.m_ItemType, a_Item.m_ItemDamage)));
|
||||||
a_Pkt.WriteBEInt8(a_Item.m_ItemCount);
|
a_Pkt.WriteBEInt8(a_Item.m_ItemCount);
|
||||||
|
|
||||||
// TODO: NBT
|
// TODO: NBT
|
||||||
@ -745,11 +724,8 @@ void cProtocol_1_13::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_
|
|||||||
}
|
}
|
||||||
case cEntity::etPickup:
|
case cEntity::etPickup:
|
||||||
{
|
{
|
||||||
/* TODO
|
WriteEntityMetadata(a_Pkt, eEntityMetadata::ItemItem, eEntityMetadataType::Item);
|
||||||
a_Pkt.WriteBEUInt8(ITEM_ITEM);
|
|
||||||
a_Pkt.WriteBEUInt8(METADATA_TYPE_ITEM);
|
|
||||||
WriteItem(a_Pkt, static_cast<const cPickup &>(a_Entity).GetItem());
|
WriteItem(a_Pkt, static_cast<const cPickup &>(a_Entity).GetItem());
|
||||||
*/
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case cEntity::etMinecart:
|
case cEntity::etMinecart:
|
||||||
|
@ -37,14 +37,8 @@ public:
|
|||||||
|
|
||||||
cProtocol_1_13(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
|
cProtocol_1_13(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
|
||||||
|
|
||||||
virtual void Initialize(cClientHandle & a_Client) override;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/** Returns the string identifying the palettes' version, such as "1.13" or "1.14.4".
|
|
||||||
The palettes for that version are loaded into m_BlockTypePalette and m_ItemTypePalette. */
|
|
||||||
virtual AString GetPaletteVersion() const;
|
|
||||||
|
|
||||||
// Packet sending:
|
// Packet sending:
|
||||||
virtual void SendBlockChange (int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override;
|
virtual void SendBlockChange (int a_BlockX, int a_BlockY, int a_BlockZ, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) override;
|
||||||
virtual void SendBlockChanges (int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) override;
|
virtual void SendBlockChanges (int a_ChunkX, int a_ChunkZ, const sSetBlockVector & a_Changes) override;
|
||||||
@ -77,13 +71,4 @@ protected:
|
|||||||
virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const eEntityMetadata a_Metadata, const eEntityMetadataType a_FieldType);
|
virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const eEntityMetadata a_Metadata, const eEntityMetadataType a_FieldType);
|
||||||
virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) override;
|
virtual void WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_Entity) override;
|
||||||
virtual void WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) override;
|
virtual void WriteMobMetadata(cPacketizer & a_Pkt, const cMonster & a_Mob) override;
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
/** The palette used to transform internal block type palette into the protocol-specific ID. */
|
|
||||||
std::shared_ptr<const BlockTypePalette> m_BlockTypePalette;
|
|
||||||
|
|
||||||
/** Temporary hack for initial 1.13+ support while keeping BLOCKTYPE data:
|
|
||||||
Map of the BLOCKTYPE#META to the protocol-specific NetBlockID. */
|
|
||||||
std::map<UInt32, UInt32> m_BlockTypeMap;
|
|
||||||
};
|
};
|
||||||
|
@ -335,7 +335,7 @@ void cProtocol_1_8_0::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerial
|
|||||||
|
|
||||||
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
||||||
// This contains the flags and bitmasks, too
|
// This contains the flags and bitmasks, too
|
||||||
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_8_0, a_ChunkX, a_ChunkZ, {});
|
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_8_0, a_ChunkX, a_ChunkZ);
|
||||||
|
|
||||||
cCSLock Lock(m_CSPacket);
|
cCSLock Lock(m_CSPacket);
|
||||||
SendData(ChunkData.data(), ChunkData.size());
|
SendData(ChunkData.data(), ChunkData.size());
|
||||||
|
@ -112,7 +112,7 @@ void cProtocol_1_9_0::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerial
|
|||||||
|
|
||||||
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
||||||
// This contains the flags and bitmasks, too
|
// This contains the flags and bitmasks, too
|
||||||
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_9_0, a_ChunkX, a_ChunkZ, {});
|
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_9_0, a_ChunkX, a_ChunkZ);
|
||||||
|
|
||||||
cCSLock Lock(m_CSPacket);
|
cCSLock Lock(m_CSPacket);
|
||||||
SendData(ChunkData.data(), ChunkData.size());
|
SendData(ChunkData.data(), ChunkData.size());
|
||||||
@ -2416,7 +2416,7 @@ void cProtocol_1_9_4::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSerial
|
|||||||
|
|
||||||
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
// Serialize first, before creating the Packetizer (the packetizer locks a CS)
|
||||||
// This contains the flags and bitmasks, too
|
// This contains the flags and bitmasks, too
|
||||||
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_9_4, a_ChunkX, a_ChunkZ, {});
|
const AString & ChunkData = a_Serializer.Serialize(cChunkDataSerializer::RELEASE_1_9_4, a_ChunkX, a_ChunkZ);
|
||||||
|
|
||||||
cCSLock Lock(m_CSPacket);
|
cCSLock Lock(m_CSPacket);
|
||||||
SendData(ChunkData.data(), ChunkData.size());
|
SendData(ChunkData.data(), ChunkData.size());
|
||||||
|
15133
src/Registries/Blocks.cpp
Normal file
15133
src/Registries/Blocks.cpp
Normal file
File diff suppressed because one or more lines are too long
25809
src/Registries/Blocks.h
Normal file
25809
src/Registries/Blocks.h
Normal file
File diff suppressed because it is too large
Load Diff
8
src/Registries/CMakeLists.txt
Normal file
8
src/Registries/CMakeLists.txt
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
target_sources(
|
||||||
|
${CMAKE_PROJECT_NAME} PRIVATE
|
||||||
|
|
||||||
|
Blocks.cpp
|
||||||
|
|
||||||
|
Blocks.h
|
||||||
|
Items.h
|
||||||
|
)
|
980
src/Registries/Items.h
Normal file
980
src/Registries/Items.h
Normal file
@ -0,0 +1,980 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum class Item
|
||||||
|
{
|
||||||
|
AcaciaBoat,
|
||||||
|
AcaciaButton,
|
||||||
|
AcaciaDoor,
|
||||||
|
AcaciaFence,
|
||||||
|
AcaciaFenceGate,
|
||||||
|
AcaciaLeaves,
|
||||||
|
AcaciaLog,
|
||||||
|
AcaciaPlanks,
|
||||||
|
AcaciaPressurePlate,
|
||||||
|
AcaciaSapling,
|
||||||
|
AcaciaSign,
|
||||||
|
AcaciaSlab,
|
||||||
|
AcaciaStairs,
|
||||||
|
AcaciaTrapdoor,
|
||||||
|
AcaciaWood,
|
||||||
|
ActivatorRail,
|
||||||
|
Air,
|
||||||
|
Allium,
|
||||||
|
AncientDebris,
|
||||||
|
Andesite,
|
||||||
|
AndesiteSlab,
|
||||||
|
AndesiteStairs,
|
||||||
|
AndesiteWall,
|
||||||
|
Anvil,
|
||||||
|
Apple,
|
||||||
|
ArmorStand,
|
||||||
|
Arrow,
|
||||||
|
AzureBluet,
|
||||||
|
BakedPotato,
|
||||||
|
Bamboo,
|
||||||
|
Barrel,
|
||||||
|
Barrier,
|
||||||
|
Basalt,
|
||||||
|
BatSpawnEgg,
|
||||||
|
Beacon,
|
||||||
|
Bedrock,
|
||||||
|
BeeNest,
|
||||||
|
BeeSpawnEgg,
|
||||||
|
Beef,
|
||||||
|
Beehive,
|
||||||
|
Beetroot,
|
||||||
|
BeetrootSeeds,
|
||||||
|
BeetrootSoup,
|
||||||
|
Bell,
|
||||||
|
BirchBoat,
|
||||||
|
BirchButton,
|
||||||
|
BirchDoor,
|
||||||
|
BirchFence,
|
||||||
|
BirchFenceGate,
|
||||||
|
BirchLeaves,
|
||||||
|
BirchLog,
|
||||||
|
BirchPlanks,
|
||||||
|
BirchPressurePlate,
|
||||||
|
BirchSapling,
|
||||||
|
BirchSign,
|
||||||
|
BirchSlab,
|
||||||
|
BirchStairs,
|
||||||
|
BirchTrapdoor,
|
||||||
|
BirchWood,
|
||||||
|
BlackBanner,
|
||||||
|
BlackBed,
|
||||||
|
BlackCarpet,
|
||||||
|
BlackConcrete,
|
||||||
|
BlackConcretePowder,
|
||||||
|
BlackDye,
|
||||||
|
BlackGlazedTerracotta,
|
||||||
|
BlackShulkerBox,
|
||||||
|
BlackStainedGlass,
|
||||||
|
BlackStainedGlassPane,
|
||||||
|
BlackTerracotta,
|
||||||
|
BlackWool,
|
||||||
|
Blackstone,
|
||||||
|
BlackstoneSlab,
|
||||||
|
BlackstoneStairs,
|
||||||
|
BlackstoneWall,
|
||||||
|
BlastFurnace,
|
||||||
|
BlazePowder,
|
||||||
|
BlazeRod,
|
||||||
|
BlazeSpawnEgg,
|
||||||
|
BlueBanner,
|
||||||
|
BlueBed,
|
||||||
|
BlueCarpet,
|
||||||
|
BlueConcrete,
|
||||||
|
BlueConcretePowder,
|
||||||
|
BlueDye,
|
||||||
|
BlueGlazedTerracotta,
|
||||||
|
BlueIce,
|
||||||
|
BlueOrchid,
|
||||||
|
BlueShulkerBox,
|
||||||
|
BlueStainedGlass,
|
||||||
|
BlueStainedGlassPane,
|
||||||
|
BlueTerracotta,
|
||||||
|
BlueWool,
|
||||||
|
Bone,
|
||||||
|
BoneBlock,
|
||||||
|
BoneMeal,
|
||||||
|
Book,
|
||||||
|
Bookshelf,
|
||||||
|
Bow,
|
||||||
|
Bowl,
|
||||||
|
BrainCoral,
|
||||||
|
BrainCoralBlock,
|
||||||
|
BrainCoralFan,
|
||||||
|
Bread,
|
||||||
|
BrewingStand,
|
||||||
|
Brick,
|
||||||
|
BrickSlab,
|
||||||
|
BrickStairs,
|
||||||
|
BrickWall,
|
||||||
|
Bricks,
|
||||||
|
BrownBanner,
|
||||||
|
BrownBed,
|
||||||
|
BrownCarpet,
|
||||||
|
BrownConcrete,
|
||||||
|
BrownConcretePowder,
|
||||||
|
BrownDye,
|
||||||
|
BrownGlazedTerracotta,
|
||||||
|
BrownMushroom,
|
||||||
|
BrownMushroomBlock,
|
||||||
|
BrownShulkerBox,
|
||||||
|
BrownStainedGlass,
|
||||||
|
BrownStainedGlassPane,
|
||||||
|
BrownTerracotta,
|
||||||
|
BrownWool,
|
||||||
|
BubbleCoral,
|
||||||
|
BubbleCoralBlock,
|
||||||
|
BubbleCoralFan,
|
||||||
|
Bucket,
|
||||||
|
Cactus,
|
||||||
|
Cake,
|
||||||
|
Campfire,
|
||||||
|
Carrot,
|
||||||
|
CarrotOnAStick,
|
||||||
|
CartographyTable,
|
||||||
|
CarvedPumpkin,
|
||||||
|
CatSpawnEgg,
|
||||||
|
Cauldron,
|
||||||
|
CaveSpiderSpawnEgg,
|
||||||
|
Chain,
|
||||||
|
ChainCommandBlock,
|
||||||
|
ChainmailBoots,
|
||||||
|
ChainmailChestplate,
|
||||||
|
ChainmailHelmet,
|
||||||
|
ChainmailLeggings,
|
||||||
|
Charcoal,
|
||||||
|
Chest,
|
||||||
|
ChestMinecart,
|
||||||
|
Chicken,
|
||||||
|
ChickenSpawnEgg,
|
||||||
|
ChippedAnvil,
|
||||||
|
ChiseledNetherBricks,
|
||||||
|
ChiseledPolishedBlackstone,
|
||||||
|
ChiseledQuartzBlock,
|
||||||
|
ChiseledRedSandstone,
|
||||||
|
ChiseledSandstone,
|
||||||
|
ChiseledStoneBricks,
|
||||||
|
ChorusFlower,
|
||||||
|
ChorusFruit,
|
||||||
|
ChorusPlant,
|
||||||
|
Clay,
|
||||||
|
ClayBall,
|
||||||
|
Clock,
|
||||||
|
Coal,
|
||||||
|
CoalBlock,
|
||||||
|
CoalOre,
|
||||||
|
CoarseDirt,
|
||||||
|
Cobblestone,
|
||||||
|
CobblestoneSlab,
|
||||||
|
CobblestoneStairs,
|
||||||
|
CobblestoneWall,
|
||||||
|
Cobweb,
|
||||||
|
CocoaBeans,
|
||||||
|
Cod,
|
||||||
|
CodBucket,
|
||||||
|
CodSpawnEgg,
|
||||||
|
CommandBlock,
|
||||||
|
CommandBlockMinecart,
|
||||||
|
Comparator,
|
||||||
|
Compass,
|
||||||
|
Composter,
|
||||||
|
Conduit,
|
||||||
|
CookedBeef,
|
||||||
|
CookedChicken,
|
||||||
|
CookedCod,
|
||||||
|
CookedMutton,
|
||||||
|
CookedPorkchop,
|
||||||
|
CookedRabbit,
|
||||||
|
CookedSalmon,
|
||||||
|
Cookie,
|
||||||
|
Cornflower,
|
||||||
|
CowSpawnEgg,
|
||||||
|
CrackedNetherBricks,
|
||||||
|
CrackedPolishedBlackstoneBricks,
|
||||||
|
CrackedStoneBricks,
|
||||||
|
CraftingTable,
|
||||||
|
CreeperBannerPattern,
|
||||||
|
CreeperHead,
|
||||||
|
CreeperSpawnEgg,
|
||||||
|
CrimsonButton,
|
||||||
|
CrimsonDoor,
|
||||||
|
CrimsonFence,
|
||||||
|
CrimsonFenceGate,
|
||||||
|
CrimsonFungus,
|
||||||
|
CrimsonHyphae,
|
||||||
|
CrimsonNylium,
|
||||||
|
CrimsonPlanks,
|
||||||
|
CrimsonPressurePlate,
|
||||||
|
CrimsonRoots,
|
||||||
|
CrimsonSign,
|
||||||
|
CrimsonSlab,
|
||||||
|
CrimsonStairs,
|
||||||
|
CrimsonStem,
|
||||||
|
CrimsonTrapdoor,
|
||||||
|
Crossbow,
|
||||||
|
CryingObsidian,
|
||||||
|
CutRedSandstone,
|
||||||
|
CutRedSandstoneSlab,
|
||||||
|
CutSandstone,
|
||||||
|
CutSandstoneSlab,
|
||||||
|
CyanBanner,
|
||||||
|
CyanBed,
|
||||||
|
CyanCarpet,
|
||||||
|
CyanConcrete,
|
||||||
|
CyanConcretePowder,
|
||||||
|
CyanDye,
|
||||||
|
CyanGlazedTerracotta,
|
||||||
|
CyanShulkerBox,
|
||||||
|
CyanStainedGlass,
|
||||||
|
CyanStainedGlassPane,
|
||||||
|
CyanTerracotta,
|
||||||
|
CyanWool,
|
||||||
|
DamagedAnvil,
|
||||||
|
Dandelion,
|
||||||
|
DarkOakBoat,
|
||||||
|
DarkOakButton,
|
||||||
|
DarkOakDoor,
|
||||||
|
DarkOakFence,
|
||||||
|
DarkOakFenceGate,
|
||||||
|
DarkOakLeaves,
|
||||||
|
DarkOakLog,
|
||||||
|
DarkOakPlanks,
|
||||||
|
DarkOakPressurePlate,
|
||||||
|
DarkOakSapling,
|
||||||
|
DarkOakSign,
|
||||||
|
DarkOakSlab,
|
||||||
|
DarkOakStairs,
|
||||||
|
DarkOakTrapdoor,
|
||||||
|
DarkOakWood,
|
||||||
|
DarkPrismarine,
|
||||||
|
DarkPrismarineSlab,
|
||||||
|
DarkPrismarineStairs,
|
||||||
|
DaylightDetector,
|
||||||
|
DeadBrainCoral,
|
||||||
|
DeadBrainCoralBlock,
|
||||||
|
DeadBrainCoralFan,
|
||||||
|
DeadBubbleCoral,
|
||||||
|
DeadBubbleCoralBlock,
|
||||||
|
DeadBubbleCoralFan,
|
||||||
|
DeadBush,
|
||||||
|
DeadFireCoral,
|
||||||
|
DeadFireCoralBlock,
|
||||||
|
DeadFireCoralFan,
|
||||||
|
DeadHornCoral,
|
||||||
|
DeadHornCoralBlock,
|
||||||
|
DeadHornCoralFan,
|
||||||
|
DeadTubeCoral,
|
||||||
|
DeadTubeCoralBlock,
|
||||||
|
DeadTubeCoralFan,
|
||||||
|
DebugStick,
|
||||||
|
DetectorRail,
|
||||||
|
Diamond,
|
||||||
|
DiamondAxe,
|
||||||
|
DiamondBlock,
|
||||||
|
DiamondBoots,
|
||||||
|
DiamondChestplate,
|
||||||
|
DiamondHelmet,
|
||||||
|
DiamondHoe,
|
||||||
|
DiamondHorseArmor,
|
||||||
|
DiamondLeggings,
|
||||||
|
DiamondOre,
|
||||||
|
DiamondPickaxe,
|
||||||
|
DiamondShovel,
|
||||||
|
DiamondSword,
|
||||||
|
Diorite,
|
||||||
|
DioriteSlab,
|
||||||
|
DioriteStairs,
|
||||||
|
DioriteWall,
|
||||||
|
Dirt,
|
||||||
|
Dispenser,
|
||||||
|
DolphinSpawnEgg,
|
||||||
|
DonkeySpawnEgg,
|
||||||
|
DragonBreath,
|
||||||
|
DragonEgg,
|
||||||
|
DragonHead,
|
||||||
|
DriedKelp,
|
||||||
|
DriedKelpBlock,
|
||||||
|
Dropper,
|
||||||
|
DrownedSpawnEgg,
|
||||||
|
Egg,
|
||||||
|
ElderGuardianSpawnEgg,
|
||||||
|
Elytra,
|
||||||
|
Emerald,
|
||||||
|
EmeraldBlock,
|
||||||
|
EmeraldOre,
|
||||||
|
EnchantedBook,
|
||||||
|
EnchantedGoldenApple,
|
||||||
|
EnchantingTable,
|
||||||
|
EndCrystal,
|
||||||
|
EndPortalFrame,
|
||||||
|
EndRod,
|
||||||
|
EndStone,
|
||||||
|
EndStoneBrickSlab,
|
||||||
|
EndStoneBrickStairs,
|
||||||
|
EndStoneBrickWall,
|
||||||
|
EndStoneBricks,
|
||||||
|
EnderChest,
|
||||||
|
EnderEye,
|
||||||
|
EnderPearl,
|
||||||
|
EndermanSpawnEgg,
|
||||||
|
EndermiteSpawnEgg,
|
||||||
|
EvokerSpawnEgg,
|
||||||
|
ExperienceBottle,
|
||||||
|
Farmland,
|
||||||
|
Feather,
|
||||||
|
FermentedSpiderEye,
|
||||||
|
Fern,
|
||||||
|
FilledMap,
|
||||||
|
FireCharge,
|
||||||
|
FireCoral,
|
||||||
|
FireCoralBlock,
|
||||||
|
FireCoralFan,
|
||||||
|
FireworkRocket,
|
||||||
|
FireworkStar,
|
||||||
|
FishingRod,
|
||||||
|
FletchingTable,
|
||||||
|
Flint,
|
||||||
|
FlintAndSteel,
|
||||||
|
FlowerBannerPattern,
|
||||||
|
FlowerPot,
|
||||||
|
FoxSpawnEgg,
|
||||||
|
Furnace,
|
||||||
|
FurnaceMinecart,
|
||||||
|
GhastSpawnEgg,
|
||||||
|
GhastTear,
|
||||||
|
GildedBlackstone,
|
||||||
|
Glass,
|
||||||
|
GlassBottle,
|
||||||
|
GlassPane,
|
||||||
|
GlisteringMelonSlice,
|
||||||
|
GlobeBannerPattern,
|
||||||
|
Glowstone,
|
||||||
|
GlowstoneDust,
|
||||||
|
GoldBlock,
|
||||||
|
GoldIngot,
|
||||||
|
GoldNugget,
|
||||||
|
GoldOre,
|
||||||
|
GoldenApple,
|
||||||
|
GoldenAxe,
|
||||||
|
GoldenBoots,
|
||||||
|
GoldenCarrot,
|
||||||
|
GoldenChestplate,
|
||||||
|
GoldenHelmet,
|
||||||
|
GoldenHoe,
|
||||||
|
GoldenHorseArmor,
|
||||||
|
GoldenLeggings,
|
||||||
|
GoldenPickaxe,
|
||||||
|
GoldenShovel,
|
||||||
|
GoldenSword,
|
||||||
|
Granite,
|
||||||
|
GraniteSlab,
|
||||||
|
GraniteStairs,
|
||||||
|
GraniteWall,
|
||||||
|
Grass,
|
||||||
|
GrassBlock,
|
||||||
|
GrassPath,
|
||||||
|
Gravel,
|
||||||
|
GrayBanner,
|
||||||
|
GrayBed,
|
||||||
|
GrayCarpet,
|
||||||
|
GrayConcrete,
|
||||||
|
GrayConcretePowder,
|
||||||
|
GrayDye,
|
||||||
|
GrayGlazedTerracotta,
|
||||||
|
GrayShulkerBox,
|
||||||
|
GrayStainedGlass,
|
||||||
|
GrayStainedGlassPane,
|
||||||
|
GrayTerracotta,
|
||||||
|
GrayWool,
|
||||||
|
GreenBanner,
|
||||||
|
GreenBed,
|
||||||
|
GreenCarpet,
|
||||||
|
GreenConcrete,
|
||||||
|
GreenConcretePowder,
|
||||||
|
GreenDye,
|
||||||
|
GreenGlazedTerracotta,
|
||||||
|
GreenShulkerBox,
|
||||||
|
GreenStainedGlass,
|
||||||
|
GreenStainedGlassPane,
|
||||||
|
GreenTerracotta,
|
||||||
|
GreenWool,
|
||||||
|
Grindstone,
|
||||||
|
GuardianSpawnEgg,
|
||||||
|
Gunpowder,
|
||||||
|
HayBale,
|
||||||
|
HeartOfTheSea,
|
||||||
|
HeavyWeightedPressurePlate,
|
||||||
|
HoglinSpawnEgg,
|
||||||
|
HoneyBlock,
|
||||||
|
HoneyBottle,
|
||||||
|
Honeycomb,
|
||||||
|
HoneycombBlock,
|
||||||
|
Hopper,
|
||||||
|
HopperMinecart,
|
||||||
|
HornCoral,
|
||||||
|
HornCoralBlock,
|
||||||
|
HornCoralFan,
|
||||||
|
HorseSpawnEgg,
|
||||||
|
HuskSpawnEgg,
|
||||||
|
Ice,
|
||||||
|
InfestedChiseledStoneBricks,
|
||||||
|
InfestedCobblestone,
|
||||||
|
InfestedCrackedStoneBricks,
|
||||||
|
InfestedMossyStoneBricks,
|
||||||
|
InfestedStone,
|
||||||
|
InfestedStoneBricks,
|
||||||
|
InkSac,
|
||||||
|
IronAxe,
|
||||||
|
IronBars,
|
||||||
|
IronBlock,
|
||||||
|
IronBoots,
|
||||||
|
IronChestplate,
|
||||||
|
IronDoor,
|
||||||
|
IronHelmet,
|
||||||
|
IronHoe,
|
||||||
|
IronHorseArmor,
|
||||||
|
IronIngot,
|
||||||
|
IronLeggings,
|
||||||
|
IronNugget,
|
||||||
|
IronOre,
|
||||||
|
IronPickaxe,
|
||||||
|
IronShovel,
|
||||||
|
IronSword,
|
||||||
|
IronTrapdoor,
|
||||||
|
ItemFrame,
|
||||||
|
JackOLantern,
|
||||||
|
Jigsaw,
|
||||||
|
Jukebox,
|
||||||
|
JungleBoat,
|
||||||
|
JungleButton,
|
||||||
|
JungleDoor,
|
||||||
|
JungleFence,
|
||||||
|
JungleFenceGate,
|
||||||
|
JungleLeaves,
|
||||||
|
JungleLog,
|
||||||
|
JunglePlanks,
|
||||||
|
JunglePressurePlate,
|
||||||
|
JungleSapling,
|
||||||
|
JungleSign,
|
||||||
|
JungleSlab,
|
||||||
|
JungleStairs,
|
||||||
|
JungleTrapdoor,
|
||||||
|
JungleWood,
|
||||||
|
Kelp,
|
||||||
|
KnowledgeBook,
|
||||||
|
Ladder,
|
||||||
|
Lantern,
|
||||||
|
LapisBlock,
|
||||||
|
LapisLazuli,
|
||||||
|
LapisOre,
|
||||||
|
LargeFern,
|
||||||
|
LavaBucket,
|
||||||
|
Lead,
|
||||||
|
Leather,
|
||||||
|
LeatherBoots,
|
||||||
|
LeatherChestplate,
|
||||||
|
LeatherHelmet,
|
||||||
|
LeatherHorseArmor,
|
||||||
|
LeatherLeggings,
|
||||||
|
Lectern,
|
||||||
|
Lever,
|
||||||
|
LightBlueBanner,
|
||||||
|
LightBlueBed,
|
||||||
|
LightBlueCarpet,
|
||||||
|
LightBlueConcrete,
|
||||||
|
LightBlueConcretePowder,
|
||||||
|
LightBlueDye,
|
||||||
|
LightBlueGlazedTerracotta,
|
||||||
|
LightBlueShulkerBox,
|
||||||
|
LightBlueStainedGlass,
|
||||||
|
LightBlueStainedGlassPane,
|
||||||
|
LightBlueTerracotta,
|
||||||
|
LightBlueWool,
|
||||||
|
LightGrayBanner,
|
||||||
|
LightGrayBed,
|
||||||
|
LightGrayCarpet,
|
||||||
|
LightGrayConcrete,
|
||||||
|
LightGrayConcretePowder,
|
||||||
|
LightGrayDye,
|
||||||
|
LightGrayGlazedTerracotta,
|
||||||
|
LightGrayShulkerBox,
|
||||||
|
LightGrayStainedGlass,
|
||||||
|
LightGrayStainedGlassPane,
|
||||||
|
LightGrayTerracotta,
|
||||||
|
LightGrayWool,
|
||||||
|
LightWeightedPressurePlate,
|
||||||
|
Lilac,
|
||||||
|
LilyOfTheValley,
|
||||||
|
LilyPad,
|
||||||
|
LimeBanner,
|
||||||
|
LimeBed,
|
||||||
|
LimeCarpet,
|
||||||
|
LimeConcrete,
|
||||||
|
LimeConcretePowder,
|
||||||
|
LimeDye,
|
||||||
|
LimeGlazedTerracotta,
|
||||||
|
LimeShulkerBox,
|
||||||
|
LimeStainedGlass,
|
||||||
|
LimeStainedGlassPane,
|
||||||
|
LimeTerracotta,
|
||||||
|
LimeWool,
|
||||||
|
LingeringPotion,
|
||||||
|
LlamaSpawnEgg,
|
||||||
|
Lodestone,
|
||||||
|
Loom,
|
||||||
|
MagentaBanner,
|
||||||
|
MagentaBed,
|
||||||
|
MagentaCarpet,
|
||||||
|
MagentaConcrete,
|
||||||
|
MagentaConcretePowder,
|
||||||
|
MagentaDye,
|
||||||
|
MagentaGlazedTerracotta,
|
||||||
|
MagentaShulkerBox,
|
||||||
|
MagentaStainedGlass,
|
||||||
|
MagentaStainedGlassPane,
|
||||||
|
MagentaTerracotta,
|
||||||
|
MagentaWool,
|
||||||
|
MagmaBlock,
|
||||||
|
MagmaCream,
|
||||||
|
MagmaCubeSpawnEgg,
|
||||||
|
Map,
|
||||||
|
Melon,
|
||||||
|
MelonSeeds,
|
||||||
|
MelonSlice,
|
||||||
|
MilkBucket,
|
||||||
|
Minecart,
|
||||||
|
MojangBannerPattern,
|
||||||
|
MooshroomSpawnEgg,
|
||||||
|
MossyCobblestone,
|
||||||
|
MossyCobblestoneSlab,
|
||||||
|
MossyCobblestoneStairs,
|
||||||
|
MossyCobblestoneWall,
|
||||||
|
MossyStoneBrickSlab,
|
||||||
|
MossyStoneBrickStairs,
|
||||||
|
MossyStoneBrickWall,
|
||||||
|
MossyStoneBricks,
|
||||||
|
MuleSpawnEgg,
|
||||||
|
MushroomStem,
|
||||||
|
MushroomStew,
|
||||||
|
MusicDiscBlocks,
|
||||||
|
MusicDiscCat,
|
||||||
|
MusicDiscChirp,
|
||||||
|
MusicDiscFar,
|
||||||
|
MusicDiscMall,
|
||||||
|
MusicDiscMellohi,
|
||||||
|
MusicDiscPigstep,
|
||||||
|
MusicDiscStal,
|
||||||
|
MusicDiscStrad,
|
||||||
|
MusicDiscWait,
|
||||||
|
MusicDiscWard,
|
||||||
|
MusicDisc11,
|
||||||
|
MusicDisc13,
|
||||||
|
Mutton,
|
||||||
|
Mycelium,
|
||||||
|
NameTag,
|
||||||
|
NautilusShell,
|
||||||
|
NetherBrick,
|
||||||
|
NetherBrickFence,
|
||||||
|
NetherBrickSlab,
|
||||||
|
NetherBrickStairs,
|
||||||
|
NetherBrickWall,
|
||||||
|
NetherBricks,
|
||||||
|
NetherGoldOre,
|
||||||
|
NetherQuartzOre,
|
||||||
|
NetherSprouts,
|
||||||
|
NetherStar,
|
||||||
|
NetherWart,
|
||||||
|
NetherWartBlock,
|
||||||
|
NetheriteAxe,
|
||||||
|
NetheriteBlock,
|
||||||
|
NetheriteBoots,
|
||||||
|
NetheriteChestplate,
|
||||||
|
NetheriteHelmet,
|
||||||
|
NetheriteHoe,
|
||||||
|
NetheriteIngot,
|
||||||
|
NetheriteLeggings,
|
||||||
|
NetheritePickaxe,
|
||||||
|
NetheriteScrap,
|
||||||
|
NetheriteShovel,
|
||||||
|
NetheriteSword,
|
||||||
|
Netherrack,
|
||||||
|
NoteBlock,
|
||||||
|
OakBoat,
|
||||||
|
OakButton,
|
||||||
|
OakDoor,
|
||||||
|
OakFence,
|
||||||
|
OakFenceGate,
|
||||||
|
OakLeaves,
|
||||||
|
OakLog,
|
||||||
|
OakPlanks,
|
||||||
|
OakPressurePlate,
|
||||||
|
OakSapling,
|
||||||
|
OakSign,
|
||||||
|
OakSlab,
|
||||||
|
OakStairs,
|
||||||
|
OakTrapdoor,
|
||||||
|
OakWood,
|
||||||
|
Observer,
|
||||||
|
Obsidian,
|
||||||
|
OcelotSpawnEgg,
|
||||||
|
OrangeBanner,
|
||||||
|
OrangeBed,
|
||||||
|
OrangeCarpet,
|
||||||
|
OrangeConcrete,
|
||||||
|
OrangeConcretePowder,
|
||||||
|
OrangeDye,
|
||||||
|
OrangeGlazedTerracotta,
|
||||||
|
OrangeShulkerBox,
|
||||||
|
OrangeStainedGlass,
|
||||||
|
OrangeStainedGlassPane,
|
||||||
|
OrangeTerracotta,
|
||||||
|
OrangeTulip,
|
||||||
|
OrangeWool,
|
||||||
|
OxeyeDaisy,
|
||||||
|
PackedIce,
|
||||||
|
Painting,
|
||||||
|
PandaSpawnEgg,
|
||||||
|
Paper,
|
||||||
|
ParrotSpawnEgg,
|
||||||
|
Peony,
|
||||||
|
PetrifiedOakSlab,
|
||||||
|
PhantomMembrane,
|
||||||
|
PhantomSpawnEgg,
|
||||||
|
PigSpawnEgg,
|
||||||
|
PiglinBannerPattern,
|
||||||
|
PiglinSpawnEgg,
|
||||||
|
PillagerSpawnEgg,
|
||||||
|
PinkBanner,
|
||||||
|
PinkBed,
|
||||||
|
PinkCarpet,
|
||||||
|
PinkConcrete,
|
||||||
|
PinkConcretePowder,
|
||||||
|
PinkDye,
|
||||||
|
PinkGlazedTerracotta,
|
||||||
|
PinkShulkerBox,
|
||||||
|
PinkStainedGlass,
|
||||||
|
PinkStainedGlassPane,
|
||||||
|
PinkTerracotta,
|
||||||
|
PinkTulip,
|
||||||
|
PinkWool,
|
||||||
|
Piston,
|
||||||
|
PlayerHead,
|
||||||
|
Podzol,
|
||||||
|
PoisonousPotato,
|
||||||
|
PolarBearSpawnEgg,
|
||||||
|
PolishedAndesite,
|
||||||
|
PolishedAndesiteSlab,
|
||||||
|
PolishedAndesiteStairs,
|
||||||
|
PolishedBasalt,
|
||||||
|
PolishedBlackstone,
|
||||||
|
PolishedBlackstoneBrickSlab,
|
||||||
|
PolishedBlackstoneBrickStairs,
|
||||||
|
PolishedBlackstoneBrickWall,
|
||||||
|
PolishedBlackstoneBricks,
|
||||||
|
PolishedBlackstoneButton,
|
||||||
|
PolishedBlackstonePressurePlate,
|
||||||
|
PolishedBlackstoneSlab,
|
||||||
|
PolishedBlackstoneStairs,
|
||||||
|
PolishedBlackstoneWall,
|
||||||
|
PolishedDiorite,
|
||||||
|
PolishedDioriteSlab,
|
||||||
|
PolishedDioriteStairs,
|
||||||
|
PolishedGranite,
|
||||||
|
PolishedGraniteSlab,
|
||||||
|
PolishedGraniteStairs,
|
||||||
|
PoppedChorusFruit,
|
||||||
|
Poppy,
|
||||||
|
Porkchop,
|
||||||
|
Potato,
|
||||||
|
Potion,
|
||||||
|
PoweredRail,
|
||||||
|
Prismarine,
|
||||||
|
PrismarineBrickSlab,
|
||||||
|
PrismarineBrickStairs,
|
||||||
|
PrismarineBricks,
|
||||||
|
PrismarineCrystals,
|
||||||
|
PrismarineShard,
|
||||||
|
PrismarineSlab,
|
||||||
|
PrismarineStairs,
|
||||||
|
PrismarineWall,
|
||||||
|
Pufferfish,
|
||||||
|
PufferfishBucket,
|
||||||
|
PufferfishSpawnEgg,
|
||||||
|
Pumpkin,
|
||||||
|
PumpkinPie,
|
||||||
|
PumpkinSeeds,
|
||||||
|
PurpleBanner,
|
||||||
|
PurpleBed,
|
||||||
|
PurpleCarpet,
|
||||||
|
PurpleConcrete,
|
||||||
|
PurpleConcretePowder,
|
||||||
|
PurpleDye,
|
||||||
|
PurpleGlazedTerracotta,
|
||||||
|
PurpleShulkerBox,
|
||||||
|
PurpleStainedGlass,
|
||||||
|
PurpleStainedGlassPane,
|
||||||
|
PurpleTerracotta,
|
||||||
|
PurpleWool,
|
||||||
|
PurpurBlock,
|
||||||
|
PurpurPillar,
|
||||||
|
PurpurSlab,
|
||||||
|
PurpurStairs,
|
||||||
|
Quartz,
|
||||||
|
QuartzBlock,
|
||||||
|
QuartzBricks,
|
||||||
|
QuartzPillar,
|
||||||
|
QuartzSlab,
|
||||||
|
QuartzStairs,
|
||||||
|
Rabbit,
|
||||||
|
RabbitFoot,
|
||||||
|
RabbitHide,
|
||||||
|
RabbitSpawnEgg,
|
||||||
|
RabbitStew,
|
||||||
|
Rail,
|
||||||
|
RavagerSpawnEgg,
|
||||||
|
RedBanner,
|
||||||
|
RedBed,
|
||||||
|
RedCarpet,
|
||||||
|
RedConcrete,
|
||||||
|
RedConcretePowder,
|
||||||
|
RedDye,
|
||||||
|
RedGlazedTerracotta,
|
||||||
|
RedMushroom,
|
||||||
|
RedMushroomBlock,
|
||||||
|
RedNetherBrickSlab,
|
||||||
|
RedNetherBrickStairs,
|
||||||
|
RedNetherBrickWall,
|
||||||
|
RedNetherBricks,
|
||||||
|
RedSand,
|
||||||
|
RedSandstone,
|
||||||
|
RedSandstoneSlab,
|
||||||
|
RedSandstoneStairs,
|
||||||
|
RedSandstoneWall,
|
||||||
|
RedShulkerBox,
|
||||||
|
RedStainedGlass,
|
||||||
|
RedStainedGlassPane,
|
||||||
|
RedTerracotta,
|
||||||
|
RedTulip,
|
||||||
|
RedWool,
|
||||||
|
Redstone,
|
||||||
|
RedstoneBlock,
|
||||||
|
RedstoneLamp,
|
||||||
|
RedstoneOre,
|
||||||
|
RedstoneTorch,
|
||||||
|
Repeater,
|
||||||
|
RepeatingCommandBlock,
|
||||||
|
RespawnAnchor,
|
||||||
|
RoseBush,
|
||||||
|
RottenFlesh,
|
||||||
|
Saddle,
|
||||||
|
Salmon,
|
||||||
|
SalmonBucket,
|
||||||
|
SalmonSpawnEgg,
|
||||||
|
Sand,
|
||||||
|
Sandstone,
|
||||||
|
SandstoneSlab,
|
||||||
|
SandstoneStairs,
|
||||||
|
SandstoneWall,
|
||||||
|
Scaffolding,
|
||||||
|
Scute,
|
||||||
|
SeaLantern,
|
||||||
|
SeaPickle,
|
||||||
|
Seagrass,
|
||||||
|
Shears,
|
||||||
|
SheepSpawnEgg,
|
||||||
|
Shield,
|
||||||
|
Shroomlight,
|
||||||
|
ShulkerBox,
|
||||||
|
ShulkerShell,
|
||||||
|
ShulkerSpawnEgg,
|
||||||
|
SilverfishSpawnEgg,
|
||||||
|
SkeletonHorseSpawnEgg,
|
||||||
|
SkeletonSkull,
|
||||||
|
SkeletonSpawnEgg,
|
||||||
|
SkullBannerPattern,
|
||||||
|
SlimeBall,
|
||||||
|
SlimeBlock,
|
||||||
|
SlimeSpawnEgg,
|
||||||
|
SmithingTable,
|
||||||
|
Smoker,
|
||||||
|
SmoothQuartz,
|
||||||
|
SmoothQuartzSlab,
|
||||||
|
SmoothQuartzStairs,
|
||||||
|
SmoothRedSandstone,
|
||||||
|
SmoothRedSandstoneSlab,
|
||||||
|
SmoothRedSandstoneStairs,
|
||||||
|
SmoothSandstone,
|
||||||
|
SmoothSandstoneSlab,
|
||||||
|
SmoothSandstoneStairs,
|
||||||
|
SmoothStone,
|
||||||
|
SmoothStoneSlab,
|
||||||
|
Snow,
|
||||||
|
SnowBlock,
|
||||||
|
Snowball,
|
||||||
|
SoulCampfire,
|
||||||
|
SoulLantern,
|
||||||
|
SoulSand,
|
||||||
|
SoulSoil,
|
||||||
|
SoulTorch,
|
||||||
|
Spawner,
|
||||||
|
SpectralArrow,
|
||||||
|
SpiderEye,
|
||||||
|
SpiderSpawnEgg,
|
||||||
|
SplashPotion,
|
||||||
|
Sponge,
|
||||||
|
SpruceBoat,
|
||||||
|
SpruceButton,
|
||||||
|
SpruceDoor,
|
||||||
|
SpruceFence,
|
||||||
|
SpruceFenceGate,
|
||||||
|
SpruceLeaves,
|
||||||
|
SpruceLog,
|
||||||
|
SprucePlanks,
|
||||||
|
SprucePressurePlate,
|
||||||
|
SpruceSapling,
|
||||||
|
SpruceSign,
|
||||||
|
SpruceSlab,
|
||||||
|
SpruceStairs,
|
||||||
|
SpruceTrapdoor,
|
||||||
|
SpruceWood,
|
||||||
|
SquidSpawnEgg,
|
||||||
|
Stick,
|
||||||
|
StickyPiston,
|
||||||
|
Stone,
|
||||||
|
StoneAxe,
|
||||||
|
StoneBrickSlab,
|
||||||
|
StoneBrickStairs,
|
||||||
|
StoneBrickWall,
|
||||||
|
StoneBricks,
|
||||||
|
StoneButton,
|
||||||
|
StoneHoe,
|
||||||
|
StonePickaxe,
|
||||||
|
StonePressurePlate,
|
||||||
|
StoneShovel,
|
||||||
|
StoneSlab,
|
||||||
|
StoneStairs,
|
||||||
|
StoneSword,
|
||||||
|
Stonecutter,
|
||||||
|
StraySpawnEgg,
|
||||||
|
StriderSpawnEgg,
|
||||||
|
String,
|
||||||
|
StrippedAcaciaLog,
|
||||||
|
StrippedAcaciaWood,
|
||||||
|
StrippedBirchLog,
|
||||||
|
StrippedBirchWood,
|
||||||
|
StrippedCrimsonHyphae,
|
||||||
|
StrippedCrimsonStem,
|
||||||
|
StrippedDarkOakLog,
|
||||||
|
StrippedDarkOakWood,
|
||||||
|
StrippedJungleLog,
|
||||||
|
StrippedJungleWood,
|
||||||
|
StrippedOakLog,
|
||||||
|
StrippedOakWood,
|
||||||
|
StrippedSpruceLog,
|
||||||
|
StrippedSpruceWood,
|
||||||
|
StrippedWarpedHyphae,
|
||||||
|
StrippedWarpedStem,
|
||||||
|
StructureBlock,
|
||||||
|
StructureVoid,
|
||||||
|
Sugar,
|
||||||
|
SugarCane,
|
||||||
|
Sunflower,
|
||||||
|
SuspiciousStew,
|
||||||
|
SweetBerries,
|
||||||
|
TallGrass,
|
||||||
|
Target,
|
||||||
|
Terracotta,
|
||||||
|
TippedArrow,
|
||||||
|
TNT,
|
||||||
|
TNTMinecart,
|
||||||
|
Torch,
|
||||||
|
TotemOfUndying,
|
||||||
|
TraderLlamaSpawnEgg,
|
||||||
|
TrappedChest,
|
||||||
|
Trident,
|
||||||
|
TripwireHook,
|
||||||
|
TropicalFish,
|
||||||
|
TropicalFishBucket,
|
||||||
|
TropicalFishSpawnEgg,
|
||||||
|
TubeCoral,
|
||||||
|
TubeCoralBlock,
|
||||||
|
TubeCoralFan,
|
||||||
|
TurtleEgg,
|
||||||
|
TurtleHelmet,
|
||||||
|
TurtleSpawnEgg,
|
||||||
|
TwistingVines,
|
||||||
|
VexSpawnEgg,
|
||||||
|
VillagerSpawnEgg,
|
||||||
|
VindicatorSpawnEgg,
|
||||||
|
Vine,
|
||||||
|
WanderingTraderSpawnEgg,
|
||||||
|
WarpedButton,
|
||||||
|
WarpedDoor,
|
||||||
|
WarpedFence,
|
||||||
|
WarpedFenceGate,
|
||||||
|
WarpedFungus,
|
||||||
|
WarpedFungusOnA_stick,
|
||||||
|
WarpedHyphae,
|
||||||
|
WarpedNylium,
|
||||||
|
WarpedPlanks,
|
||||||
|
WarpedPressurePlate,
|
||||||
|
WarpedRoots,
|
||||||
|
WarpedSign,
|
||||||
|
WarpedSlab,
|
||||||
|
WarpedStairs,
|
||||||
|
WarpedStem,
|
||||||
|
WarpedTrapdoor,
|
||||||
|
WarpedWartBlock,
|
||||||
|
WaterBucket,
|
||||||
|
WeepingVines,
|
||||||
|
WetSponge,
|
||||||
|
Wheat,
|
||||||
|
WheatSeeds,
|
||||||
|
WhiteBanner,
|
||||||
|
WhiteBed,
|
||||||
|
WhiteCarpet,
|
||||||
|
WhiteConcrete,
|
||||||
|
WhiteConcretePowder,
|
||||||
|
WhiteDye,
|
||||||
|
WhiteGlazedTerracotta,
|
||||||
|
WhiteShulkerBox,
|
||||||
|
WhiteStainedGlass,
|
||||||
|
WhiteStainedGlassPane,
|
||||||
|
WhiteTerracotta,
|
||||||
|
WhiteTulip,
|
||||||
|
WhiteWool,
|
||||||
|
WitchSpawnEgg,
|
||||||
|
WitherRose,
|
||||||
|
WitherSkeletonSkull,
|
||||||
|
WitherSkeletonSpawnEgg,
|
||||||
|
WolfSpawnEgg,
|
||||||
|
WoodenAxe,
|
||||||
|
WoodenHoe,
|
||||||
|
WoodenPickaxe,
|
||||||
|
WoodenShovel,
|
||||||
|
WoodenSword,
|
||||||
|
WritableBook,
|
||||||
|
WrittenBook,
|
||||||
|
YellowBanner,
|
||||||
|
YellowBed,
|
||||||
|
YellowCarpet,
|
||||||
|
YellowConcrete,
|
||||||
|
YellowConcretePowder,
|
||||||
|
YellowDye,
|
||||||
|
YellowGlazedTerracotta,
|
||||||
|
YellowShulkerBox,
|
||||||
|
YellowStainedGlass,
|
||||||
|
YellowStainedGlassPane,
|
||||||
|
YellowTerracotta,
|
||||||
|
YellowWool,
|
||||||
|
ZoglinSpawnEgg,
|
||||||
|
ZombieHead,
|
||||||
|
ZombieHorseSpawnEgg,
|
||||||
|
ZombieSpawnEgg,
|
||||||
|
ZombieVillagerSpawnEgg,
|
||||||
|
ZombiePigmanSpawnEgg
|
||||||
|
};
|
@ -195,8 +195,6 @@ void cRoot::Start(std::unique_ptr<cSettingsRepositoryInterface> a_OverridesRepo)
|
|||||||
// cClientHandle::FASTBREAK_PERCENTAGE = settingsRepo->GetValueSetI("AntiCheat", "FastBreakPercentage", 97) / 100.0f;
|
// cClientHandle::FASTBREAK_PERCENTAGE = settingsRepo->GetValueSetI("AntiCheat", "FastBreakPercentage", 97) / 100.0f;
|
||||||
cClientHandle::FASTBREAK_PERCENTAGE = 0; // AntiCheat disabled due to bugs. We will enabled it once they are fixed. See #3506.
|
cClientHandle::FASTBREAK_PERCENTAGE = 0; // AntiCheat disabled due to bugs. We will enabled it once they are fixed. See #3506.
|
||||||
|
|
||||||
LoadPalettes(settingsRepo->GetValueSet("Folders", "ProtocolPalettes", "Protocol"));
|
|
||||||
|
|
||||||
m_MojangAPI = new cMojangAPI;
|
m_MojangAPI = new cMojangAPI;
|
||||||
bool ShouldAuthenticate = settingsRepo->GetValueSetB("Authentication", "Authenticate", true);
|
bool ShouldAuthenticate = settingsRepo->GetValueSetB("Authentication", "Authenticate", true);
|
||||||
m_MojangAPI->Start(*settingsRepo, ShouldAuthenticate); // Mojang API needs to be started before plugins, so that plugins may use it for DB upgrades on server init
|
m_MojangAPI->Start(*settingsRepo, ShouldAuthenticate); // Mojang API needs to be started before plugins, so that plugins may use it for DB upgrades on server init
|
||||||
|
Loading…
Reference in New Issue
Block a user