1
0
Fork 0

Added armor and shulker box cleaning (#4875)

+ Added armor and shulker box cleaning
This commit is contained in:
12xx12 2020-09-20 03:24:58 +02:00 committed by GitHub
parent f8de67aace
commit 6a0669fb98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 57 additions and 2 deletions

View File

@ -2,7 +2,8 @@
#pragma once
#include "BlockHandler.h"
#include "../Entities/Player.h"
#include "../ClientHandle.h"
@ -54,7 +55,6 @@ public:
if (!a_Player.IsGameModeCreative())
{
a_Player.ReplaceOneEquippedItemTossRest(cItem(E_ITEM_WATER_BUCKET));
a_Player.GetStatManager().AddValue(Statistic::UseCauldron);
}
}
break;
@ -83,6 +83,7 @@ public:
{
a_Player.ReplaceOneEquippedItemTossRest(cItem(E_ITEM_POTION));
}
a_Player.GetStatManager().AddValue(Statistic::UseCauldron);
}
break;
}
@ -98,6 +99,60 @@ public:
a_Player.ReplaceOneEquippedItemTossRest(cItem(E_ITEM_GLASS_BOTTLE));
}
}
break;
}
// Resets any color to default:
case E_ITEM_LEATHER_BOOTS:
case E_ITEM_LEATHER_CAP:
case E_ITEM_LEATHER_PANTS:
case E_ITEM_LEATHER_TUNIC:
{
if ((Meta > 0) && ((EquippedItem.m_ItemColor.GetRed() != 255) || (EquippedItem.m_ItemColor.GetBlue() != 255) || (EquippedItem.m_ItemColor.GetGreen() != 255)))
{
a_ChunkInterface.SetBlockMeta(a_BlockPos, --Meta);
auto NewItem = cItem(EquippedItem);
NewItem.m_ItemColor.Clear();
a_Player.ReplaceOneEquippedItemTossRest(NewItem);
}
break;
}
// Resets shulker box color:
case E_BLOCK_BLACK_SHULKER_BOX:
case E_BLOCK_BLUE_SHULKER_BOX:
case E_BLOCK_BROWN_SHULKER_BOX:
case E_BLOCK_CYAN_SHULKER_BOX:
case E_BLOCK_GRAY_SHULKER_BOX:
case E_BLOCK_GREEN_SHULKER_BOX:
case E_BLOCK_LIGHT_BLUE_SHULKER_BOX:
case E_BLOCK_LIGHT_GRAY_SHULKER_BOX:
case E_BLOCK_LIME_SHULKER_BOX:
case E_BLOCK_MAGENTA_SHULKER_BOX:
case E_BLOCK_ORANGE_SHULKER_BOX:
case E_BLOCK_PINK_SHULKER_BOX:
case E_BLOCK_RED_SHULKER_BOX:
case E_BLOCK_YELLOW_SHULKER_BOX:
{
// TODO: When there is an actual default shulker box add the appropriate changes here! - 19.09.2020 - 12xx12
if (Meta == 0)
{
// The cauldron is empty:
break;
}
// This is a workaround for version < 1.13. They client thinks a player placed a shulker and display that to the player
// The shulker cleaning was added in 1.13.
const auto ResendPosition = AddFaceDirection(a_BlockPos, a_BlockFace);
a_Player.GetClientHandle()->SendBlockChange(
ResendPosition.x, ResendPosition.y, ResendPosition.z,
a_ChunkInterface.GetBlock(ResendPosition), a_ChunkInterface.GetBlockMeta(ResendPosition)
);
// Proceed with normal cleaning:
a_ChunkInterface.SetBlockMeta(a_BlockPos, --Meta);
auto NewShulker = cItem(EquippedItem);
NewShulker.m_ItemType = E_BLOCK_PURPLE_SHULKER_BOX;
a_Player.ReplaceOneEquippedItemTossRest(NewShulker);
break;
}
}
return true;