aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/HangingEntityItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Minecraft.World/HangingEntityItem.cpp')
-rw-r--r--Minecraft.World/HangingEntityItem.cpp47
1 files changed, 38 insertions, 9 deletions
diff --git a/Minecraft.World/HangingEntityItem.cpp b/Minecraft.World/HangingEntityItem.cpp
index 505dce4d..9e4e9d5b 100644
--- a/Minecraft.World/HangingEntityItem.cpp
+++ b/Minecraft.World/HangingEntityItem.cpp
@@ -3,6 +3,7 @@
#include "net.minecraft.world.phys.h"
#include "net.minecraft.world.damagesource.h"
#include "net.minecraft.world.level.tile.h"
+#include "net.minecraft.world.item.h"
#include "net.minecraft.world.level.h"
#include "HangingEntityItem.h"
#include "HangingEntity.h"
@@ -13,10 +14,7 @@
HangingEntityItem::HangingEntityItem(int id, eINSTANCEOF eClassType) : Item(id)
{
- //super(id);
- //this.clazz = clazz;
this->eType=eClassType;
- // setItemCategory(CreativeModeTab.TAB_DECORATIONS);
}
bool HangingEntityItem::useOn(shared_ptr<ItemInstance> instance, shared_ptr<Player> player, Level *level, int xt, int yt, int zt, int face, float clickX, float clickY, float clickZ, bool bTestOnly)
@@ -26,17 +24,16 @@ bool HangingEntityItem::useOn(shared_ptr<ItemInstance> instance, shared_ptr<Play
if(bTestOnly)
{
- if (!player->mayBuild(xt, yt, zt)) return false;
+ if (!player->mayUseItemAt(xt, yt, zt, face, instance)) return false;
return true;
}
int dir = Direction::FACING_DIRECTION[face];
- shared_ptr<HangingEntity> entity = createEntity(level, xt, yt, zt, dir);
+ shared_ptr<HangingEntity> entity = createEntity(level, xt, yt, zt, dir, instance->getAuxValue() );
- //if (!player->mayUseItemAt(xt, yt, zt, face, instance)) return false;
- if (!player->mayBuild(xt, yt, zt)) return false;
+ if (!player->mayUseItemAt(xt, yt, zt, face, instance)) return false;
if (entity != NULL && entity->survives())
{
@@ -65,12 +62,22 @@ bool HangingEntityItem::useOn(shared_ptr<ItemInstance> instance, shared_ptr<Play
}
-shared_ptr<HangingEntity> HangingEntityItem::createEntity(Level *level, int x, int y, int z, int dir)
+shared_ptr<HangingEntity> HangingEntityItem::createEntity(Level *level, int x, int y, int z, int dir, int auxValue) // 4J added auxValue
{
if (eType == eTYPE_PAINTING)
{
shared_ptr<Painting> painting = shared_ptr<Painting>(new Painting(level, x, y, z, dir));
- painting->PaintingPostConstructor(dir);
+
+#ifndef _CONTENT_PACKAGE
+ if (app.DebugArtToolsOn() && auxValue > 0)
+ {
+ painting->PaintingPostConstructor(dir, auxValue - 1);
+ }
+ else
+#endif
+ {
+ painting->PaintingPostConstructor(dir);
+ }
return dynamic_pointer_cast<HangingEntity> (painting);
}
@@ -86,3 +93,25 @@ shared_ptr<HangingEntity> HangingEntityItem::createEntity(Level *level, int x, i
}
}
+// 4J Adding overrides for art tools
+void HangingEntityItem::appendHoverText(shared_ptr<ItemInstance> itemInstance, shared_ptr<Player> player, vector<HtmlString> *lines, bool advanced)
+{
+#ifndef _CONTENT_PACKAGE
+ if (eType == eTYPE_PAINTING && app.DebugArtToolsOn() && itemInstance->getAuxValue() > 0 )
+ {
+ int motive = itemInstance->getAuxValue() - 1;
+
+ wchar_t formatted[256];
+ ZeroMemory(formatted, 256 * sizeof(wchar_t));
+ swprintf(formatted, 256, L"** %ls %dx%d",Painting::Motive::values[motive]->name.c_str(),Painting::Motive::values[motive]->w/16,Painting::Motive::values[motive]->h/16);
+
+ wstring motiveName = formatted;
+
+ lines->push_back(HtmlString(motiveName.c_str(), eHTMLColor_c));
+ }
+ else
+#endif
+ {
+ return Item::appendHoverText(itemInstance, player, lines, advanced);
+ }
+} \ No newline at end of file