the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 899 lines 26 kB view raw
1#include "stdafx.h" 2#include "Tile_SPU.h" 3#include "ChunkRebuildData.h" 4#include "GrassTile_SPU.h" 5#include "HalfSlabTile_SPU.h" 6#include "WoodSlabTile_SPU.h" 7#include "StoneSlabTile_SPU.h" 8#include "ChestTile_SPU.h" 9#include "ThinFenceTile_SPU.h" 10#include "FenceTile_SPU.h" 11#include "StairTile_SPU.h" 12#include "DirtTile_SPU.h" 13#include "DoorTile_SPU.h" 14#include "PressurePlateTile_SPU.h" 15#include "FarmTile_SPU.h" 16#include "Bush_SPU.h" 17#include "TallGrass_SPU.h" 18#include "SandStoneTile_SPU.h" 19#include "WoodTile_SPU.h" 20#include "TreeTile_SPU.h" 21#include "LeafTile_SPU.h" 22#include "CropTile_SPU.h" 23#include "ReedTile_SPU.h" 24#include "TorchTile_SPU.h" 25#include "Mushroom_SPU.h" 26#include "FurnaceTile_SPU.h" 27#include "WebTile_SPU.h" 28#include "LiquidTile_SPU.h" 29#include "FireTile_SPU.h" 30#include "Sapling_SPU.h" 31#include "GlassTile_SPU.h" 32#include "IceTile_SPU.h" 33#include "PortalTile_SPU.h" 34#include "DispenserTile_SPU.h" 35#include "RailTile_SPU.h" 36#include "DetectorRailTile_SPU.h" 37#include "TntTile_SPU.h" 38#include "BookshelfTile_SPU.h" 39#include "WorkbenchTile_SPU.h" 40#include "SignTile_SPU.h" 41#include "LadderTile_SPU.h" 42#include "ButtonTile_SPU.h" 43#include "TopSnowTile_SPU.h" 44#include "CactusTile_SPU.h" 45#include "RecordPlayerTile_SPU.h" 46#include "PumpkinTile_SPU.h" 47#include "CakeTile_SPU.h" 48#include "TrapDoorTile_SPU.h" 49#include "StoneMonsterTile_SPU.h" 50#include "SmoothStoneBrickTile_SPU.h" 51#include "HugeMushroomTile_SPU.h" 52#include "MelonTile_SPU.h" 53#include "StemTile_SPU.h" 54#include "VineTile_SPU.h" 55#include "MycelTile_SPU.h" 56#include "WaterlilyTile_SPU.h" 57#include "NetherStalkTile_SPU.h" 58#include "EnchantmentTableTile_SPU.h" 59#include "BrewingStandTile_SPU.h" 60#include "DiodeTile_SPU.h" 61#include "RedStoneDustTile_SPU.h" 62#include "FenceGateTile_SPU.h" 63#include "BedTile_SPU.h" 64#include "PistonBaseTile_SPU.h" 65#include "PistonExtensionTile_SPU.h" 66#include "PistonMovingPiece_SPU.h" 67#include "LeverTile_SPU.h" 68#include "CauldronTile_SPU.h" 69#include "TheEndPortal_SPU.h" 70#include "TheEndPortalFrameTile_SPU.h" 71#include "EggTile_SPU.h" 72#include "CocoaTile_SPU.h" 73#include "RedlightTile_SPU.h" 74#include "ClothTile_SPU.h" 75#include "SkullTile_SPU.h" 76#include "MobSpawnerTile_SPU.h" 77#include "EnderChestTile_SPU.h" 78#include "TripWireSourceTile_SPU.h" 79#include "TripWireTile_SPU.h" 80#include "WallTile_SPU.h" 81#include "FlowerPotTile_SPU.h" 82#include "CarrotTile_SPU.h" 83#include "PotatoTile_SPU.h" 84#include "QuartzBlockTile_SPU.h" 85#include "WoolCarpetTile_SPU.h" 86 87#ifdef SN_TARGET_PS3_SPU 88#include "..\Common\spu_assert.h" 89#endif 90 91#include <assert.h> 92#include <new> 93#include "AnvilTile_SPU.h" 94 95TileData_SPU* Tile_SPU::ms_pTileData = NULL; 96 97Tile_SPU Tile_SPU::m_tiles[256]; 98 99 100 101int Tile_SPU::getRenderShape() 102{ 103 return SHAPE_BLOCK; 104} 105 106 107void Tile_SPU::setShape(float x0, float y0, float z0, float x1, float y1, float z1) 108{ 109 ms_pTileData->xx0[id] = x0; 110 ms_pTileData->yy0[id] = y0; 111 ms_pTileData->zz0[id] = z0; 112 ms_pTileData->xx1[id] = x1; 113 ms_pTileData->yy1[id] = y1; 114 ms_pTileData->zz1[id] = z1; 115} 116 117float Tile_SPU::getBrightness(ChunkRebuildData *level, int x, int y, int z) 118{ 119 return level->getBrightness(x, y, z, ms_pTileData->lightEmission[id]); 120} 121// 122// // 4J - brought forward from 1.8.2 123int Tile_SPU::getLightColor(ChunkRebuildData *level, int x, int y, int z) 124{ 125 int tileID = level->getTile(x, y, z); 126 return level->getLightColor(x, y, z, ms_pTileData->lightEmission[tileID]); 127} 128// 129// bool Tile_SPU::isFaceVisible(Level *level, int x, int y, int z, int f) 130// { 131// if (f == 0) y--; 132// if (f == 1) y++; 133// if (f == 2) z--; 134// if (f == 3) z++; 135// if (f == 4) x--; 136// if (f == 5) x++; 137// return !level->isSolidRenderTile(x, y, z); 138// } 139// 140bool Tile_SPU::shouldRenderFace(ChunkRebuildData *level, int x, int y, int z, int face) 141{ 142 if (face == 0 && getShapeY0() > 0) return true; 143 if (face == 1 && getShapeY1() < 1) return true; 144 if (face == 2 && getShapeZ0() > 0) return true; 145 if (face == 3 && getShapeZ1() < 1) return true; 146 if (face == 4 && getShapeX0() > 0) return true; 147 if (face == 5 && getShapeX1() < 1) return true; 148 return (!level->isSolidRenderTile(x, y, z)); 149} 150// 151bool Tile_SPU::isSolidFace(ChunkRebuildData *level, int x, int y, int z, int face) 152{ 153 return (level->getMaterial(x, y, z)->isSolid()); 154} 155 156Icon_SPU *Tile_SPU::getTexture(ChunkRebuildData *level, int x, int y, int z, int face) 157{ 158 // 4J - addition here to make rendering big blocks of leaves more efficient. Normally leaves never consider themselves as solid, so 159 // blocks of leaves will have all sides of each block completely visible. Changing to consider as solid if this block is surrounded by 160 // other leaves. This is paired with another change in Level::isSolidRenderTile/Region::isSolidRenderTile which makes things solid 161 // code-wise (ie for determining visible sides of neighbouring blocks). This change just makes the texture a solid one (tex + 1) which 162 // we already have in the texture map for doing non-fancy graphics. Note: this tile-specific code is here rather than making some new virtual 163 // method in the tiles, for the sake of efficiency - I don't imagine we'll be doing much more of this sort of thing 164 165 int tileId = level->getTile(x, y, z); 166 int tileData = level->getData(x, y, z); 167 168 if( tileId == Tile_SPU::leaves_Id ) 169 { 170 bool opaque = true; 171 int axo[6] = { 1,-1, 0, 0, 0, 0}; 172 int ayo[6] = { 0, 0, 1,-1, 0, 0}; 173 int azo[6] = { 0, 0, 0, 0, 1,-1}; 174 for( int i = 0; (i < 6) && opaque; i++ ) 175 { 176 int t = level->getTile(x + axo[i], y + ayo[i] , z + azo[i]); 177 if( ( t != Tile_SPU::leaves_Id ) && ( ( Tile_SPU::m_tiles[t].id == -1) || !Tile_SPU::m_tiles[t].isSolidRender() ) ) 178 { 179 opaque = false; 180 } 181 } 182 183 184 Icon_SPU *icon = NULL; 185 if(opaque) 186 { 187 LeafTile_SPU::setFancy(false); 188 icon = getTexture(face, tileData); 189 LeafTile_SPU::setFancy(true); 190 } 191 else 192 { 193 icon = getTexture(face, tileData); 194 } 195 return icon; 196 } 197 return getTexture(face, tileData); 198} 199// 200Icon_SPU *Tile_SPU::getTexture(int face, int data) 201{ 202 return &ms_pTileData->iconData[id]; 203} 204// 205Icon_SPU *Tile_SPU::getTexture(int face) 206{ 207 return getTexture(face, 0); 208} 209// 210// AABB *Tile_SPU::getTileAABB(Level *level, int x, int y, int z) 211// { 212// return AABB::newTemp(x + xx0, y + yy0, z + zz0, x + xx1, y + yy1, z + zz1); 213// } 214// 215// void Tile_SPU::addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, Entity *source) 216// { 217// AABB *aabb = getAABB(level, x, y, z); 218// if (aabb != NULL && box->intersects(aabb)) boxes->push_back(aabb); 219// } 220// 221// void Tile_SPU::addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes) 222// { 223// AABB *aabb = getAABB(level, x, y, z); 224// if (aabb != NULL && box->intersects(aabb)) boxes->push_back(aabb); 225// } 226// 227// AABB *Tile_SPU::getAABB(Level *level, int x, int y, int z) 228// { 229// return AABB::newTemp(x + xx0, y + yy0, z + zz0, x + xx1, y + yy1, z + zz1); 230// } 231// 232 bool Tile_SPU::isSolidRender(bool isServerLevel) 233 { 234 return true; 235 } 236 237 238// bool Tile_SPU::mayPick(int data, bool liquid) 239// { 240// return mayPick(); 241// } 242// 243// bool Tile_SPU::mayPick() 244// { 245// return true; 246// } 247// 248// void Tile_SPU::tick(Level *level, int x, int y, int z, Random *random) 249// { 250// } 251// 252// void Tile_SPU::animateTick(Level *level, int x, int y, int z, Random *random) 253// { 254// } 255// 256// void Tile_SPU::destroy(Level *level, int x, int y, int z, int data) 257// { 258// } 259// 260// void Tile_SPU::neighborChanged(Level *level, int x, int y, int z, int type) 261// { 262// } 263// 264// void Tile_SPU::addLights(Level *level, int x, int y, int z) 265// { 266// } 267// 268// int Tile_SPU::getTickDelay() 269// { 270// return 10; 271// } 272// 273// void Tile_SPU::onPlace(Level *level, int x, int y, int z) 274// { 275// } 276// 277// void Tile_SPU::onRemove(Level *level, int x, int y, int z) 278// { 279// } 280// 281// int Tile_SPU::getResourceCount(Random *random) 282// { 283// return 1; 284// } 285// 286// int Tile_SPU::getResource(int data, Random *random, int playerBonusLevel) 287// { 288// return id; 289// } 290// 291// float Tile_SPU::getDestroyProgress(shared_ptr<Player> player) 292// { 293// if (destroySpeed < 0) return 0; 294// if (!player->canDestroy(this)) return 1 / destroySpeed / 100.0f; 295// return (player->getDestroySpeed(this) / destroySpeed) / 30; 296// } 297// 298// void Tile_SPU::spawnResources(Level *level, int x, int y, int z, int data, int playerBonusLevel) 299// { 300// spawnResources(level, x, y, z, data, 1, playerBonusLevel); 301// } 302// 303// void Tile_SPU::spawnResources(Level *level, int x, int y, int z, int data, float odds, int playerBonusLevel) 304// { 305// if (level->isClientSide) return; 306// int count = getResourceCountForLootBonus(playerBonusLevel, level->random); 307// for (int i = 0; i < count; i++) 308// { 309// if (level->random->nextFloat() > odds) continue; 310// int type = getResource(data, level->random, playerBonusLevel); 311// if (type <= 0) continue; 312// 313// popResource(level, x, y, z, shared_ptr<ItemInstance>( new ItemInstance(type, 1, getSpawnResourcesAuxValue(data) ) ) ); 314// } 315// } 316// 317// void Tile_SPU::popResource(Level *level, int x, int y, int z, shared_ptr<ItemInstance> itemInstance) 318// { 319// if( level->isClientSide ) return; 320// 321// float s = 0.7f; 322// double xo = level->random->nextFloat() * s + (1 - s) * 0.5; 323// double yo = level->random->nextFloat() * s + (1 - s) * 0.5; 324// double zo = level->random->nextFloat() * s + (1 - s) * 0.5; 325// shared_ptr<ItemEntity> item = shared_ptr<ItemEntity>( new ItemEntity(level, x + xo, y + yo, z + zo, itemInstance ) ); 326// item->throwTime = 10; 327// level->addEntity(item); 328// } 329// 330// // Brought forward for TU7 331// void Tile_SPU::popExperience(Level *level, int x, int y, int z, int amount) 332// { 333// if (!level->isClientSide) 334// { 335// while (amount > 0) 336// { 337// int newCount = ExperienceOrb::getExperienceValue(amount); 338// amount -= newCount; 339// level->addEntity(shared_ptr<ExperienceOrb>( new ExperienceOrb(level, x + .5, y + .5, z + .5, newCount))); 340// } 341// } 342// } 343// 344// int Tile_SPU::getSpawnResourcesAuxValue(int data) 345// { 346// return 0; 347// } 348// 349// float Tile_SPU::getExplosionResistance(shared_ptr<Entity> source) 350// { 351// return explosionResistance / 5.0f; 352// } 353// 354// HitResult *Tile_SPU::clip(Level *level, int xt, int yt, int zt, Vec3 *a, Vec3 *b) 355// { 356// EnterCriticalSection(&m_csShape); 357// updateShape(level, xt, yt, zt); 358// 359// a = a->add(-xt, -yt, -zt); 360// b = b->add(-xt, -yt, -zt); 361// 362// Vec3 *xh0 = a->clipX(b, xx0); 363// Vec3 *xh1 = a->clipX(b, xx1); 364// 365// Vec3 *yh0 = a->clipY(b, yy0); 366// Vec3 *yh1 = a->clipY(b, yy1); 367// 368// Vec3 *zh0 = a->clipZ(b, zz0); 369// Vec3 *zh1 = a->clipZ(b, zz1); 370// 371// Vec3 *closest = NULL; 372// 373// if (containsX(xh0) && (closest == NULL || a->distanceTo(xh0) < a->distanceTo(closest))) closest = xh0; 374// if (containsX(xh1) && (closest == NULL || a->distanceTo(xh1) < a->distanceTo(closest))) closest = xh1; 375// if (containsY(yh0) && (closest == NULL || a->distanceTo(yh0) < a->distanceTo(closest))) closest = yh0; 376// if (containsY(yh1) && (closest == NULL || a->distanceTo(yh1) < a->distanceTo(closest))) closest = yh1; 377// if (containsZ(zh0) && (closest == NULL || a->distanceTo(zh0) < a->distanceTo(closest))) closest = zh0; 378// if (containsZ(zh1) && (closest == NULL || a->distanceTo(zh1) < a->distanceTo(closest))) closest = zh1; 379// 380// LeaveCriticalSection(&m_csShape); 381// 382// if (closest == NULL) return NULL; 383// 384// int face = -1; 385// 386// if (closest == xh0) face = 4; 387// if (closest == xh1) face = 5; 388// if (closest == yh0) face = 0; 389// if (closest == yh1) face = 1; 390// if (closest == zh0) face = 2; 391// if (closest == zh1) face = 3; 392// 393// return new HitResult(xt, yt, zt, face, closest->add(xt, yt, zt)); 394// } 395// 396// bool Tile_SPU::containsX(Vec3 *v) 397// { 398// if( v == NULL) return false; 399// return v->y >= yy0 && v->y <= yy1 && v->z >= zz0 && v->z <= zz1; 400// } 401// 402// bool Tile_SPU::containsY(Vec3 *v) 403// { 404// if( v == NULL) return false; 405// return v->x >= xx0 && v->x <= xx1 && v->z >= zz0 && v->z <= zz1; 406// } 407// 408// bool Tile_SPU::containsZ(Vec3 *v) 409// { 410// if( v == NULL) return false; 411// return v->x >= xx0 && v->x <= xx1 && v->y >= yy0 && v->y <= yy1; 412// } 413// 414// void Tile_SPU::wasExploded(Level *level, int x, int y, int z) 415// { 416// } 417// 418int Tile_SPU::getRenderLayer() 419{ 420 return 0; 421} 422// 423// bool Tile_SPU::mayPlace(Level *level, int x, int y, int z, int face) 424// { 425// return mayPlace(level, x, y, z); 426// } 427// 428// bool Tile_SPU::mayPlace(Level *level, int x, int y, int z) 429// { 430// int t = level->getTile(x, y, z); 431// return t == 0 || Tile_SPU::tiles[t]->material->isReplaceable(); 432// } 433// 434// // 4J-PB - Adding a TestUse for tooltip display 435// bool Tile_SPU::TestUse() 436// { 437// return false; 438// } 439// 440// bool Tile_SPU::TestUse(Level *level, int x, int y, int z, shared_ptr<Player> player) 441// { 442// return false; 443// } 444// 445// bool Tile_SPU::use(Level *level, int x, int y, int z, shared_ptr<Player> player, int clickedFace, float clickX, float clickY, float clickZ, bool soundOnly/*=false*/) // 4J added soundOnly param 446// { 447// return false; 448// } 449// 450// void Tile_SPU::stepOn(Level *level, int x, int y, int z, shared_ptr<Entity> entity) 451// { 452// } 453// 454// void Tile_SPU::setPlacedOnFace(Level *level, int x, int y, int z, int face) 455// { 456// } 457// 458// void Tile_SPU::prepareRender(Level *level, int x, int y, int z) 459// { 460// } 461// 462// void Tile_SPU::attack(Level *level, int x, int y, int z, shared_ptr<Player> player) 463// { 464// } 465// 466// void Tile_SPU::handleEntityInside(Level *level, int x, int y, int z, shared_ptr<Entity> e, Vec3 *current) 467// { 468// } 469// 470void Tile_SPU::updateShape(ChunkRebuildData *level, int x, int y, int z, int forceData, TileEntity* forceEntity) // 4J added forceData, forceEntity param 471{ 472} 473// 474 475int Tile_SPU::getColor(ChunkRebuildData *level, int x, int y, int z) 476{ 477 return 0xffffff; 478} 479 480// 481// int Tile_SPU::getColor(LevelSource *level, int x, int y, int z, int data) 482// { 483// return 0xffffff; 484// } 485// 486// bool Tile_SPU::getSignal(LevelSource *level, int x, int y, int z) 487// { 488// return false; 489// } 490// 491// bool Tile_SPU::getSignal(LevelSource *level, int x, int y, int z, int dir) 492// { 493// return false; 494// } 495// 496// bool Tile_SPU::isSignalSource() 497// { 498// return false; 499// } 500// 501// void Tile_SPU::entityInside(Level *level, int x, int y, int z, shared_ptr<Entity> entity) 502// { 503// } 504// 505// bool Tile_SPU::getDirectSignal(Level *level, int x, int y, int z, int dir) 506// { 507// return false; 508// } 509// 510void Tile_SPU::updateDefaultShape() 511{ 512} 513// 514// void Tile_SPU::playerDestroy(Level *level, shared_ptr<Player> player, int x, int y, int z, int data) 515// { 516// // 4J Stu - Special case - only record a crop destroy if is fully grown 517// if(id==Tile_SPU::crops_Id) 518// { 519// if( Tile_SPU::crops->getResource(data, NULL, 0) > 0 ) 520// player->awardStat(Stats::blocksMined[id], 1); 521// } 522// else 523// { 524// player->awardStat(Stats::blocksMined[id], 1); 525// } 526// player->awardStat(Stats::totalBlocksMined, 1); // 4J : WESTY : Added for other award. 527// player->causeFoodExhaustion(FoodConstants::EXHAUSTION_MINE); 528// 529// if( id == Tile_SPU::treeTrunk_Id ) 530// player->awardStat(Achievements::mineWood); 531// 532// 533// if (isCubeShaped() && !isEntityTile[id] && EnchantmentHelper::hasSilkTouch(player->inventory)) 534// { 535// shared_ptr<ItemInstance> item = getSilkTouchItemInstance(data); 536// if (item != NULL) 537// { 538// popResource(level, x, y, z, item); 539// } 540// } 541// else 542// { 543// int playerBonusLevel = EnchantmentHelper::getDiggingLootBonus(player->inventory); 544// spawnResources(level, x, y, z, data, playerBonusLevel); 545// } 546// } 547// 548// shared_ptr<ItemInstance> Tile_SPU::getSilkTouchItemInstance(int data) 549// { 550// int popData = 0; 551// if (id >= 0 && id < Item::items.length && Item::items[id]->isStackedByData()) 552// { 553// popData = data; 554// } 555// return shared_ptr<ItemInstance>(new ItemInstance(id, 1, popData)); 556// } 557// 558// int Tile_SPU::getResourceCountForLootBonus(int bonusLevel, Random *random) 559// { 560// return getResourceCount(random); 561// } 562// 563// bool Tile_SPU::canSurvive(Level *level, int x, int y, int z) 564// { 565// return true; 566// } 567// 568// void Tile_SPU::setPlacedBy(Level *level, int x, int y, int z, shared_ptr<Mob> by) 569// { 570// } 571// 572// Tile *Tile_SPU::setDescriptionId(unsigned int id) 573// { 574// this->descriptionId = id; 575// return this; 576// } 577// 578// wstring Tile_SPU::getName() 579// { 580// return I18n::get(getDescriptionId() + L".name"); 581// } 582// 583// unsigned int Tile_SPU::getDescriptionId(int iData /*= -1*/) 584// { 585// return descriptionId; 586// } 587// 588// Tile *Tile_SPU::setUseDescriptionId(unsigned int id) 589// { 590// this->useDescriptionId = id; 591// return this; 592// } 593// 594// unsigned int Tile_SPU::getUseDescriptionId() 595// { 596// return useDescriptionId; 597// } 598// 599// void Tile_SPU::triggerEvent(Level *level, int x, int y, int z, int b0, int b1) 600// { 601// } 602// 603// bool Tile_SPU::isCollectStatistics() 604// { 605// return collectStatistics; 606// } 607// 608// Tile *Tile_SPU::setNotCollectStatistics() 609// { 610// collectStatistics = false; 611// return this; 612// } 613// 614// int Tile_SPU::getPistonPushReaction() 615// { 616// return material->getPushReaction(); 617// } 618// 619// // 4J - brought forward from 1.8.2 620float Tile_SPU::getShadeBrightness(ChunkRebuildData *level, int x, int y, int z) 621{ 622 return level->isSolidBlockingTile(x, y, z) ? 0.2f : 1.0f; 623} 624 625Tile_SPU* Tile_SPU::createFromID( int tileID ) 626{ 627 if(tileID == 0) 628 return NULL; 629 630 if(m_tiles[tileID].id != -1) 631 return &m_tiles[tileID]; 632 633#ifndef SN_TARGET_PS3_SPU 634 app.DebugPrintf("missing tile ID %d\n", tileID); 635#else 636 spu_print("missing tile ID %d\n", tileID); 637#endif 638 return &m_tiles[1]; 639 640} 641 642Material_SPU* Tile_SPU::getMaterial() 643{ 644 int matID = ms_pTileData->materialIDs[id]; 645 return &ms_pTileData->materials[matID]; 646} 647 648// 649// void Tile_SPU::fallOn(Level *level, int x, int y, int z, shared_ptr<Entity> entity, float fallDistance) 650// { 651// } 652// 653// void Tile_SPU::registerIcons(IconRegister *iconRegister) 654// { 655// icon = iconRegister->registerIcon(m_textureName); 656// } 657// 658// wstring Tile_SPU::getTileItemIconName() 659// { 660// return L""; 661// } 662// 663// Tile *Tile_SPU::setTextureName(const wstring &name) 664// { 665// m_textureName = name; 666// return this; 667// } 668 669 670 671void Tile_SPU::initTilePointers() 672{ 673 674#define CREATE_TILE_TYPE(index, className) new (&m_tiles[index]) className(index); 675 676 677 CREATE_TILE_TYPE(grass_Id, GrassTile_SPU); 678 CREATE_TILE_TYPE(stoneSlab_Id, StoneSlabTile_SPU); 679 CREATE_TILE_TYPE(stoneSlabHalf_Id, StoneSlabTile_SPU); 680 CREATE_TILE_TYPE(woodSlab_Id, WoodSlabTile_SPU); 681 CREATE_TILE_TYPE(woodSlabHalf_Id, WoodSlabTile_SPU); 682 683 CREATE_TILE_TYPE(chest_Id, ChestTile_SPU); 684 685 CREATE_TILE_TYPE(ironFence_Id, ThinFenceTile_SPU); 686 CREATE_TILE_TYPE(thinGlass_Id, ThinFenceTile_SPU); 687 688 CREATE_TILE_TYPE(fence_Id, FenceTile_SPU); 689 CREATE_TILE_TYPE(netherFence_Id, FenceTile_SPU); 690 691 CREATE_TILE_TYPE(stairs_wood_Id, StairTile_SPU); 692 CREATE_TILE_TYPE(stairs_stone_Id, StairTile_SPU); 693 CREATE_TILE_TYPE(stairs_bricks_Id, StairTile_SPU); 694 CREATE_TILE_TYPE(stairs_stoneBrickSmooth_Id, StairTile_SPU); 695 CREATE_TILE_TYPE(stairs_netherBricks_Id, StairTile_SPU); 696 CREATE_TILE_TYPE(stairs_sandstone_Id, StairTile_SPU); 697 CREATE_TILE_TYPE(stairs_sprucewood_Id, StairTile_SPU); 698 CREATE_TILE_TYPE(stairs_birchwood_Id, StairTile_SPU); 699 CREATE_TILE_TYPE(stairs_junglewood_Id, StairTile_SPU); 700 701 CREATE_TILE_TYPE(dirt_Id, DirtTile_SPU); 702 703 CREATE_TILE_TYPE(door_iron_Id, DoorTile_SPU); 704 CREATE_TILE_TYPE(door_wood_Id, DoorTile_SPU); 705 706 CREATE_TILE_TYPE(pressurePlate_stone_Id, PressurePlateTile_SPU); 707 CREATE_TILE_TYPE(pressurePlate_wood_Id, PressurePlateTile_SPU); 708 709 CREATE_TILE_TYPE(farmland_Id, FarmTile_SPU); 710 711 CREATE_TILE_TYPE(flower_Id, Bush_SPU); 712 CREATE_TILE_TYPE(rose_Id, Bush_SPU); 713 CREATE_TILE_TYPE(deadBush_Id, Bush_SPU); // DeadBushTile 714 715 CREATE_TILE_TYPE(tallgrass_Id, TallGrass_SPU); 716 717 CREATE_TILE_TYPE(sandStone_Id, SandStoneTile_SPU); 718 719 CREATE_TILE_TYPE(wood_Id, WoodTile_SPU); 720 721 CREATE_TILE_TYPE(treeTrunk_Id, TreeTile_SPU); 722 723 CREATE_TILE_TYPE(leaves_Id, LeafTile_SPU); 724 725 CREATE_TILE_TYPE(crops_Id, CropTile_SPU); 726 727 CREATE_TILE_TYPE(reeds_Id, ReedTile_SPU); 728 729 CREATE_TILE_TYPE(torch_Id, TorchTile_SPU); 730 CREATE_TILE_TYPE(notGate_off_Id, TorchTile_SPU); // TorchTile->NotGateTile 731 CREATE_TILE_TYPE(notGate_on_Id, TorchTile_SPU); // TorchTile->NotGateTile 732 733 CREATE_TILE_TYPE(mushroom1_Id, Mushroom_SPU); 734 CREATE_TILE_TYPE(mushroom2_Id, Mushroom_SPU); 735 736 CREATE_TILE_TYPE(mobSpawner_Id, MobSpawnerTile_SPU); 737 CREATE_TILE_TYPE(musicBlock_Id, EntityTile_SPU); // MusicTile->EntityTile 738 739 CREATE_TILE_TYPE(furnace_Id, FurnaceTile_SPU); 740 CREATE_TILE_TYPE(furnace_lit_Id, FurnaceTile_SPU); 741 742 CREATE_TILE_TYPE(web_Id, WebTile_SPU); 743 744 CREATE_TILE_TYPE(water_Id, LiquidTile_SPU); 745 CREATE_TILE_TYPE(lava_Id, LiquidTile_SPU); 746 CREATE_TILE_TYPE(calmLava_Id, LiquidTile_SPU); // LiquidTileStatic 747 CREATE_TILE_TYPE(calmWater_Id, LiquidTile_SPU); // LiquidTileStatic 748 749 CREATE_TILE_TYPE(fire_Id, FireTile_SPU); 750 751 CREATE_TILE_TYPE(sapling_Id, Sapling_SPU); 752 753 CREATE_TILE_TYPE(glass_Id, GlassTile_SPU); 754 755 CREATE_TILE_TYPE(ice_Id, IceTile_SPU); 756 757 CREATE_TILE_TYPE(portalTile_Id, PortalTile_SPU); 758 759 CREATE_TILE_TYPE(dispenser_Id, DispenserTile_SPU); 760 761 CREATE_TILE_TYPE(rail_Id, RailTile_SPU); 762 CREATE_TILE_TYPE(goldenRail_Id, RailTile_SPU); 763 764 CREATE_TILE_TYPE(detectorRail_Id, DetectorRailTile_SPU); 765 766 CREATE_TILE_TYPE(tnt_Id, TntTile_SPU); 767 768 CREATE_TILE_TYPE(bookshelf_Id, BookshelfTile_SPU); 769 770 CREATE_TILE_TYPE(workBench_Id, WorkbenchTile_SPU); 771 772 CREATE_TILE_TYPE(sign_Id, SignTile_SPU); 773 CREATE_TILE_TYPE(wallSign_Id, SignTile_SPU); 774 775 CREATE_TILE_TYPE(ladder_Id, LadderTile_SPU); 776 777 CREATE_TILE_TYPE(button_stone_Id, ButtonTile_SPU); 778 CREATE_TILE_TYPE(button_wood_Id, ButtonTile_SPU); 779 780 CREATE_TILE_TYPE(topSnow_Id, TopSnowTile_SPU); 781 782 CREATE_TILE_TYPE(cactus_Id, CactusTile_SPU); 783 784 CREATE_TILE_TYPE(recordPlayer_Id, RecordPlayerTile_SPU); 785 786 CREATE_TILE_TYPE(pumpkin_Id, PumpkinTile_SPU); 787 CREATE_TILE_TYPE(litPumpkin_Id, PumpkinTile_SPU); 788 789 CREATE_TILE_TYPE(cake_Id, CakeTile_SPU); 790 791 CREATE_TILE_TYPE(trapdoor_Id, TrapDoorTile_SPU); 792 793 CREATE_TILE_TYPE(monsterStoneEgg_Id, StoneMonsterTile_SPU); 794 795 CREATE_TILE_TYPE(stoneBrickSmooth_Id, SmoothStoneBrickTile_SPU); 796 797 CREATE_TILE_TYPE(hugeMushroom1_Id, HugeMushroomTile_SPU); 798 CREATE_TILE_TYPE(hugeMushroom2_Id, HugeMushroomTile_SPU); 799 800 CREATE_TILE_TYPE(melon_Id, MelonTile_SPU); 801 802 CREATE_TILE_TYPE(melonStem_Id, StemTile_SPU); 803 CREATE_TILE_TYPE(pumpkinStem_Id, StemTile_SPU); 804 805 CREATE_TILE_TYPE(vine_Id, VineTile_SPU); 806 807 CREATE_TILE_TYPE(mycel_Id, MycelTile_SPU); 808 809 CREATE_TILE_TYPE(waterLily_Id, WaterlilyTile_SPU); 810 811 CREATE_TILE_TYPE(netherStalk_Id, NetherStalkTile_SPU); 812 813 CREATE_TILE_TYPE(enchantTable_Id, EnchantmentTableTile_SPU); 814 815 CREATE_TILE_TYPE(brewingStand_Id, BrewingStandTile_SPU); 816 817 CREATE_TILE_TYPE(diode_on_Id, DiodeTile_SPU); 818 CREATE_TILE_TYPE(diode_off_Id, DiodeTile_SPU); 819 820 CREATE_TILE_TYPE(redStoneDust_Id, RedStoneDustTile_SPU); 821 822 CREATE_TILE_TYPE(fenceGate_Id, FenceGateTile_SPU); 823 824 CREATE_TILE_TYPE(bed_Id, BedTile_SPU); 825 826 CREATE_TILE_TYPE(pistonBase_Id, PistonBaseTile_SPU); 827 CREATE_TILE_TYPE(pistonStickyBase_Id, PistonBaseTile_SPU); 828 829 CREATE_TILE_TYPE(pistonExtensionPiece_Id, PistonExtensionTile_SPU); 830 831 CREATE_TILE_TYPE(pistonMovingPiece_Id, PistonMovingPiece_SPU); 832 833 CREATE_TILE_TYPE(lever_Id, LeverTile_SPU); 834 835 CREATE_TILE_TYPE(cauldron_Id, CauldronTile_SPU); 836 837 CREATE_TILE_TYPE(endPortalTile_Id, TheEndPortal_SPU); 838 839 CREATE_TILE_TYPE(endPortalFrameTile_Id, TheEndPortalFrameTile_SPU); 840 841 CREATE_TILE_TYPE(dragonEgg_Id, EggTile_SPU); 842 843 CREATE_TILE_TYPE(cocoa_Id, CocoaTile_SPU); 844 845 CREATE_TILE_TYPE(redstoneLight_Id, RedlightTile_SPU); 846 CREATE_TILE_TYPE(redstoneLight_lit_Id, RedlightTile_SPU); 847 848 CREATE_TILE_TYPE(skull_Id, SkullTile_SPU); 849 850 // these tile types don't have any additional code that we need. 851 CREATE_TILE_TYPE(stoneBrick_Id, Tile_SPU); // Tile 852 CREATE_TILE_TYPE(lapisBlock_Id, Tile_SPU); 853 CREATE_TILE_TYPE(redBrick_Id, Tile_SPU); 854 CREATE_TILE_TYPE(mossStone_Id, Tile_SPU); 855 CREATE_TILE_TYPE(netherBrick_Id, Tile_SPU); 856 CREATE_TILE_TYPE(whiteStone_Id, Tile_SPU); 857 CREATE_TILE_TYPE(unbreakable_Id, Tile_SPU); 858 CREATE_TILE_TYPE(sponge_Id, Tile_SPU); 859 CREATE_TILE_TYPE(rock_Id, Tile_SPU); // StoneTile 860 CREATE_TILE_TYPE(obsidian_Id, Tile_SPU); // StoneTile->ObsidianTile 861 CREATE_TILE_TYPE(sand_Id, Tile_SPU); // HeavyTile 862 CREATE_TILE_TYPE(gravel_Id, Tile_SPU); // GravelTile 863 CREATE_TILE_TYPE(goldOre_Id, Tile_SPU); // OreTile 864 CREATE_TILE_TYPE(ironOre_Id, Tile_SPU); // OreTile 865 CREATE_TILE_TYPE(coalOre_Id, Tile_SPU); // OreTile 866 CREATE_TILE_TYPE(lapisOre_Id, Tile_SPU); // OreTile 867 CREATE_TILE_TYPE(diamondOre_Id, Tile_SPU); // OreTile 868 CREATE_TILE_TYPE(clay_Id, Tile_SPU); // ClayTile 869 CREATE_TILE_TYPE(redStoneOre_Id, Tile_SPU); // RedStoneOreTile 870 CREATE_TILE_TYPE(redStoneOre_lit_Id, Tile_SPU); // RedStoneOreTile 871 CREATE_TILE_TYPE(goldBlock_Id, Tile_SPU); // MetalTile 872 CREATE_TILE_TYPE(ironBlock_Id, Tile_SPU); // MetalTile 873 CREATE_TILE_TYPE(diamondBlock_Id, Tile_SPU); // MetalTile 874 CREATE_TILE_TYPE(snow_Id, Tile_SPU); // SnowTile 875 CREATE_TILE_TYPE(hellRock_Id, Tile_SPU); // HellStoneTile 876 CREATE_TILE_TYPE(hellSand_Id, Tile_SPU); // HellSandTile 877 CREATE_TILE_TYPE(lightGem_Id, Tile_SPU); // LightGemTile 878 CREATE_TILE_TYPE(aprilFoolsJoke_Id, Tile_SPU); // LockedChestTile 879 880 CREATE_TILE_TYPE(cloth_Id, ClothTile_SPU); // wool 881 882 883 CREATE_TILE_TYPE(emeraldOre_Id, Tile_SPU); // OreTile 884 CREATE_TILE_TYPE(enderChest_Id, EnderChestTile_SPU); 885 CREATE_TILE_TYPE(tripWireSource_Id, TripWireSourceTile_SPU); 886 CREATE_TILE_TYPE(tripWire_Id, TripWireTile_SPU); 887// 888 CREATE_TILE_TYPE(emeraldBlock_Id, Tile_SPU); // MetalTile 889 CREATE_TILE_TYPE(cobbleWall_Id, WallTile_SPU); 890 CREATE_TILE_TYPE(flowerPot_Id, FlowerPotTile_SPU); 891 CREATE_TILE_TYPE(carrots_Id, CarrotTile_SPU); 892 CREATE_TILE_TYPE(potatoes_Id, PotatoTile_SPU); 893 CREATE_TILE_TYPE(anvil_Id, AnvilTile_SPU); 894 CREATE_TILE_TYPE(netherQuartz_Id, Tile_SPU); // OreTile 895 CREATE_TILE_TYPE(quartzBlock_Id, QuartzBlockTile_SPU); 896 CREATE_TILE_TYPE(stairs_quartz_Id, StairTile_SPU); 897 CREATE_TILE_TYPE(woolCarpet_Id, WoolCarpetTile_SPU); 898 899};