Added armor and shulker box cleaning (#4875)
+ Added armor and shulker box cleaning
This commit is contained in:
parent
f8de67aace
commit
6a0669fb98
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user