diff --git a/GeometryDashAPI/Levels/GameObjects/Default/Block.cs b/GeometryDashAPI/Levels/GameObjects/Default/Block.cs
index 2a4d1c0..eda1000 100644
--- a/GeometryDashAPI/Levels/GameObjects/Default/Block.cs
+++ b/GeometryDashAPI/Levels/GameObjects/Default/Block.cs
@@ -45,6 +45,40 @@ public Layer ZLayer
[GameProperty("32", 1f)] public float Scale { get; set; } = 1f;
[GameProperty("34", false)] public bool GroupParent { get; set; }
+ [GameProperty("43", null)]
+ private Hsv? hsv;
+
+ [GameProperty("44", null)]
+ private Hsv? additionalHsv;
+
+ [GameProperty("41", false)]
+ public bool HasHsv { get; protected set; }
+
+ [GameProperty("42", false)]
+ public bool HasAdditionalHsv { get; protected set; }
+
+ ///
+ public Hsv? Hsv
+ {
+ get => hsv;
+ set
+ {
+ hsv = value;
+ HasHsv = value != null;
+ }
+ }
+
+ ///
+ public Hsv? AdditionalHsv
+ {
+ get => additionalHsv;
+ set
+ {
+ additionalHsv = value;
+ HasAdditionalHsv = value != null;
+ }
+ }
+
public Block()
{
}
diff --git a/GeometryDashAPI/Levels/GameObjects/IBlock.cs b/GeometryDashAPI/Levels/GameObjects/IBlock.cs
index 57e7835..382694c 100644
--- a/GeometryDashAPI/Levels/GameObjects/IBlock.cs
+++ b/GeometryDashAPI/Levels/GameObjects/IBlock.cs
@@ -1,27 +1,42 @@
using GeometryDashAPI.Levels.Enums;
-namespace GeometryDashAPI.Levels.GameObjects
+namespace GeometryDashAPI.Levels.GameObjects;
+
+public interface IBlock : IGameObject
{
- public interface IBlock : IGameObject
- {
- int Id { get; set; }
- float PositionX { get; set; }
- float PositionY { get; set; }
- bool HorizontalReflection { get; set; }
- bool VerticalReflection { get; set; }
- int Rotation { get; set; }
- bool Glow { get; set; }
- int LinkControl { get; set; }
- short EditorL { get; set; }
- short EditorL2 { get; set; }
- bool HighDetail { get; set; }
- int[] Groups { get; set; }
- bool DontFade { get; set; }
- bool DontEnter { get; set; }
- int ZOrder { get; set; }
- Layer ZLayer { get; set; }
- float Scale { get; set; }
- bool GroupParent { get; set; }
- bool IsTrigger { get; set; }
- }
+ int Id { get; set; }
+ float PositionX { get; set; }
+ float PositionY { get; set; }
+ bool HorizontalReflection { get; set; }
+ bool VerticalReflection { get; set; }
+ int Rotation { get; set; }
+ bool Glow { get; set; }
+ int LinkControl { get; set; }
+ short EditorL { get; set; }
+ short EditorL2 { get; set; }
+ bool HighDetail { get; set; }
+ int[] Groups { get; set; }
+ bool DontFade { get; set; }
+ bool DontEnter { get; set; }
+ int ZOrder { get; set; }
+ Layer ZLayer { get; set; }
+ float Scale { get; set; }
+ bool GroupParent { get; set; }
+ bool IsTrigger { get; set; }
+
+ bool HasHsv { get; }
+ bool HasAdditionalHsv { get; }
+
+ ///
+ /// If block has 1 color: base or detail
+ /// The value takes either base or detail
+ /// If block has 2 colors, is base
+ ///
+ Hsv? Hsv { get; set; }
+
+ ///
+ /// If block has 2 colors: base and detail
+ /// is detail, otherwise null
+ ///
+ Hsv? AdditionalHsv { get; set; }
}