aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp')
-rw-r--r--Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp b/Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp
new file mode 100644
index 00000000..965405ae
--- /dev/null
+++ b/Minecraft.Client/Common/GameRules/UseTileRuleDefinition.cpp
@@ -0,0 +1,82 @@
+#include "stdafx.h"
+#include "..\..\..\Minecraft.World\StringHelpers.h"
+#include "UseTileRuleDefinition.h"
+
+UseTileRuleDefinition::UseTileRuleDefinition()
+{
+ m_tileId = -1;
+ m_useCoords = false;
+}
+
+void UseTileRuleDefinition::writeAttributes(DataOutputStream *dos, UINT numAttributes)
+{
+ GameRuleDefinition::writeAttributes(dos, numAttributes + 5);
+
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_tileId);
+ dos->writeUTF(_toString(m_tileId));
+
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_useCoords);
+ dos->writeUTF(_toString(m_useCoords));
+
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_x);
+ dos->writeUTF(_toString(m_coordinates.x));
+
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_y);
+ dos->writeUTF(_toString(m_coordinates.y));
+
+ ConsoleGameRules::write(dos, ConsoleGameRules::eGameRuleAttr_z);
+ dos->writeUTF(_toString(m_coordinates.z));
+}
+
+void UseTileRuleDefinition::addAttribute(const wstring &attributeName, const wstring &attributeValue)
+{
+ if(attributeName.compare(L"tileId") == 0)
+ {
+ m_tileId = _fromString<int>(attributeValue);
+ app.DebugPrintf("UseTileRule: Adding parameter tileId=%d\n",m_tileId);
+ }
+ else if(attributeName.compare(L"useCoords") == 0)
+ {
+ m_useCoords = _fromString<bool>(attributeValue);
+ app.DebugPrintf("UseTileRule: Adding parameter useCoords=%s\n",m_useCoords?"TRUE":"FALSE");
+ }
+ else if(attributeName.compare(L"x") == 0)
+ {
+ m_coordinates.x = _fromString<int>(attributeValue);
+ app.DebugPrintf("UseTileRule: Adding parameter x=%d\n",m_coordinates.x);
+ }
+ else if(attributeName.compare(L"y") == 0)
+ {
+ m_coordinates.y = _fromString<int>(attributeValue);
+ app.DebugPrintf("UseTileRule: Adding parameter y=%d\n",m_coordinates.y);
+ }
+ else if(attributeName.compare(L"z") == 0)
+ {
+ m_coordinates.z = _fromString<int>(attributeValue);
+ app.DebugPrintf("UseTileRule: Adding parameter z=%d\n",m_coordinates.z);
+ }
+ else
+ {
+ GameRuleDefinition::addAttribute(attributeName, attributeValue);
+ }
+}
+
+bool UseTileRuleDefinition::onUseTile(GameRule *rule, int tileId, int x, int y, int z)
+{
+ bool statusChanged = false;
+ if( m_tileId == tileId )
+ {
+ if( !m_useCoords || (m_coordinates.x == x && m_coordinates.y == y && m_coordinates.z == z) )
+ {
+ if(!getComplete(rule))
+ {
+ statusChanged = true;
+ setComplete(rule,true);
+ app.DebugPrintf("Completed UseTileRule with info - t:%d, coords:%s, x:%d, y:%d, z:%d\n", m_tileId,m_useCoords?"TRUE":"FALSE",m_coordinates.x,m_coordinates.y,m_coordinates.z);
+
+ // Send a packet or some other announcement here
+ }
+ }
+ }
+ return statusChanged;
+} \ No newline at end of file