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
|
||||
OSSupport HTTP Items Blocks Protocol Generating mbedTLS++ Bindings
|
||||
WorldStorage Mobs Entities Simulator Simulator/IncrementalRedstoneSimulator
|
||||
BlockEntities UI Noise
|
||||
Bindings BlockEntities Blocks Entities
|
||||
Generating HTTP Items mbedTLS++ Mobs Noise
|
||||
OSSupport Protocol Registries Simulator
|
||||
Simulator/IncrementalRedstoneSimulator UI WorldStorage
|
||||
)
|
||||
|
||||
# Add all child source directories:
|
||||
|
@ -44,6 +44,7 @@ local g_IgnoredFiles =
|
||||
"Bindings/Bindings.h",
|
||||
"Bindings/Bindings.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
|
||||
|
@ -32,3 +32,5 @@ target_sources(
|
||||
ProtocolRecognizer.h
|
||||
RecipeMapper.h
|
||||
)
|
||||
|
||||
add_subdirectory(Palettes)
|
@ -5,6 +5,9 @@
|
||||
#include "Protocol_1_9.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);
|
||||
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_9_0: Serialize107(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:
|
||||
{
|
||||
@ -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!
|
||||
|
||||
ASSERT(!a_BlockTypeMap.empty()); // We need a protocol-specific translation map
|
||||
|
||||
// Create the packet:
|
||||
cByteBuffer Packet(512 KiB);
|
||||
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 blockMeta = (a_Section.m_BlockMetas[Index / 2] >> ((Index % 2) * 4)) & 0x0f;
|
||||
auto itr = a_BlockTypeMap.find(blockType * 16 | blockMeta);
|
||||
UInt64 Value = (itr == a_BlockTypeMap.end()) ? 0 :itr->second;
|
||||
UInt64 Value = Palette_1_13::FromBlock(PaletteUpgrade::FromBlock(blockType, blockMeta));
|
||||
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.
|
||||
|
@ -13,6 +13,7 @@ other clients using the same protocol. */
|
||||
class cChunkDataSerializer
|
||||
{
|
||||
public:
|
||||
|
||||
enum
|
||||
{
|
||||
RELEASE_1_8_0 = 47,
|
||||
@ -27,17 +28,13 @@ public:
|
||||
const eDimension a_Dimension
|
||||
);
|
||||
|
||||
/** 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.
|
||||
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);
|
||||
|
||||
/** Serializes the contained chunk data into the specified protocol version. */
|
||||
const AString & Serialize(int a_Version, int a_ChunkX, int a_ChunkZ);
|
||||
|
||||
protected:
|
||||
|
||||
using Serializations = std::map<int, AString>;
|
||||
|
||||
|
||||
/** The data read from the chunk, to be serialized. */
|
||||
const cChunkData & m_Data;
|
||||
|
||||
@ -50,11 +47,10 @@ protected:
|
||||
/** The per-protocol serialized data, cached for reuse for other clients. */
|
||||
Serializations m_Serializations;
|
||||
|
||||
|
||||
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 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() {}
|
||||
|
||||
|
||||
/** 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.
|
||||
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. */
|
||||
|
@ -228,9 +228,6 @@ void cMultiVersionProtocol::TryRecognizeProtocol(cClientHandle & a_Client, std::
|
||||
|
||||
m_Protocol = TryRecognizeLengthedProtocol(a_Client, a_Data);
|
||||
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 "ChunkDataSerializer.h"
|
||||
#include "Packetizer.h"
|
||||
#include "ProtocolPalettes.h"
|
||||
|
||||
#include "../Entities/Boat.h"
|
||||
#include "../Entities/Minecart.h"
|
||||
@ -24,7 +23,6 @@ Implements the 1.13 protocol classes:
|
||||
|
||||
#include "../Mobs/IncludeAllMonsters.h"
|
||||
|
||||
#include "../BlockTypePalette.h"
|
||||
#include "../ClientHandle.h"
|
||||
#include "../Root.h"
|
||||
#include "../Server.h"
|
||||
@ -33,6 +31,9 @@ Implements the 1.13 protocol classes:
|
||||
|
||||
#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)
|
||||
{
|
||||
ASSERT(m_State == 3); // In game mode?
|
||||
|
||||
cPacketizer Pkt(*this, pktBlockChange);
|
||||
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));
|
||||
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[]
|
||||
}
|
||||
|
||||
@ -141,7 +114,7 @@ void cProtocol_1_13::SendChunkData(int a_ChunkX, int a_ChunkZ, cChunkDataSeriali
|
||||
{
|
||||
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);
|
||||
SendData(ChunkData.data(), ChunkData.size());
|
||||
}
|
||||
@ -582,8 +555,10 @@ UInt8 cProtocol_1_13::GetEntityMetadataID(eEntityMetadata a_Metadata)
|
||||
case eEntityMetadata::AreaEffectCloudParticleParameter1:
|
||||
case eEntityMetadata::AreaEffectCloudParticleParameter2:
|
||||
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::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)
|
||||
{
|
||||
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemType);
|
||||
if (ItemType == -1)
|
||||
HANDLE_PACKET_READ(a_ByteBuffer, ReadBEInt16, Int16, ItemID);
|
||||
if (ItemID == -1)
|
||||
{
|
||||
// The item is empty, no more data follows
|
||||
a_Item.Empty();
|
||||
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);
|
||||
a_Item.m_ItemCount = ItemCount;
|
||||
a_Item.m_ItemDamage = 0; // o no, no more damage in 1.13
|
||||
if (ItemCount <= 0)
|
||||
{
|
||||
a_Item.Empty();
|
||||
@ -672,7 +651,7 @@ void cProtocol_1_13::WriteItem(cPacketizer & a_Pkt, const cItem & a_Item)
|
||||
|
||||
// Normal item
|
||||
// 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);
|
||||
|
||||
// TODO: NBT
|
||||
@ -745,11 +724,8 @@ void cProtocol_1_13::WriteEntityMetadata(cPacketizer & a_Pkt, const cEntity & a_
|
||||
}
|
||||
case cEntity::etPickup:
|
||||
{
|
||||
/* TODO
|
||||
a_Pkt.WriteBEUInt8(ITEM_ITEM);
|
||||
a_Pkt.WriteBEUInt8(METADATA_TYPE_ITEM);
|
||||
WriteEntityMetadata(a_Pkt, eEntityMetadata::ItemItem, eEntityMetadataType::Item);
|
||||
WriteItem(a_Pkt, static_cast<const cPickup &>(a_Entity).GetItem());
|
||||
*/
|
||||
break;
|
||||
}
|
||||
case cEntity::etMinecart:
|
||||
|
@ -37,14 +37,8 @@ public:
|
||||
|
||||
cProtocol_1_13(cClientHandle * a_Client, const AString & a_ServerAddress, UInt16 a_ServerPort, UInt32 a_State);
|
||||
|
||||
virtual void Initialize(cClientHandle & a_Client) override;
|
||||
|
||||
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:
|
||||
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;
|
||||
@ -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 cEntity & a_Entity) 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)
|
||||
// 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);
|
||||
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)
|
||||
// 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);
|
||||
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)
|
||||
// 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);
|
||||
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 = 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;
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user