Skip to content

Commit

Permalink
Add 1.20.5 components to protocolcraft
Browse files Browse the repository at this point in the history
  • Loading branch information
adepierre committed May 5, 2024
1 parent a4bc9f0 commit 2f0577d
Show file tree
Hide file tree
Showing 58 changed files with 4,363 additions and 13 deletions.
83 changes: 70 additions & 13 deletions protocolCraft/CMakeLists.txt
Expand Up @@ -290,6 +290,7 @@ set(protocolCraft_PUBLIC_HDR
include/protocolCraft/Types/EntityModifierData.hpp
include/protocolCraft/Types/EntityProperty.hpp
include/protocolCraft/Types/GlobalPos.hpp
include/protocolCraft/Types/HolderSet.hpp
include/protocolCraft/Types/Identifier.hpp
include/protocolCraft/Types/KnownPack.hpp
include/protocolCraft/Types/MapDecoration.hpp
Expand Down Expand Up @@ -328,6 +329,63 @@ set(protocolCraft_PUBLIC_HDR
include/protocolCraft/Types/CommandNode/BrigadierPropertyTime.hpp
include/protocolCraft/Types/CommandNode/CommandNode.hpp

include/protocolCraft/Types/Components/DataComponentPatch.hpp
include/protocolCraft/Types/Components/DataComponentType.hpp
include/protocolCraft/Types/Components/DataComponentTypeAdventureModePredicate.hpp
include/protocolCraft/Types/Components/DataComponentTypeArmorTrim.hpp
include/protocolCraft/Types/Components/DataComponentTypeBannerPatternLayers.hpp
include/protocolCraft/Types/Components/DataComponentTypeBlockItemStateProperties.hpp
include/protocolCraft/Types/Components/DataComponentTypeBoolean.hpp
include/protocolCraft/Types/Components/DataComponentTypeBundleContents.hpp
include/protocolCraft/Types/Components/DataComponentTypeChargedProjectiles.hpp
include/protocolCraft/Types/Components/DataComponentTypeComponent.hpp
include/protocolCraft/Types/Components/DataComponentTypeCustomData.hpp
include/protocolCraft/Types/Components/DataComponentTypeCustomModelData.hpp
include/protocolCraft/Types/Components/DataComponentTypeDefault.hpp
include/protocolCraft/Types/Components/DataComponentTypeDyeColor.hpp
include/protocolCraft/Types/Components/DataComponentTypeDyedItemColor.hpp
include/protocolCraft/Types/Components/DataComponentTypeFireworkExplosion.hpp
include/protocolCraft/Types/Components/DataComponentTypeFireworks.hpp
include/protocolCraft/Types/Components/DataComponentTypeFoodProperties.hpp
include/protocolCraft/Types/Components/DataComponentTypeHolderInstrument.hpp
include/protocolCraft/Types/Components/DataComponentTypeInteger.hpp
include/protocolCraft/Types/Components/DataComponentTypeItemAttributeModifiers.hpp
include/protocolCraft/Types/Components/DataComponentTypeItemContainerContents.hpp
include/protocolCraft/Types/Components/DataComponentTypeItemEnchantments.hpp
include/protocolCraft/Types/Components/DataComponentTypeItemLore.hpp
include/protocolCraft/Types/Components/DataComponentTypeListBeehiveBlockEntityOccupant.hpp
include/protocolCraft/Types/Components/DataComponentTypeLodestoneTracker.hpp
include/protocolCraft/Types/Components/DataComponentTypeMapId.hpp
include/protocolCraft/Types/Components/DataComponentTypeMapItemColor.hpp
include/protocolCraft/Types/Components/DataComponentTypeMapPostProcessing.hpp
include/protocolCraft/Types/Components/DataComponentTypePotDecorations.hpp
include/protocolCraft/Types/Components/DataComponentTypePotionContents.hpp
include/protocolCraft/Types/Components/DataComponentTypeRarity.hpp
include/protocolCraft/Types/Components/DataComponentTypeResolvableProfile.hpp
include/protocolCraft/Types/Components/DataComponentTypeResourceLocation.hpp
include/protocolCraft/Types/Components/DataComponentTypeSuspiciousStewEffects.hpp
include/protocolCraft/Types/Components/DataComponentTypeTool.hpp
include/protocolCraft/Types/Components/DataComponentTypeUnbreakable.hpp
include/protocolCraft/Types/Components/DataComponentTypeUnit.hpp
include/protocolCraft/Types/Components/DataComponentTypeWritableBookContent.hpp
include/protocolCraft/Types/Components/DataComponentTypeWrittenBookContent.hpp

include/protocolCraft/Types/Components/Subtypes/AttributeModifier.hpp
include/protocolCraft/Types/Components/Subtypes/BannerPatternLayer.hpp
include/protocolCraft/Types/Components/Subtypes/BlockPredicate.hpp
include/protocolCraft/Types/Components/Subtypes/ItemAttributeModifiersEntry.hpp
include/protocolCraft/Types/Components/Subtypes/MobEffectInstance.hpp
include/protocolCraft/Types/Components/Subtypes/MobEffectInstanceDetails.hpp
include/protocolCraft/Types/Components/Subtypes/PossibleEffect.hpp
include/protocolCraft/Types/Components/Subtypes/PropertyMatcher.hpp
include/protocolCraft/Types/Components/Subtypes/StatePropertiesPredicate.hpp
include/protocolCraft/Types/Components/Subtypes/SuspiciousStewEntry.hpp
include/protocolCraft/Types/Components/Subtypes/ToolRule.hpp

include/protocolCraft/Types/Components/Subtypes/Matcher/ExactMatcher.hpp
include/protocolCraft/Types/Components/Subtypes/Matcher/RangedMatcher.hpp
include/protocolCraft/Types/Components/Subtypes/Matcher/ValueMatcher.hpp

include/protocolCraft/Types/GameProfile/GameProfile.hpp
include/protocolCraft/Types/GameProfile/GameProfileProperty.hpp
include/protocolCraft/Types/GameProfile/ProfilePublicKey.hpp
Expand All @@ -351,18 +409,15 @@ set(protocolCraft_PUBLIC_HDR
include/protocolCraft/Types/Recipes/Ingredient.hpp
include/protocolCraft/Types/Recipes/Recipe.hpp
include/protocolCraft/Types/Recipes/RecipeBookSettings.hpp
include/protocolCraft/Types/Recipes/RecipeTypeData.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataBlasting.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataCampfireCooking.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataNone.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataShaped.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataShapeless.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataSmelting.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataSmithing.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataSmithingTransform.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataSmithingTrim.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataSmoking.hpp
include/protocolCraft/Types/Recipes/RecipeTypeDataStoneCutting.hpp
include/protocolCraft/Types/Recipes/RecipeData.hpp
include/protocolCraft/Types/Recipes/RecipeDataCraftingShaped.hpp
include/protocolCraft/Types/Recipes/RecipeDataCraftingShapeless.hpp
include/protocolCraft/Types/Recipes/RecipeDataSimpleCooking.hpp
include/protocolCraft/Types/Recipes/RecipeDataSimpleCrafting.hpp
include/protocolCraft/Types/Recipes/RecipeDataSingleItem.hpp
include/protocolCraft/Types/Recipes/RecipeDataSmithing.hpp
include/protocolCraft/Types/Recipes/RecipeDataSmithingTransform.hpp
include/protocolCraft/Types/Recipes/RecipeDataSmithingTrim.hpp

include/protocolCraft/Types/Sound/SoundEvent.hpp

Expand All @@ -389,6 +444,8 @@ set(protocolCraft_SRC

src/Types/CommandNode/BrigadierProperty.cpp

src/Types/Components/DataComponentPatch.cpp

src/Types/NBT/NBT.cpp
src/Types/NBT/Tag.cpp

Expand All @@ -405,7 +462,7 @@ set(protocolCraft_SRC
src/Types/Particles/ShriekParticleOptions.cpp
src/Types/Particles/VibrationParticleOptions.cpp

src/Types/Recipes/RecipeTypeData.cpp
src/Types/Recipes/Recipe.cpp

src/Types/Vibrations/PositionSource.cpp

Expand Down
@@ -0,0 +1,99 @@
#pragma once
#if PROTOCOL_VERSION > 765 /* > 1.20.4 */
#include "protocolCraft/NetworkType.hpp"

// Use map instead of unordered to avoid another include everywhere
#include <map>
#include <memory>
#include <string_view>

namespace ProtocolCraft
{
namespace Components
{
enum class DataComponentTypes
{
None = -1,
CustomData,
MaxStackSize,
MaxDamage,
Damage,
Unbreakable,
CustomName,
ItemName,
Lore,
Rarity,
Enchantments,
CanPlaceOn,
CanBreak,
AttributeModifiers,
CustomModelData,
HideAdditionalTooltip,
HideTooltip,
RepairCost,
CreativeSlotLock,
EnchantmentGlintOverride,
IntangibleProjectile,
Food,
FireResistant,
Tool,
StoredEnchantments,
DyedColor,
MapColor,
MapId,
MapDecorations,
MapPostProcessing,
ChargedProjectiles,
BundleContents,
PotionContents,
SuspiciousStewEffects,
WritableBookContent,
WrittenBookContent,
Trim,
DebugStickState,
EntityData,
BucketEntityData,
BlockEntityData,
Instrument,
OminousBottleAmplifier,
Recipes,
LodestoneTracker,
FireworkExplosion,
Fireworks,
Profile,
NoteBlockSound,
BannerPatterns,
BaseColor,
PotDecorations,
Container,
BlockState,
Bees,
Lock,
ContainerLoot,
NUM_DATA_COMPONENT_TYPES
};

std::string_view DataComponentTypesToString(const DataComponentTypes type);

class DataComponentType;

class DataComponentPatch : public NetworkType
{
public:
virtual ~DataComponentPatch() override;

const std::map<DataComponentTypes, std::shared_ptr<DataComponentType>>& GetMap() const;
void SetMap(const std::map<DataComponentTypes, std::shared_ptr<DataComponentType>>& map_);

protected:
virtual void ReadImpl(ReadIterator& iter, size_t& length) override;
virtual void WriteImpl(WriteContainer& container) const override;
virtual Json::Value SerializeImpl() const override;

private:
std::map<DataComponentTypes, std::shared_ptr<DataComponentType>> map;

};
}
}
#endif
@@ -0,0 +1,20 @@
#pragma once
#if PROTOCOL_VERSION > 765 /* > 1.20.4 */
#include "protocolCraft/NetworkType.hpp"

namespace ProtocolCraft
{
namespace Components
{
class DataComponentType : public NetworkType
{
public:
virtual ~DataComponentType()
{

};

};
}
}
#endif
@@ -0,0 +1,72 @@
#pragma once
#if PROTOCOL_VERSION > 765 /* > 1.20.4 */
#include "protocolCraft/Types/Components/DataComponentType.hpp"
#include "protocolCraft/Types/Components/Subtypes/BlockPredicate.hpp"

#include <vector>

namespace ProtocolCraft
{
namespace Components
{
class DataComponentTypeAdventureModePredicate : public DataComponentType
{
public:
virtual ~DataComponentTypeAdventureModePredicate()
{

}


const std::vector<BlockPredicate>& GetPredicates() const
{
return predicates;
}

bool GetShowInTooltip() const
{
return show_in_tooltip;
}


void SetPredicates(const std::vector<BlockPredicate>& predicates_)
{
predicates = predicates_;
}

void SetShowInTooltip(const bool show_in_tooltip_)
{
show_in_tooltip = show_in_tooltip_;
}

protected:
virtual void ReadImpl(ReadIterator& iter, size_t& length) override
{
predicates = ReadVector<BlockPredicate>(iter, length);
show_in_tooltip = ReadData<bool>(iter, length);
}

virtual void WriteImpl(WriteContainer& container) const override
{
WriteVector<BlockPredicate>(predicates, container);
WriteData<bool>(show_in_tooltip, container);
}

virtual Json::Value SerializeImpl() const override
{
Json::Value output;

output["predicates"] = predicates;
output["show_in_tooltip"] = show_in_tooltip;

return output;
}

private:
std::vector<BlockPredicate> predicates;
bool show_in_tooltip = true;

};
}
}
#endif
@@ -0,0 +1,83 @@
#pragma once
#if PROTOCOL_VERSION > 765 /* > 1.20.4 */
#include "protocolCraft/Types/Components/DataComponentType.hpp"

namespace ProtocolCraft
{
namespace Components
{
class DataComponentTypeArmorTrim : public DataComponentType
{
public:
virtual ~DataComponentTypeArmorTrim()
{

}


int GetMaterial() const
{
return material;
}

int GetPattern() const
{
return pattern;
}

bool GetShowInTooltip() const
{
return show_in_tooltip;
}


void SetMaterial(const int material_)
{
material = material_;
}

void SetPattern(const int pattern_)
{
pattern = pattern_;
}

void SetShowInTooltip(const bool show_in_tooltip_)
{
show_in_tooltip = show_in_tooltip_;
}

protected:
virtual void ReadImpl(ReadIterator& iter, size_t& length) override
{
material = ReadData<VarInt>(iter, length);
pattern = ReadData<VarInt>(iter, length);
show_in_tooltip = ReadData<bool>(iter, length);
}

virtual void WriteImpl(WriteContainer& container) const override
{
WriteData<VarInt>(material, container);
WriteData<VarInt>(pattern, container);
WriteData<bool>(show_in_tooltip, container);
}

virtual Json::Value SerializeImpl() const override
{
Json::Value output;

output["material"] = material;
output["pattern"] = pattern;
output["show_in_tooltip"] = show_in_tooltip;

return output;
}

private:
int material = 0;
int pattern = 0;
bool show_in_tooltip = true;

};
}
}
#endif

0 comments on commit 2f0577d

Please sign in to comment.