the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 74 lines 2.3 kB view raw
1#include "stdafx.h" 2#include "net.minecraft.world.level.tile.h" 3#include "net.minecraft.world.level.h" 4#include "net.minecraft.world.entity.h" 5#include "net.minecraft.world.phys.h" 6#include "LeashItem.h" 7 8LeashItem::LeashItem(int id) : Item(id) 9{ 10} 11 12bool LeashItem::useOn(shared_ptr<ItemInstance> itemInstance, shared_ptr<Player> player, Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, bool bTestUseOnOnly) 13{ 14 int tile = level->getTile(x, y, z); 15 if (Tile::tiles[tile] != NULL && Tile::tiles[tile]->getRenderShape() == Tile::SHAPE_FENCE) 16 { 17 if (bTestUseOnOnly) return bindPlayerMobsTest(player, level, x,y,z); 18 19 if (level->isClientSide) 20 { 21 return true; 22 } 23 24 bindPlayerMobs(player, level, x, y, z); 25 return true; 26 } 27 return false; 28} 29 30bool LeashItem::bindPlayerMobs(shared_ptr<Player> player, Level *level, int x, int y, int z) 31{ 32 // check if there is a knot at the given coordinate 33 shared_ptr<LeashFenceKnotEntity> activeKnot = LeashFenceKnotEntity::findKnotAt(level, x, y, z); 34 35 // look for entities that can be attached to the fence 36 bool foundMobs = false; 37 double range = 7; 38 vector<shared_ptr<Entity> > *mobs = level->getEntitiesOfClass(typeid(Mob), AABB::newTemp(x - range, y - range, z - range, x + range, y + range, z + range)); 39 if (mobs != NULL) 40 { 41 for(AUTO_VAR(it,mobs->begin()); it != mobs->end(); ++it) 42 { 43 shared_ptr<Mob> mob = dynamic_pointer_cast<Mob>(*it); 44 if (mob->isLeashed() && mob->getLeashHolder() == player) 45 { 46 if (activeKnot == NULL) 47 { 48 activeKnot = LeashFenceKnotEntity::createAndAddKnot(level, x, y, z); 49 } 50 mob->setLeashedTo(activeKnot, true); 51 foundMobs = true; 52 } 53 } 54 } 55 return foundMobs; 56} 57 58// 4J-JEV: Similar to bindPlayerMobs, but doesn't actually bind mobs, 59bool LeashItem::bindPlayerMobsTest(shared_ptr<Player> player, Level *level, int x, int y, int z) 60{ 61 // look for entities that can be attached to the fence 62 double range = 7; 63 vector<shared_ptr<Entity> > *mobs = level->getEntitiesOfClass(typeid(Mob), AABB::newTemp(x - range, y - range, z - range, x + range, y + range, z + range)); 64 65 if (mobs != NULL) 66 { 67 for(AUTO_VAR(it,mobs->begin()); it != mobs->end(); ++it) 68 { 69 shared_ptr<Mob> mob = dynamic_pointer_cast<Mob>(*it); 70 if (mob->isLeashed() && mob->getLeashHolder() == player) return true; 71 } 72 } 73 return false; 74}