summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSTRWarrior <niels.breuker@hotmail.nl>2014-01-12 18:04:41 +0100
committerSTRWarrior <niels.breuker@hotmail.nl>2014-01-12 18:04:41 +0100
commitf11427e8cd5506204958eec68a8ac2a9152df108 (patch)
treecce60b10962d911daf4b70e96c21701b975b1eb8
parentEmptyMinecarts should be able to get a block inside of them. (diff)
downloadcuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar.gz
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar.bz2
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar.lz
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar.xz
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.tar.zst
cuberite-f11427e8cd5506204958eec68a8ac2a9152df108.zip
-rw-r--r--src/Entities/Minecart.cpp7
-rw-r--r--src/Entities/Minecart.h6
-rw-r--r--src/Items/ItemMinecart.h2
-rw-r--r--src/Protocol/Protocol17x.cpp12
-rw-r--r--src/World.cpp4
-rw-r--r--src/World.h2
-rw-r--r--src/WorldStorage/WSSAnvil.cpp2
7 files changed, 18 insertions, 17 deletions
diff --git a/src/Entities/Minecart.cpp b/src/Entities/Minecart.cpp
index 5a9217c9e..19642efba 100644
--- a/src/Entities/Minecart.cpp
+++ b/src/Entities/Minecart.cpp
@@ -45,6 +45,7 @@ void cMinecart::SpawnOn(cClientHandle & a_ClientHandle)
}
}
a_ClientHandle.SendSpawnVehicle(*this, 10, SubType); // 10 = Minecarts, SubType = What type of Minecart
+ a_ClientHandle.SendEntityMetadata(*this);
}
@@ -411,9 +412,9 @@ void cMinecart::DoTakeDamage(TakeDamageInfo & TDI)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-// cEmptyMinecart:
+// cRideableMinecart:
-cEmptyMinecart::cEmptyMinecart(double a_X, double a_Y, double a_Z, const cItem & a_Content, int a_Height) :
+cRideableMinecart::cRideableMinecart(double a_X, double a_Y, double a_Z, const cItem & a_Content, int a_Height) :
super(mpNone, a_X, a_Y, a_Z),
m_Content(a_Content),
m_Height(a_Height)
@@ -424,7 +425,7 @@ cEmptyMinecart::cEmptyMinecart(double a_X, double a_Y, double a_Z, const cItem &
-void cEmptyMinecart::OnRightClicked(cPlayer & a_Player)
+void cRideableMinecart::OnRightClicked(cPlayer & a_Player)
{
if (m_Attachee != NULL)
{
diff --git a/src/Entities/Minecart.h b/src/Entities/Minecart.h
index 87d375c68..a646132ab 100644
--- a/src/Entities/Minecart.h
+++ b/src/Entities/Minecart.h
@@ -69,15 +69,15 @@ protected:
-class cEmptyMinecart :
+class cRideableMinecart :
public cMinecart
{
typedef cMinecart super;
public:
- CLASS_PROTODEF(cEmptyMinecart);
+ CLASS_PROTODEF(cRideableMinecart);
- cEmptyMinecart(double a_X, double a_Y, double a_Z, const cItem & a_Content, int a_Height);
+ cRideableMinecart(double a_X, double a_Y, double a_Z, const cItem & a_Content, int a_Height);
cItem GetContent(void) const {return m_Content;}
int GetBlockHeight(void) const {return m_Height;}
diff --git a/src/Items/ItemMinecart.h b/src/Items/ItemMinecart.h
index b82779026..4071f8c60 100644
--- a/src/Items/ItemMinecart.h
+++ b/src/Items/ItemMinecart.h
@@ -60,7 +60,7 @@ public:
cMinecart * Minecart = NULL;
switch (m_ItemType)
{
- case E_ITEM_MINECART: Minecart = new cEmptyMinecart (x, y, z, cItem(), 1); break;
+ case E_ITEM_MINECART: Minecart = new cRideableMinecart (x, y, z, cItem(), 1); break;
case E_ITEM_CHEST_MINECART: Minecart = new cMinecartWithChest (x, y, z); break;
case E_ITEM_FURNACE_MINECART: Minecart = new cMinecartWithFurnace (x, y, z); break;
case E_ITEM_MINECART_WITH_TNT: Minecart = new cMinecartWithTNT (x, y, z); break;
diff --git a/src/Protocol/Protocol17x.cpp b/src/Protocol/Protocol17x.cpp
index 8e397358f..a107c4b1f 100644
--- a/src/Protocol/Protocol17x.cpp
+++ b/src/Protocol/Protocol17x.cpp
@@ -1784,20 +1784,20 @@ void cProtocol172::cPacketizer::WriteEntityMetadata(const cEntity & a_Entity)
if (((cMinecart &)a_Entity).GetPayload() == cMinecart::mpNone)
{
- cEmptyMinecart EmptyMinecart = ((cEmptyMinecart &)a_Entity);
- if (!EmptyMinecart.GetContent().IsEmpty())
+ cRideableMinecart & RideableMinecart = ((cRideableMinecart &)a_Entity);
+ if (!RideableMinecart.GetContent().IsEmpty())
{
WriteByte(0x54);
- int Content = EmptyMinecart.GetContent().m_ItemType;
- Content |= EmptyMinecart.GetContent().m_ItemDamage << 8;
+ int Content = RideableMinecart.GetContent().m_ItemType;
+ Content |= RideableMinecart.GetContent().m_ItemDamage << 8;
WriteInt(Content);
WriteByte(0x55);
- WriteInt(EmptyMinecart.GetBlockHeight());
+ WriteInt(RideableMinecart.GetBlockHeight());
WriteByte(0x56);
WriteByte(1);
}
}
- if (((cMinecart &)a_Entity).GetPayload() == cMinecart::mpFurnace)
+ else if (((cMinecart &)a_Entity).GetPayload() == cMinecart::mpFurnace)
{
WriteByte(0x10);
WriteByte(((const cMinecartWithFurnace &)a_Entity).IsFueled() ? 1 : 0);
diff --git a/src/World.cpp b/src/World.cpp
index d7edbe3f8..d63a16262 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -1648,12 +1648,12 @@ int cWorld::SpawnExperienceOrb(double a_X, double a_Y, double a_Z, int a_Reward)
-int cWorld::SpawnMinecart(double a_X, double a_Y, double a_Z, int a_MinecartType, cItem a_Content, int a_BlockHeight)
+int cWorld::SpawnMinecart(double a_X, double a_Y, double a_Z, int a_MinecartType, const cItem & a_Content, int a_BlockHeight)
{
cMinecart * Minecart;
switch (a_MinecartType)
{
- case E_ITEM_MINECART: Minecart = new cEmptyMinecart (a_X, a_Y, a_Z, a_Content, a_BlockHeight); break;
+ case E_ITEM_MINECART: Minecart = new cRideableMinecart (a_X, a_Y, a_Z, a_Content, a_BlockHeight); break;
case E_ITEM_CHEST_MINECART: Minecart = new cMinecartWithChest (a_X, a_Y, a_Z); break;
case E_ITEM_FURNACE_MINECART: Minecart = new cMinecartWithFurnace (a_X, a_Y, a_Z); break;
case E_ITEM_MINECART_WITH_TNT: Minecart = new cMinecartWithTNT (a_X, a_Y, a_Z); break;
diff --git a/src/World.h b/src/World.h
index 23b125e67..5457bd799 100644
--- a/src/World.h
+++ b/src/World.h
@@ -364,7 +364,7 @@ public:
int SpawnFallingBlock(int a_X, int a_Y, int a_Z, BLOCKTYPE BlockType, NIBBLETYPE BlockMeta);
/// Spawns an minecart at the given coordinates.
- int SpawnMinecart(double a_X, double a_Y, double a_Z, int a_MinecartType, cItem a_Content = cItem(), int a_BlockHeight = 1);
+ int SpawnMinecart(double a_X, double a_Y, double a_Z, int a_MinecartType, const cItem & a_Content = cItem(), int a_BlockHeight = 1);
/// Spawns an experience orb at the given location with the given reward. It returns the UniqueID of the spawned experience orb.
int SpawnExperienceOrb(double a_X, double a_Y, double a_Z, int a_Reward);
diff --git a/src/WorldStorage/WSSAnvil.cpp b/src/WorldStorage/WSSAnvil.cpp
index 4fac1bd8d..28ec4e0af 100644
--- a/src/WorldStorage/WSSAnvil.cpp
+++ b/src/WorldStorage/WSSAnvil.cpp
@@ -1150,7 +1150,7 @@ void cWSSAnvil::LoadFallingBlockFromNBT(cEntityList & a_Entities, const cParsedN
void cWSSAnvil::LoadMinecartRFromNBT(cEntityList & a_Entities, const cParsedNBT & a_NBT, int a_TagIdx)
{
- std::auto_ptr<cEmptyMinecart> Minecart(new cEmptyMinecart(0, 0, 0, cItem(), 1)); // TODO: Load the block and the height
+ std::auto_ptr<cRideableMinecart> Minecart(new cRideableMinecart(0, 0, 0, cItem(), 1)); // TODO: Load the block and the height
if (!LoadEntityBaseFromNBT(*Minecart.get(), a_NBT, a_TagIdx))
{
return;