summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/BlockEntities/BeaconEntity.cpp58
-rw-r--r--src/BlockEntities/BeaconEntity.h8
-rw-r--r--src/ClientHandle.cpp4
-rw-r--r--src/WorldStorage/WSSAnvil.cpp4
4 files changed, 19 insertions, 55 deletions
diff --git a/src/BlockEntities/BeaconEntity.cpp b/src/BlockEntities/BeaconEntity.cpp
index c94783ba8..55c5ccb7f 100644
--- a/src/BlockEntities/BeaconEntity.cpp
+++ b/src/BlockEntities/BeaconEntity.cpp
@@ -64,54 +64,18 @@ char cBeaconEntity::CalculatePyramidLevel(void)
bool cBeaconEntity::IsValidEffect(cEntityEffect::eType a_Effect, char a_BeaconLevel)
{
- if (a_Effect == cEntityEffect::effNoEffect)
+ switch (a_Effect)
{
- return true;
+ case cEntityEffect::effRegeneration: return (a_BeaconLevel >= 4);
+ case cEntityEffect::effStrength: return (a_BeaconLevel >= 3);
+ case cEntityEffect::effResistance: return (a_BeaconLevel >= 2);
+ case cEntityEffect::effJumpBoost: return (a_BeaconLevel >= 2);
+ case cEntityEffect::effSpeed: return (a_BeaconLevel >= 1);
+ case cEntityEffect::effHaste: return (a_BeaconLevel >= 1);
+ case cEntityEffect::effNoEffect: return true;
}
- switch (a_BeaconLevel)
- {
- case 4:
- {
- // Beacon level 4
- if (a_Effect == cEntityEffect::effRegeneration)
- {
- return true;
- }
- }
- case 3:
- {
- // Beacon level 3
- if (a_Effect == cEntityEffect::effStrength)
- {
- return true;
- }
- }
- case 2:
- {
- // Beacon level 2
- switch (a_Effect)
- {
- case cEntityEffect::effResistance:
- case cEntityEffect::effJumpBoost:
- {
- return true;
- }
- }
- }
- case 1:
- {
- // Beacon level 1
- switch (a_Effect)
- {
- case cEntityEffect::effSpeed:
- case cEntityEffect::effHaste:
- {
- return true;
- }
- }
- }
- }
+ LOGD("%s: Invalid beacon effect: %d", __FUNCTION__, (int)a_Effect);
return false;
}
@@ -119,7 +83,7 @@ bool cBeaconEntity::IsValidEffect(cEntityEffect::eType a_Effect, char a_BeaconLe
-bool cBeaconEntity::SelectPrimaryEffect(cEntityEffect::eType a_Effect)
+bool cBeaconEntity::SetPrimaryEffect(cEntityEffect::eType a_Effect)
{
if (!IsValidEffect(a_Effect, m_BeaconLevel))
{
@@ -140,7 +104,7 @@ bool cBeaconEntity::SelectPrimaryEffect(cEntityEffect::eType a_Effect)
-bool cBeaconEntity::SelectSecondaryEffect(cEntityEffect::eType a_Effect)
+bool cBeaconEntity::SetSecondaryEffect(cEntityEffect::eType a_Effect)
{
if (!IsValidEffect(a_Effect, m_BeaconLevel))
{
diff --git a/src/BlockEntities/BeaconEntity.h b/src/BlockEntities/BeaconEntity.h
index cc8ee8ad2..0d7150aef 100644
--- a/src/BlockEntities/BeaconEntity.h
+++ b/src/BlockEntities/BeaconEntity.h
@@ -55,11 +55,11 @@ public:
cEntityEffect::eType GetPrimaryEffect(void) const { return m_PrimaryEffect; }
cEntityEffect::eType GetSecondaryEffect(void) const { return m_SecondaryEffect; }
- /** Select the primary effect. Returns false when the effect is invalid.*/
- bool SelectPrimaryEffect(cEntityEffect::eType a_Effect);
+ /** Sets the primary effect. Returns false when the effect is invalid. */
+ bool SetPrimaryEffect(cEntityEffect::eType a_Effect);
- /** Select the secondary effect. Returns false when the effect is invalid. */
- bool SelectSecondaryEffect(cEntityEffect::eType a_Effect);
+ /** Sets the secondary effect. Returns false when the effect is invalid. */
+ bool SetSecondaryEffect(cEntityEffect::eType a_Effect);
/** Calculate the amount of layers the pyramid below the beacon has. */
char CalculatePyramidLevel(void);
diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp
index e833f338a..3ce506e1e 100644
--- a/src/ClientHandle.cpp
+++ b/src/ClientHandle.cpp
@@ -792,8 +792,8 @@ void cClientHandle::HandleBeaconSelection(const char * a_Data, size_t a_Length)
}
Window->SetSlot(*m_Player, 0, cItem());
- BeaconWindow->GetBeaconEntity()->SelectPrimaryEffect(PrimaryEffect);
- BeaconWindow->GetBeaconEntity()->SelectSecondaryEffect(SecondaryEffect);
+ BeaconWindow->GetBeaconEntity()->SetPrimaryEffect(PrimaryEffect);
+ BeaconWindow->GetBeaconEntity()->SetSecondaryEffect(SecondaryEffect);
}
diff --git a/src/WorldStorage/WSSAnvil.cpp b/src/WorldStorage/WSSAnvil.cpp
index 555ef410d..d3a156ee1 100644
--- a/src/WorldStorage/WSSAnvil.cpp
+++ b/src/WorldStorage/WSSAnvil.cpp
@@ -771,13 +771,13 @@ void cWSSAnvil::LoadBeaconFromNBT(cBlockEntityList & a_BlockEntities, const cPar
CurrentLine = a_NBT.FindChildByName(a_TagIdx, "Primary");
if (CurrentLine >= 0)
{
- Beacon->SelectPrimaryEffect((cEntityEffect::eType)a_NBT.GetInt(CurrentLine));
+ Beacon->SetPrimaryEffect((cEntityEffect::eType)a_NBT.GetInt(CurrentLine));
}
CurrentLine = a_NBT.FindChildByName(a_TagIdx, "Secondary");
if (CurrentLine >= 0)
{
- Beacon->SelectSecondaryEffect((cEntityEffect::eType)a_NBT.GetInt(CurrentLine));
+ Beacon->SetSecondaryEffect((cEntityEffect::eType)a_NBT.GetInt(CurrentLine));
}
// We are better than mojang, we load/save the beacon inventory!