mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-04-24 16:24:11 +00:00
2747 lines
117 KiB
C++
2747 lines
117 KiB
C++
#include "../Platform/stdafx.h"
|
|
#include "../Headers/net.minecraft.stats.h"
|
|
#include "../Headers/net.minecraft.locale.h"
|
|
#include "../Headers/net.minecraft.world.entity.h"
|
|
#include "../Headers/net.minecraft.world.entity.item.h"
|
|
#include "../Headers/net.minecraft.world.entity.player.h"
|
|
#include "../Headers/net.minecraft.world.item.h"
|
|
#include "../Headers/net.minecraft.world.item.enchantment.h"
|
|
#include "../Headers/net.minecraft.world.level.material.h"
|
|
#include "../Headers/net.minecraft.world.level.tile.h"
|
|
#include "../Headers/net.minecraft.world.level.tile.entity.h"
|
|
#include "../Headers/net.minecraft.world.level.h"
|
|
#include "../Headers/net.minecraft.world.level.redstone.h"
|
|
#include "../Headers/net.minecraft.world.phys.h"
|
|
#include "../Headers/net.minecraft.world.food.h"
|
|
#include "../Headers/net.minecraft.world.h"
|
|
#include "../Headers/net.minecraft.h"
|
|
#include "Tile.h"
|
|
|
|
std::wstring Tile::TILE_DESCRIPTION_PREFIX = L"Tile.";
|
|
|
|
const float Tile::INDESTRUCTIBLE_DESTROY_TIME = -1.0f;
|
|
|
|
Tile::SoundType* Tile::SOUND_NORMAL = NULL;
|
|
Tile::SoundType* Tile::SOUND_WOOD = NULL;
|
|
Tile::SoundType* Tile::SOUND_GRAVEL = NULL;
|
|
Tile::SoundType* Tile::SOUND_GRASS = NULL;
|
|
Tile::SoundType* Tile::SOUND_STONE = NULL;
|
|
Tile::SoundType* Tile::SOUND_METAL = NULL;
|
|
Tile::SoundType* Tile::SOUND_GLASS = NULL;
|
|
Tile::SoundType* Tile::SOUND_CLOTH = NULL;
|
|
Tile::SoundType* Tile::SOUND_SAND = NULL;
|
|
Tile::SoundType* Tile::SOUND_SNOW = NULL;
|
|
Tile::SoundType* Tile::SOUND_LADDER = NULL;
|
|
Tile::SoundType* Tile::SOUND_ANVIL = NULL;
|
|
|
|
bool Tile::solid[TILE_NUM_COUNT];
|
|
int Tile::lightBlock[TILE_NUM_COUNT];
|
|
bool Tile::transculent[TILE_NUM_COUNT];
|
|
int Tile::lightEmission[TILE_NUM_COUNT];
|
|
unsigned char
|
|
Tile::_sendTileData[TILE_NUM_COUNT]; // 4J changed - was bool, now bitfield
|
|
// to indicate which bits are
|
|
// important to be sent
|
|
bool Tile::mipmapEnable[TILE_NUM_COUNT];
|
|
bool Tile::propagate[TILE_NUM_COUNT];
|
|
|
|
Tile** Tile::tiles = NULL;
|
|
|
|
Tile* Tile::stone = NULL;
|
|
GrassTile* Tile::grass = NULL;
|
|
Tile* Tile::dirt = NULL;
|
|
Tile* Tile::cobblestone = NULL;
|
|
Tile* Tile::wood = NULL;
|
|
Tile* Tile::sapling = NULL;
|
|
Tile* Tile::unbreakable = NULL;
|
|
LiquidTile* Tile::water = NULL;
|
|
Tile* Tile::calmWater = NULL;
|
|
LiquidTile* Tile::lava = NULL;
|
|
Tile* Tile::calmLava = NULL;
|
|
Tile* Tile::sand = NULL;
|
|
Tile* Tile::gravel = NULL;
|
|
Tile* Tile::goldOre = NULL;
|
|
Tile* Tile::ironOre = NULL;
|
|
Tile* Tile::coalOre = NULL;
|
|
Tile* Tile::treeTrunk = NULL;
|
|
LeafTile* Tile::leaves = NULL;
|
|
Tile* Tile::sponge = NULL;
|
|
Tile* Tile::glass = NULL;
|
|
Tile* Tile::lapisOre = NULL;
|
|
Tile* Tile::lapisBlock = NULL;
|
|
Tile* Tile::dispenser = NULL;
|
|
Tile* Tile::sandStone = NULL;
|
|
Tile* Tile::noteblock = NULL;
|
|
Tile* Tile::bed = NULL;
|
|
Tile* Tile::goldenRail = NULL;
|
|
Tile* Tile::detectorRail = NULL;
|
|
PistonBaseTile* Tile::pistonStickyBase = NULL;
|
|
Tile* Tile::web = NULL;
|
|
TallGrass* Tile::tallgrass = NULL;
|
|
DeadBushTile* Tile::deadBush = NULL;
|
|
PistonBaseTile* Tile::pistonBase = NULL;
|
|
PistonExtensionTile* Tile::pistonExtension = NULL;
|
|
Tile* Tile::wool = NULL;
|
|
PistonMovingPiece* Tile::pistonMovingPiece = NULL;
|
|
Bush* Tile::flower = NULL;
|
|
Bush* Tile::rose = NULL;
|
|
Bush* Tile::mushroom_brown = NULL;
|
|
Bush* Tile::mushroom_red = NULL;
|
|
Tile* Tile::goldBlock = NULL;
|
|
Tile* Tile::ironBlock = NULL;
|
|
HalfSlabTile* Tile::stoneSlab = NULL;
|
|
HalfSlabTile* Tile::stoneSlabHalf = NULL;
|
|
Tile* Tile::redBrick = NULL;
|
|
Tile* Tile::tnt = NULL;
|
|
Tile* Tile::bookshelf = NULL;
|
|
Tile* Tile::mossyCobblestone = NULL;
|
|
Tile* Tile::obsidian = NULL;
|
|
Tile* Tile::torch = NULL;
|
|
FireTile* Tile::fire = NULL;
|
|
Tile* Tile::mobSpawner = NULL;
|
|
Tile* Tile::stairs_wood = NULL;
|
|
ChestTile* Tile::chest = NULL;
|
|
RedStoneDustTile* Tile::redStoneDust = NULL;
|
|
Tile* Tile::diamondOre = NULL;
|
|
Tile* Tile::diamondBlock = NULL;
|
|
Tile* Tile::workBench = NULL;
|
|
Tile* Tile::wheat = NULL;
|
|
Tile* Tile::farmland = NULL;
|
|
Tile* Tile::furnace = NULL;
|
|
Tile* Tile::furnace_lit = NULL;
|
|
Tile* Tile::sign = NULL;
|
|
Tile* Tile::door_wood = NULL;
|
|
Tile* Tile::ladder = NULL;
|
|
Tile* Tile::rail = NULL;
|
|
Tile* Tile::stairs_stone = NULL;
|
|
Tile* Tile::wallSign = NULL;
|
|
Tile* Tile::lever = NULL;
|
|
Tile* Tile::pressurePlate_stone = NULL;
|
|
Tile* Tile::door_iron = NULL;
|
|
Tile* Tile::pressurePlate_wood = NULL;
|
|
Tile* Tile::redStoneOre = NULL;
|
|
Tile* Tile::redStoneOre_lit = NULL;
|
|
Tile* Tile::redstoneTorch_off = NULL;
|
|
Tile* Tile::redstoneTorch_on = NULL;
|
|
Tile* Tile::button = NULL;
|
|
Tile* Tile::topSnow = NULL;
|
|
Tile* Tile::ice = NULL;
|
|
Tile* Tile::snow = NULL;
|
|
Tile* Tile::cactus = NULL;
|
|
Tile* Tile::clay = NULL;
|
|
Tile* Tile::reeds = NULL;
|
|
Tile* Tile::jukebox = NULL;
|
|
Tile* Tile::fence = NULL;
|
|
Tile* Tile::pumpkin = NULL;
|
|
Tile* Tile::netherRack = NULL;
|
|
Tile* Tile::soulsand = NULL;
|
|
Tile* Tile::glowstone = NULL;
|
|
PortalTile* Tile::portalTile = NULL;
|
|
Tile* Tile::litPumpkin = NULL;
|
|
Tile* Tile::cake = NULL;
|
|
RepeaterTile* Tile::diode_off = NULL;
|
|
RepeaterTile* Tile::diode_on = NULL;
|
|
Tile* Tile::stained_glass = NULL;
|
|
Tile* Tile::trapdoor = NULL;
|
|
|
|
Tile* Tile::monsterStoneEgg = NULL;
|
|
Tile* Tile::stoneBrick = NULL;
|
|
Tile* Tile::hugeMushroom_brown = NULL;
|
|
Tile* Tile::hugeMushroom_red = NULL;
|
|
Tile* Tile::ironFence = NULL;
|
|
Tile* Tile::thinGlass = NULL;
|
|
Tile* Tile::melon = NULL;
|
|
Tile* Tile::pumpkinStem = NULL;
|
|
Tile* Tile::melonStem = NULL;
|
|
Tile* Tile::vine = NULL;
|
|
Tile* Tile::fenceGate = NULL;
|
|
Tile* Tile::stairs_bricks = NULL;
|
|
Tile* Tile::stairs_stoneBrickSmooth = NULL;
|
|
|
|
MycelTile* Tile::mycel = NULL;
|
|
Tile* Tile::waterLily = NULL;
|
|
Tile* Tile::netherBrick = NULL;
|
|
Tile* Tile::netherFence = NULL;
|
|
Tile* Tile::stairs_netherBricks = NULL;
|
|
Tile* Tile::netherStalk = NULL;
|
|
Tile* Tile::enchantTable = NULL;
|
|
Tile* Tile::brewingStand = NULL;
|
|
CauldronTile* Tile::cauldron = NULL;
|
|
Tile* Tile::endPortalTile = NULL;
|
|
Tile* Tile::endPortalFrameTile = NULL;
|
|
Tile* Tile::endStone = NULL;
|
|
Tile* Tile::dragonEgg = NULL;
|
|
Tile* Tile::redstoneLight = NULL;
|
|
Tile* Tile::redstoneLight_lit = NULL;
|
|
|
|
// TU9
|
|
Tile* Tile::stairs_sandstone = NULL;
|
|
Tile* Tile::woodStairsDark = NULL;
|
|
Tile* Tile::woodStairsBirch = NULL;
|
|
Tile* Tile::woodStairsJungle = NULL;
|
|
Tile* Tile::commandBlock = NULL;
|
|
BeaconTile* Tile::beacon = NULL;
|
|
Tile* Tile::button_wood = NULL;
|
|
HalfSlabTile* Tile::woodSlab = NULL;
|
|
HalfSlabTile* Tile::woodSlabHalf = NULL;
|
|
|
|
Tile* Tile::emeraldOre = NULL;
|
|
Tile* Tile::enderChest = NULL;
|
|
TripWireSourceTile* Tile::tripWireSource = NULL;
|
|
Tile* Tile::tripWire = NULL;
|
|
Tile* Tile::emeraldBlock = NULL;
|
|
|
|
Tile* Tile::cocoa = NULL;
|
|
Tile* Tile::skull = NULL;
|
|
|
|
Tile* Tile::cobbleWall = NULL;
|
|
Tile* Tile::flowerPot = NULL;
|
|
Tile* Tile::carrots = NULL;
|
|
Tile* Tile::potatoes = NULL;
|
|
Tile* Tile::anvil = NULL;
|
|
Tile* Tile::chest_trap = NULL;
|
|
Tile* Tile::weightedPlate_light = NULL;
|
|
Tile* Tile::weightedPlate_heavy = NULL;
|
|
ComparatorTile* Tile::comparator_off = NULL;
|
|
ComparatorTile* Tile::comparator_on = NULL;
|
|
|
|
DaylightDetectorTile* Tile::daylightDetector = NULL;
|
|
Tile* Tile::redstoneBlock = NULL;
|
|
|
|
Tile* Tile::netherQuartz = NULL;
|
|
HopperTile* Tile::hopper = NULL;
|
|
Tile* Tile::quartzBlock = NULL;
|
|
Tile* Tile::stairs_quartz = NULL;
|
|
Tile* Tile::activatorRail = NULL;
|
|
Tile* Tile::dropper = NULL;
|
|
Tile* Tile::clayHardened_colored = NULL;
|
|
Tile* Tile::stained_glass_pane = NULL;
|
|
|
|
Tile* Tile::hayBlock = NULL;
|
|
Tile* Tile::woolCarpet = NULL;
|
|
Tile* Tile::clayHardened = NULL;
|
|
Tile* Tile::coalBlock = NULL;
|
|
|
|
thread_local Tile::ThreadStorage* Tile::m_tlsShape = nullptr;
|
|
|
|
Tile::ThreadStorage::ThreadStorage() {
|
|
xx0 = yy0 = zz0 = xx1 = yy1 = zz1 = 0.0;
|
|
tileId = 0;
|
|
}
|
|
|
|
void Tile::CreateNewThreadStorage() {
|
|
m_tlsShape = new ThreadStorage();
|
|
}
|
|
|
|
void Tile::ReleaseThreadStorage() {
|
|
delete m_tlsShape;
|
|
}
|
|
|
|
void Tile::staticCtor() {
|
|
Tile::SOUND_NORMAL = new Tile::SoundType(eMaterialSoundType_STONE, 1, 1);
|
|
Tile::SOUND_WOOD = new Tile::SoundType(eMaterialSoundType_WOOD, 1, 1);
|
|
Tile::SOUND_GRAVEL = new Tile::SoundType(eMaterialSoundType_GRAVEL, 1, 1);
|
|
Tile::SOUND_GRASS = new Tile::SoundType(eMaterialSoundType_GRASS, 1, 1);
|
|
Tile::SOUND_STONE = new Tile::SoundType(eMaterialSoundType_STONE, 1, 1);
|
|
Tile::SOUND_METAL = new Tile::SoundType(eMaterialSoundType_STONE, 1, 1.5f);
|
|
Tile::SOUND_GLASS =
|
|
new Tile::SoundType(eMaterialSoundType_STONE, 1, 1,
|
|
eSoundType_RANDOM_GLASS, eSoundType_STEP_STONE);
|
|
Tile::SOUND_CLOTH = new Tile::SoundType(eMaterialSoundType_CLOTH, 1, 1);
|
|
Tile::SOUND_SAND = new Tile::SoundType(eMaterialSoundType_SAND, 1, 1);
|
|
Tile::SOUND_SNOW = new Tile::SoundType(eMaterialSoundType_SNOW, 1, 1);
|
|
Tile::SOUND_LADDER = new Tile::SoundType(eMaterialSoundType_LADDER, 1, 1,
|
|
eSoundType_DIG_WOOD);
|
|
Tile::SOUND_ANVIL =
|
|
new Tile::SoundType(eMaterialSoundType_ANVIL, 0.3f, 1,
|
|
eSoundType_DIG_STONE, eSoundType_RANDOM_ANVIL_LAND);
|
|
|
|
Tile::tiles = new Tile*[TILE_NUM_COUNT];
|
|
memset(tiles, 0, sizeof(Tile*) * TILE_NUM_COUNT);
|
|
|
|
Tile::stone = (new StoneTile(1))
|
|
->setDestroyTime(1.5f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"stone")
|
|
->setDescriptionId(IDS_TILE_STONE)
|
|
->setUseDescriptionId(IDS_DESC_STONE);
|
|
Tile::grass = (GrassTile*)(new GrassTile(2))
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"grass")
|
|
->setDescriptionId(IDS_TILE_GRASS)
|
|
->setUseDescriptionId(IDS_DESC_GRASS);
|
|
Tile::dirt = (new DirtTile(3))
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_GRAVEL)
|
|
->setIconName(L"dirt")
|
|
->setDescriptionId(IDS_TILE_DIRT)
|
|
->setUseDescriptionId(IDS_DESC_DIRT);
|
|
Tile::cobblestone =
|
|
(new Tile(4, Material::stone))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"cobblestone")
|
|
->setDescriptionId(IDS_TILE_STONE_BRICK)
|
|
->setUseDescriptionId(IDS_DESC_STONE_BRICK);
|
|
Tile::wood =
|
|
(new WoodTile(5))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structwoodstuff,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"planks")
|
|
->setDescriptionId(IDS_TILE_OAKWOOD_PLANKS)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_WOODENPLANKS);
|
|
Tile::sapling = (new Sapling(6))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"sapling")
|
|
->setDescriptionId(IDS_TILE_SAPLING)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_SAPLING)
|
|
->disableMipmap();
|
|
Tile::unbreakable = (new Tile(7, Material::stone))
|
|
->setIndestructible()
|
|
->setExplodeable(6000000)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"bedrock")
|
|
->setDescriptionId(IDS_TILE_BEDROCK)
|
|
->setNotCollectStatistics()
|
|
->setUseDescriptionId(IDS_DESC_BEDROCK);
|
|
Tile::water = (LiquidTile*)(new LiquidTileDynamic(8, Material::water))
|
|
->setDestroyTime(100.0f)
|
|
->setLightBlock(3)
|
|
->setIconName(L"water_flow")
|
|
->setDescriptionId(IDS_TILE_WATER)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_WATER);
|
|
Tile::calmWater = (new LiquidTileStatic(9, Material::water))
|
|
->setDestroyTime(100.0f)
|
|
->setLightBlock(3)
|
|
->setIconName(L"water_still")
|
|
->setDescriptionId(IDS_TILE_WATER)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_WATER);
|
|
Tile::lava = (LiquidTile*)(new LiquidTileDynamic(10, Material::lava))
|
|
->setDestroyTime(00.0f)
|
|
->setLightEmission(1.0f)
|
|
->setLightBlock(255)
|
|
->setIconName(L"lava_flow")
|
|
->setDescriptionId(IDS_TILE_LAVA)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_LAVA);
|
|
|
|
Tile::calmLava = (new LiquidTileStatic(11, Material::lava))
|
|
->setDestroyTime(100.0f)
|
|
->setLightEmission(1.0f)
|
|
->setLightBlock(255)
|
|
->setIconName(L"lava_still")
|
|
->setDescriptionId(IDS_TILE_LAVA)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_LAVA);
|
|
Tile::sand = (new HeavyTile(12))
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_SAND)
|
|
->setIconName(L"sand")
|
|
->setDescriptionId(IDS_TILE_SAND)
|
|
->setUseDescriptionId(IDS_DESC_SAND);
|
|
Tile::gravel = (new GravelTile(13))
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(Tile::SOUND_GRAVEL)
|
|
->setIconName(L"gravel")
|
|
->setDescriptionId(IDS_TILE_GRAVEL)
|
|
->setUseDescriptionId(IDS_DESC_GRAVEL);
|
|
Tile::goldOre = (new OreTile(14))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"gold_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_GOLD)
|
|
->setUseDescriptionId(IDS_DESC_ORE_GOLD);
|
|
Tile::ironOre = (new OreTile(15))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"iron_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_IRON)
|
|
->setUseDescriptionId(IDS_DESC_ORE_IRON);
|
|
Tile::coalOre = (new OreTile(16))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"coal_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_COAL)
|
|
->setUseDescriptionId(IDS_DESC_ORE_COAL);
|
|
Tile::treeTrunk = (new TreeTile(17))
|
|
->setDestroyTime(2.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"log")
|
|
->setDescriptionId(IDS_TILE_LOG)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_LOG);
|
|
// 4J - for leaves, have specified that only the data bits that encode the
|
|
// type of leaf are important to be sent
|
|
Tile::leaves = (LeafTile*)(new LeafTile(18))
|
|
->setDestroyTime(0.2f)
|
|
->setLightBlock(1)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"leaves")
|
|
->setDescriptionId(IDS_TILE_LEAVES)
|
|
->sendTileData(LeafTile::LEAF_TYPE_MASK)
|
|
->setUseDescriptionId(IDS_DESC_LEAVES);
|
|
Tile::sponge = (new Sponge(19))
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"sponge")
|
|
->setDescriptionId(IDS_TILE_SPONGE)
|
|
->setUseDescriptionId(IDS_DESC_SPONGE);
|
|
Tile::glass = (new GlassTile(20, Material::glass, false))
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(Tile::SOUND_GLASS)
|
|
->setIconName(L"glass")
|
|
->setDescriptionId(IDS_TILE_GLASS)
|
|
->setUseDescriptionId(IDS_DESC_GLASS);
|
|
|
|
Tile::lapisOre = (new OreTile(21))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"lapis_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_LAPIS)
|
|
->setUseDescriptionId(IDS_DESC_ORE_LAPIS);
|
|
Tile::lapisBlock = (new Tile(22, Material::stone))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_block, Item::eMaterial_lapis)
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"lapis_block")
|
|
->setDescriptionId(IDS_TILE_BLOCK_LAPIS)
|
|
->setUseDescriptionId(IDS_DESC_BLOCK_LAPIS);
|
|
Tile::dispenser =
|
|
(new DispenserTile(23))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_redstoneContainer,
|
|
Item::eMaterial_undefined)
|
|
->setDestroyTime(3.5f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"dispenser")
|
|
->setDescriptionId(IDS_TILE_DISPENSER)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_DISPENSER);
|
|
Tile::sandStone =
|
|
(new SandStoneTile(24))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_sand)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setDestroyTime(0.8f)
|
|
->sendTileData()
|
|
->setIconName(L"sandstone")
|
|
->setDescriptionId(IDS_TILE_SANDSTONE)
|
|
->setUseDescriptionId(IDS_DESC_SANDSTONE)
|
|
->sendTileData();
|
|
Tile::noteblock = (new NoteBlockTile(25))
|
|
->setDestroyTime(0.8f)
|
|
->setIconName(L"noteblock")
|
|
->setDescriptionId(IDS_TILE_MUSIC_BLOCK)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_NOTEBLOCK);
|
|
Tile::bed = (new BedTile(26))
|
|
->setDestroyTime(0.2f)
|
|
->setIconName(L"bed")
|
|
->setDescriptionId(IDS_TILE_BED)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_BED);
|
|
Tile::goldenRail = (new PoweredRailTile(27))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_rail, Item::eMaterial_gold)
|
|
->setDestroyTime(0.7f)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"rail_golden")
|
|
->setDescriptionId(IDS_TILE_GOLDEN_RAIL)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_POWEREDRAIL)
|
|
->disableMipmap();
|
|
Tile::detectorRail =
|
|
(new DetectorRailTile(28))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_rail,
|
|
Item::eMaterial_detector)
|
|
->setDestroyTime(0.7f)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"rail_detector")
|
|
->setDescriptionId(IDS_TILE_DETECTOR_RAIL)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_DETECTORRAIL)
|
|
->disableMipmap();
|
|
Tile::pistonStickyBase =
|
|
(PistonBaseTile*)(new PistonBaseTile(29, true))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_piston,
|
|
Item::eMaterial_stickypiston)
|
|
->setIconName(L"pistonStickyBase")
|
|
->setDescriptionId(IDS_TILE_PISTON_STICK_BASE)
|
|
->setUseDescriptionId(IDS_DESC_STICKY_PISTON)
|
|
->sendTileData();
|
|
Tile::web = (new WebTile(30))
|
|
->setLightBlock(1)
|
|
->setDestroyTime(4.0f)
|
|
->setIconName(L"web")
|
|
->setDescriptionId(IDS_TILE_WEB)
|
|
->setUseDescriptionId(IDS_DESC_WEB);
|
|
|
|
Tile::tallgrass = (TallGrass*)(new TallGrass(31))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"tallgrass")
|
|
->setDescriptionId(IDS_TILE_TALL_GRASS)
|
|
->setUseDescriptionId(IDS_DESC_TALL_GRASS)
|
|
->disableMipmap();
|
|
Tile::deadBush = (DeadBushTile*)(new DeadBushTile(32))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"deadbush")
|
|
->setDescriptionId(IDS_TILE_DEAD_BUSH)
|
|
->setUseDescriptionId(IDS_DESC_DEAD_BUSH)
|
|
->disableMipmap();
|
|
Tile::pistonBase =
|
|
(PistonBaseTile*)(new PistonBaseTile(33, false))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_piston,
|
|
Item::eMaterial_piston)
|
|
->setIconName(L"pistonBase")
|
|
->setDescriptionId(IDS_TILE_PISTON_BASE)
|
|
->setUseDescriptionId(IDS_DESC_PISTON)
|
|
->sendTileData();
|
|
Tile::pistonExtension = (PistonExtensionTile*)(new PistonExtensionTile(34))
|
|
->setDescriptionId(IDS_TILE_PISTON_BASE)
|
|
->setUseDescriptionId(-1)
|
|
->sendTileData();
|
|
Tile::wool = (new ColoredTile(35, Material::cloth))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_cloth,
|
|
Item::eMaterial_cloth)
|
|
->setDestroyTime(0.8f)
|
|
->setSoundType(Tile::SOUND_CLOTH)
|
|
->setIconName(L"wool_colored")
|
|
->setDescriptionId(IDS_TILE_CLOTH)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_WOOL);
|
|
Tile::pistonMovingPiece = (PistonMovingPiece*)(new PistonMovingPiece(36))
|
|
->setDescriptionId(IDS_TILE_PISTON_BASE)
|
|
->setUseDescriptionId(-1);
|
|
Tile::flower = (Bush*)(new Bush(37))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"flower_dandelion")
|
|
->setDescriptionId(IDS_TILE_FLOWER)
|
|
->setUseDescriptionId(IDS_DESC_FLOWER)
|
|
->disableMipmap();
|
|
Tile::rose = (Bush*)(new Bush(38))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"flower_rose")
|
|
->setDescriptionId(IDS_TILE_ROSE)
|
|
->setUseDescriptionId(IDS_DESC_FLOWER)
|
|
->disableMipmap();
|
|
Tile::mushroom_brown = (Bush*)(new Mushroom(39))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setLightEmission(2 / 16.0f)
|
|
->setIconName(L"mushroom_brown")
|
|
->setDescriptionId(IDS_TILE_MUSHROOM)
|
|
->setUseDescriptionId(IDS_DESC_MUSHROOM)
|
|
->disableMipmap();
|
|
Tile::mushroom_red = (Bush*)(new Mushroom(40))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"mushroom_red")
|
|
->setDescriptionId(IDS_TILE_MUSHROOM)
|
|
->setUseDescriptionId(IDS_DESC_MUSHROOM)
|
|
->disableMipmap();
|
|
|
|
Tile::goldBlock = (new MetalTile(41))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_block, Item::eMaterial_gold)
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"gold_block")
|
|
->setDescriptionId(IDS_TILE_BLOCK_GOLD)
|
|
->setUseDescriptionId(IDS_DESC_BLOCK_GOLD);
|
|
Tile::ironBlock = (new MetalTile(42))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_block, Item::eMaterial_iron)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"iron_block")
|
|
->setDescriptionId(IDS_TILE_BLOCK_IRON)
|
|
->setUseDescriptionId(IDS_DESC_BLOCK_IRON);
|
|
Tile::stoneSlab =
|
|
(HalfSlabTile*)(new StoneSlabTile(Tile::stoneSlab_Id, true))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_slab,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"stoneSlab")
|
|
->setDescriptionId(IDS_TILE_STONESLAB)
|
|
->setUseDescriptionId(IDS_DESC_SLAB);
|
|
Tile::stoneSlabHalf =
|
|
(HalfSlabTile*)(new StoneSlabTile(Tile::stoneSlabHalf_Id, false))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_halfslab,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"stoneSlab")
|
|
->setDescriptionId(IDS_TILE_STONESLAB)
|
|
->setUseDescriptionId(IDS_DESC_HALFSLAB);
|
|
Tile::redBrick =
|
|
(new Tile(45, Material::stone))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_brick)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"brick")
|
|
->setDescriptionId(IDS_TILE_BRICK)
|
|
->setUseDescriptionId(IDS_DESC_BRICK);
|
|
Tile::tnt = (new TntTile(46))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"tnt")
|
|
->setDescriptionId(IDS_TILE_TNT)
|
|
->setUseDescriptionId(IDS_DESC_TNT);
|
|
Tile::bookshelf =
|
|
(new BookshelfTile(47))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_paper,
|
|
Item::eMaterial_bookshelf)
|
|
->setDestroyTime(1.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"bookshelf")
|
|
->setDescriptionId(IDS_TILE_BOOKSHELF)
|
|
->setUseDescriptionId(IDS_DESC_BOOKSHELF);
|
|
Tile::mossyCobblestone = (new Tile(48, Material::stone))
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"cobblestone_mossy")
|
|
->setDescriptionId(IDS_TILE_STONE_MOSS)
|
|
->setUseDescriptionId(IDS_DESC_MOSS_STONE);
|
|
Tile::obsidian = (new ObsidianTile(49))
|
|
->setDestroyTime(50.0f)
|
|
->setExplodeable(2000)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"obsidian")
|
|
->setDescriptionId(IDS_TILE_OBSIDIAN)
|
|
->setUseDescriptionId(IDS_DESC_OBSIDIAN);
|
|
Tile::torch = (new TorchTile(50))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_torch,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(0.0f)
|
|
->setLightEmission(15 / 16.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"torch_on")
|
|
->setDescriptionId(IDS_TILE_TORCH)
|
|
->setUseDescriptionId(IDS_DESC_TORCH)
|
|
->disableMipmap();
|
|
|
|
Tile::fire = (FireTile*)((new FireTile(51))
|
|
->setDestroyTime(0.0f)
|
|
->setLightEmission(1.0f)
|
|
->setSoundType(Tile::SOUND_WOOD))
|
|
->setIconName(L"fire")
|
|
->setDescriptionId(IDS_TILE_FIRE)
|
|
->setNotCollectStatistics()
|
|
->setUseDescriptionId(-1);
|
|
Tile::mobSpawner = (new MobSpawnerTile(52))
|
|
->setDestroyTime(5.0f)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"mob_spawner")
|
|
->setDescriptionId(IDS_TILE_MOB_SPAWNER)
|
|
->setNotCollectStatistics()
|
|
->setUseDescriptionId(IDS_DESC_MOB_SPAWNER);
|
|
Tile::stairs_wood =
|
|
(new StairTile(53, Tile::wood, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_wood)
|
|
->setIconName(L"stairsWood")
|
|
->setDescriptionId(IDS_TILE_STAIRS_WOOD)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::chest = (ChestTile*)(new ChestTile(54, ChestTile::TYPE_BASIC))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_chest,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(2.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"chest")
|
|
->setDescriptionId(IDS_TILE_CHEST)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_CHEST);
|
|
Tile::redStoneDust = (RedStoneDustTile*)(new RedStoneDustTile(55))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_NORMAL)
|
|
->setIconName(L"redstone_dust")
|
|
->setDescriptionId(IDS_TILE_REDSTONE_DUST)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_REDSTONE_DUST);
|
|
Tile::diamondOre = (new OreTile(56))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"diamond_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_DIAMOND)
|
|
->setUseDescriptionId(IDS_DESC_ORE_DIAMOND);
|
|
Tile::diamondBlock =
|
|
(new MetalTile(57))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_block,
|
|
Item::eMaterial_diamond)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"diamond_block")
|
|
->setDescriptionId(IDS_TILE_BLOCK_DIAMOND)
|
|
->setUseDescriptionId(IDS_DESC_BLOCK_DIAMOND);
|
|
Tile::workBench = (new WorkbenchTile(58))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_device, Item::eMaterial_wood)
|
|
->setDestroyTime(2.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"crafting_table")
|
|
->setDescriptionId(IDS_TILE_WORKBENCH)
|
|
->setUseDescriptionId(IDS_DESC_CRAFTINGTABLE);
|
|
Tile::wheat = (new CropTile(59))
|
|
->setIconName(L"wheat")
|
|
->setDescriptionId(IDS_TILE_CROPS)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_CROPS)
|
|
->disableMipmap();
|
|
Tile::farmland = (new FarmTile(60))
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(Tile::SOUND_GRAVEL)
|
|
->setIconName(L"farmland")
|
|
->setDescriptionId(IDS_TILE_FARMLAND)
|
|
->setUseDescriptionId(IDS_DESC_FARMLAND)
|
|
->sendTileData();
|
|
|
|
Tile::furnace = (new FurnaceTile(61, false))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_device,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(3.5f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"furnace")
|
|
->setDescriptionId(IDS_TILE_FURNACE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_FURNACE);
|
|
Tile::furnace_lit = (new FurnaceTile(62, true))
|
|
->setDestroyTime(3.5f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setLightEmission(14 / 16.0f)
|
|
->setIconName(L"furnace")
|
|
->setDescriptionId(IDS_TILE_FURNACE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_FURNACE);
|
|
Tile::sign = (new SignTile(63, eTYPE_SIGNTILEENTITY, true))
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"sign")
|
|
->setDescriptionId(IDS_TILE_SIGN)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_SIGN);
|
|
Tile::door_wood = (new DoorTile(64, Material::wood))
|
|
->setDestroyTime(3.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"door_wood")
|
|
->setDescriptionId(IDS_TILE_DOOR_WOOD)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_DOOR_WOOD);
|
|
Tile::ladder = (new LadderTile(65))
|
|
->setDestroyTime(0.4f)
|
|
->setSoundType(Tile::SOUND_LADDER)
|
|
->setIconName(L"ladder")
|
|
->setDescriptionId(IDS_TILE_LADDER)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_LADDER)
|
|
->disableMipmap();
|
|
Tile::rail = (new RailTile(66))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_rail,
|
|
Item::eMaterial_iron)
|
|
->setDestroyTime(0.7f)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"rail_normal")
|
|
->setDescriptionId(IDS_TILE_RAIL)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_RAIL)
|
|
->disableMipmap();
|
|
Tile::stairs_stone =
|
|
(new StairTile(67, Tile::cobblestone, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_stone)
|
|
->setIconName(L"stairsStone")
|
|
->setDescriptionId(IDS_TILE_STAIRS_STONE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::wallSign = (new SignTile(68, eTYPE_SIGNTILEENTITY, false))
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"sign")
|
|
->setDescriptionId(IDS_TILE_SIGN)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_SIGN);
|
|
Tile::lever = (new LeverTile(69))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_lever,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"lever")
|
|
->setDescriptionId(IDS_TILE_LEVER)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_LEVER);
|
|
Tile::pressurePlate_stone =
|
|
(Tile*)(new PressurePlateTile(70, L"stone", Material::stone,
|
|
PressurePlateTile::mobs))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setDescriptionId(IDS_TILE_PRESSURE_PLATE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_PRESSUREPLATE);
|
|
|
|
Tile::door_iron = (new DoorTile(71, Material::metal))
|
|
->setDestroyTime(5.0f)
|
|
->setSoundType(Tile::SOUND_METAL)
|
|
->setIconName(L"door_iron")
|
|
->setDescriptionId(IDS_TILE_DOOR_IRON)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_DOOR_IRON);
|
|
Tile::pressurePlate_wood =
|
|
(new PressurePlateTile(72, L"planks_oak", Material::wood,
|
|
PressurePlateTile::everything))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setDescriptionId(IDS_TILE_PRESSURE_PLATE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_PRESSUREPLATE);
|
|
Tile::redStoneOre = (new RedStoneOreTile(73, false))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"redstone_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_REDSTONE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_ORE_REDSTONE);
|
|
Tile::redStoneOre_lit = (new RedStoneOreTile(74, true))
|
|
->setLightEmission(10 / 16.0f)
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"redstone_ore")
|
|
->setDescriptionId(IDS_TILE_ORE_REDSTONE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_ORE_REDSTONE);
|
|
Tile::redstoneTorch_off = (new NotGateTile(75, false))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"redstone_torch_off")
|
|
->setDescriptionId(IDS_TILE_NOT_GATE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_REDSTONETORCH)
|
|
->disableMipmap();
|
|
Tile::redstoneTorch_on = (new NotGateTile(76, true))
|
|
->setDestroyTime(0.0f)
|
|
->setLightEmission(8 / 16.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"redstone_torch_on")
|
|
->setDescriptionId(IDS_TILE_NOT_GATE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_REDSTONETORCH)
|
|
->disableMipmap();
|
|
Tile::button = (new StoneButtonTile(77))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_button,
|
|
Item::eMaterial_stone)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"button")
|
|
->setDescriptionId(IDS_TILE_BUTTON)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_BUTTON);
|
|
Tile::topSnow =
|
|
(new TopSnowTile(78))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_snow)
|
|
->setDestroyTime(0.1f)
|
|
->setSoundType(Tile::SOUND_SNOW)
|
|
->setIconName(L"snow")
|
|
->setDescriptionId(IDS_TILE_SNOW)
|
|
->setUseDescriptionId(IDS_DESC_TOP_SNOW)
|
|
->sendTileData()
|
|
->setLightBlock(0);
|
|
Tile::ice = (new IceTile(79))
|
|
->setDestroyTime(0.5f)
|
|
->setLightBlock(3)
|
|
->setSoundType(Tile::SOUND_GLASS)
|
|
->setIconName(L"ice")
|
|
->setDescriptionId(IDS_TILE_ICE)
|
|
->setUseDescriptionId(IDS_DESC_ICE);
|
|
Tile::snow = (new SnowTile(80))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_structblock, Item::eMaterial_snow)
|
|
->setDestroyTime(0.2f)
|
|
->setSoundType(Tile::SOUND_CLOTH)
|
|
->setIconName(L"snow")
|
|
->setDescriptionId(IDS_TILE_SNOW)
|
|
->setUseDescriptionId(IDS_DESC_SNOW);
|
|
|
|
Tile::cactus = (new CactusTile(81))
|
|
->setDestroyTime(0.4f)
|
|
->setSoundType(Tile::SOUND_CLOTH)
|
|
->setIconName(L"cactus")
|
|
->setDescriptionId(IDS_TILE_CACTUS)
|
|
->setUseDescriptionId(IDS_DESC_CACTUS)
|
|
->disableMipmap();
|
|
Tile::clay = (new ClayTile(82))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_structblock, Item::eMaterial_clay)
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(Tile::SOUND_GRAVEL)
|
|
->setIconName(L"clay")
|
|
->setDescriptionId(IDS_TILE_CLAY)
|
|
->setUseDescriptionId(IDS_DESC_CLAY_TILE);
|
|
Tile::reeds = (new ReedTile(83))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_GRASS)
|
|
->setIconName(L"reeds")
|
|
->setDescriptionId(IDS_TILE_REEDS)
|
|
->setNotCollectStatistics()
|
|
->setUseDescriptionId(IDS_DESC_REEDS)
|
|
->disableMipmap();
|
|
Tile::jukebox = (new JukeboxTile(84))
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"jukebox")
|
|
->setDescriptionId(IDS_TILE_JUKEBOX)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_JUKEBOX);
|
|
Tile::fence = (new FenceTile(85, L"planks_oak", Material::wood))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setDescriptionId(IDS_TILE_FENCE)
|
|
->setUseDescriptionId(IDS_DESC_FENCE);
|
|
Tile::pumpkin = (new PumpkinTile(86, false))
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"pumpkin")
|
|
->setDescriptionId(IDS_TILE_PUMPKIN)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_PUMPKIN);
|
|
Tile::netherRack = (new NetherrackTile(87))
|
|
->setDestroyTime(0.4f)
|
|
->setSoundType(Tile::SOUND_STONE)
|
|
->setIconName(L"netherrack")
|
|
->setDescriptionId(IDS_TILE_HELL_ROCK)
|
|
->setUseDescriptionId(IDS_DESC_HELL_ROCK);
|
|
Tile::soulsand = (new SoulSandTile(88))
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_SAND)
|
|
->setIconName(L"soul_sand")
|
|
->setDescriptionId(IDS_TILE_HELL_SAND)
|
|
->setUseDescriptionId(IDS_DESC_HELL_SAND);
|
|
Tile::glowstone =
|
|
(new Glowstonetile(89, Material::glass))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_torch,
|
|
Item::eMaterial_glowstone)
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(Tile::SOUND_GLASS)
|
|
->setLightEmission(1.0f)
|
|
->setIconName(L"glowstone")
|
|
->setDescriptionId(IDS_TILE_LIGHT_GEM)
|
|
->setUseDescriptionId(IDS_DESC_GLOWSTONE);
|
|
Tile::portalTile = (PortalTile*)((new PortalTile(90))
|
|
->setDestroyTime(-1)
|
|
->setSoundType(Tile::SOUND_GLASS)
|
|
->setLightEmission(0.75f))
|
|
->setIconName(L"portal")
|
|
->setDescriptionId(IDS_TILE_PORTAL)
|
|
->setUseDescriptionId(IDS_DESC_PORTAL);
|
|
|
|
Tile::litPumpkin =
|
|
(new PumpkinTile(91, true))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_torch,
|
|
Item::eMaterial_pumpkin)
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setLightEmission(1.0f)
|
|
->setIconName(L"pumpkin")
|
|
->setDescriptionId(IDS_TILE_LIT_PUMPKIN)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_JACKOLANTERN);
|
|
Tile::cake = (new CakeTile(92))
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_CLOTH)
|
|
->setIconName(L"cake")
|
|
->setDescriptionId(IDS_TILE_CAKE)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_CAKE);
|
|
Tile::diode_off = (RepeaterTile*)(new RepeaterTile(93, false))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"repeater_off")
|
|
->setDescriptionId(IDS_ITEM_DIODE)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_REDSTONEREPEATER)
|
|
->disableMipmap();
|
|
Tile::diode_on = (RepeaterTile*)(new RepeaterTile(94, true))
|
|
->setDestroyTime(0.0f)
|
|
->setLightEmission(10 / 16.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"repeater_on")
|
|
->setDescriptionId(IDS_ITEM_DIODE)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_REDSTONEREPEATER)
|
|
->disableMipmap();
|
|
Tile::stained_glass =
|
|
(new StainedGlassBlock(95, Material::glass))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_glass,
|
|
Item::eMaterial_glass)
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(SOUND_GLASS)
|
|
->setIconName(L"glass")
|
|
->setDescriptionId(IDS_TILE_STAINED_GLASS)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_GLASS);
|
|
Tile::trapdoor = (new TrapDoorTile(96, Material::wood))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_door,
|
|
Item::eMaterial_trap)
|
|
->setDestroyTime(3.0f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"trapdoor")
|
|
->setDescriptionId(IDS_TILE_TRAPDOOR)
|
|
->setNotCollectStatistics()
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_TRAPDOOR);
|
|
Tile::monsterStoneEgg =
|
|
(new StoneMonsterTile(97))
|
|
->setDestroyTime(0.75f)
|
|
->setIconName(L"monsterStoneEgg")
|
|
->setDescriptionId(IDS_TILE_STONE_SILVERFISH)
|
|
->setUseDescriptionId(IDS_DESC_STONE_SILVERFISH);
|
|
Tile::stoneBrick =
|
|
(new SmoothStoneBrickTile(98))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_stoneSmooth)
|
|
->setDestroyTime(1.5f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"stonebrick")
|
|
->setDescriptionId(IDS_TILE_STONE_BRICK_SMOOTH)
|
|
->setUseDescriptionId(IDS_DESC_STONE_BRICK_SMOOTH);
|
|
Tile::hugeMushroom_brown =
|
|
(new HugeMushroomTile(99, Material::wood,
|
|
HugeMushroomTile::MUSHROOM_TYPE_BROWN))
|
|
->setDestroyTime(0.2f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"mushroom_block")
|
|
->setDescriptionId(IDS_TILE_HUGE_MUSHROOM_1)
|
|
->setUseDescriptionId(IDS_DESC_MUSHROOM)
|
|
->sendTileData();
|
|
Tile::hugeMushroom_red =
|
|
(new HugeMushroomTile(100, Material::wood,
|
|
HugeMushroomTile::MUSHROOM_TYPE_RED))
|
|
->setDestroyTime(0.2f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"mushroom_block")
|
|
->setDescriptionId(IDS_TILE_HUGE_MUSHROOM_2)
|
|
->setUseDescriptionId(IDS_DESC_MUSHROOM)
|
|
->sendTileData();
|
|
|
|
Tile::ironFence = (new ThinFenceTile(101, L"iron_bars", L"iron_bars",
|
|
Material::metal, true))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_fence, Item::eMaterial_iron)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_METAL)
|
|
->setDescriptionId(IDS_TILE_IRON_FENCE)
|
|
->setUseDescriptionId(IDS_DESC_IRON_FENCE);
|
|
Tile::thinGlass = (new ThinFenceTile(102, L"glass", L"glass_pane_top",
|
|
Material::glass, false))
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(SOUND_GLASS)
|
|
->setDescriptionId(IDS_TILE_THIN_GLASS)
|
|
->setUseDescriptionId(IDS_DESC_THIN_GLASS);
|
|
Tile::melon = (new MelonTile(103))
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"melon")
|
|
->setDescriptionId(IDS_TILE_MELON)
|
|
->setUseDescriptionId(IDS_DESC_MELON_BLOCK);
|
|
Tile::pumpkinStem = (new StemTile(104, Tile::pumpkin))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"pumpkin_stem")
|
|
->setDescriptionId(IDS_TILE_PUMPKIN_STEM)
|
|
->sendTileData();
|
|
Tile::melonStem = (new StemTile(105, Tile::melon))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"melon_stem")
|
|
->setDescriptionId(IDS_TILE_MELON_STEM)
|
|
->sendTileData();
|
|
Tile::vine = (new VineTile(106))
|
|
->setDestroyTime(0.2f)
|
|
->setSoundType(SOUND_GRASS)
|
|
->setIconName(L"vine")
|
|
->setDescriptionId(IDS_TILE_VINE)
|
|
->setUseDescriptionId(IDS_DESC_VINE)
|
|
->sendTileData();
|
|
Tile::fenceGate = (new FenceGateTile(107))
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"fenceGate")
|
|
->setDescriptionId(IDS_TILE_FENCE_GATE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_FENCE_GATE);
|
|
Tile::stairs_bricks =
|
|
(new StairTile(108, Tile::redBrick, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_brick)
|
|
->setIconName(L"stairsBrick")
|
|
->setDescriptionId(IDS_TILE_STAIRS_BRICKS)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::stairs_stoneBrickSmooth =
|
|
(new StairTile(109, Tile::stoneBrick, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_stoneSmooth)
|
|
->setIconName(L"stairsStoneBrickSmooth")
|
|
->setDescriptionId(IDS_TILE_STAIRS_STONE_BRICKS_SMOOTH)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::mycel = (MycelTile*)(new MycelTile(110))
|
|
->setDestroyTime(0.6f)
|
|
->setSoundType(SOUND_GRASS)
|
|
->setIconName(L"mycelium")
|
|
->setDescriptionId(IDS_TILE_MYCEL)
|
|
->setUseDescriptionId(IDS_DESC_MYCEL);
|
|
|
|
Tile::waterLily = (new WaterlilyTile(111))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(SOUND_GRASS)
|
|
->setIconName(L"waterlily")
|
|
->setDescriptionId(IDS_TILE_WATERLILY)
|
|
->setUseDescriptionId(IDS_DESC_WATERLILY);
|
|
Tile::netherBrick =
|
|
(new Tile(112, Material::stone))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_netherbrick)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"nether_brick")
|
|
->setDescriptionId(IDS_TILE_NETHERBRICK)
|
|
->setUseDescriptionId(IDS_DESC_NETHERBRICK);
|
|
Tile::netherFence =
|
|
(new FenceTile(113, L"nether_brick", Material::stone))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_fence,
|
|
Item::eMaterial_netherbrick)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_STONE)
|
|
->setDescriptionId(IDS_TILE_NETHERFENCE)
|
|
->setUseDescriptionId(IDS_DESC_NETHERFENCE);
|
|
Tile::stairs_netherBricks =
|
|
(new StairTile(114, Tile::netherBrick, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_netherbrick)
|
|
->setIconName(L"stairsNetherBrick")
|
|
->setDescriptionId(IDS_TILE_STAIRS_NETHERBRICK)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::netherStalk = (new NetherWartTile(115))
|
|
->setIconName(L"nether_wart")
|
|
->setDescriptionId(IDS_TILE_NETHERSTALK)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_NETHERSTALK);
|
|
Tile::enchantTable =
|
|
(new EnchantmentTableTile(116))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_device,
|
|
Item::eMaterial_magic)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(2000)
|
|
->setIconName(L"enchanting_table")
|
|
->setDescriptionId(IDS_TILE_ENCHANTMENTTABLE)
|
|
->setUseDescriptionId(IDS_DESC_ENCHANTMENTTABLE);
|
|
Tile::brewingStand =
|
|
(new BrewingStandTile(117))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_device,
|
|
Item::eMaterial_blaze)
|
|
->setDestroyTime(0.5f)
|
|
->setLightEmission(2 / 16.0f)
|
|
->setIconName(L"brewing_stand")
|
|
->setDescriptionId(IDS_TILE_BREWINGSTAND)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_BREWING_STAND);
|
|
Tile::cauldron = (CauldronTile*)(new CauldronTile(118))
|
|
->setDestroyTime(2.0f)
|
|
->setIconName(L"cauldron")
|
|
->setDescriptionId(IDS_TILE_CAULDRON)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_CAULDRON);
|
|
Tile::endPortalTile = (new TheEndPortal(119, Material::portal))
|
|
->setDestroyTime(INDESTRUCTIBLE_DESTROY_TIME)
|
|
->setExplodeable(6000000)
|
|
->setDescriptionId(IDS_TILE_END_PORTAL)
|
|
->setUseDescriptionId(IDS_DESC_END_PORTAL);
|
|
Tile::endPortalFrameTile =
|
|
(new TheEndPortalFrameTile(120))
|
|
->setSoundType(SOUND_GLASS)
|
|
->setLightEmission(2 / 16.0f)
|
|
->setDestroyTime(INDESTRUCTIBLE_DESTROY_TIME)
|
|
->setIconName(L"endframe")
|
|
->setDescriptionId(IDS_TILE_ENDPORTALFRAME)
|
|
->sendTileData()
|
|
->setExplodeable(6000000)
|
|
->setUseDescriptionId(IDS_DESC_ENDPORTALFRAME);
|
|
|
|
Tile::endStone = (new Tile(121, Material::stone))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(15)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"end_stone")
|
|
->setDescriptionId(IDS_TILE_WHITESTONE)
|
|
->setUseDescriptionId(IDS_DESC_WHITESTONE);
|
|
Tile::dragonEgg = (new EggTile(122))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(15)
|
|
->setSoundType(SOUND_STONE)
|
|
->setLightEmission(2.0f / 16.0f)
|
|
->setIconName(L"dragon_egg")
|
|
->setDescriptionId(IDS_TILE_DRAGONEGG)
|
|
->setUseDescriptionId(IDS_DESC_DRAGONEGG);
|
|
Tile::redstoneLight = (new RedlightTile(123, false))
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(SOUND_GLASS)
|
|
->setIconName(L"redstone_lamp_off")
|
|
->setDescriptionId(IDS_TILE_REDSTONE_LIGHT)
|
|
->setUseDescriptionId(IDS_DESC_REDSTONE_LIGHT);
|
|
Tile::redstoneLight_lit =
|
|
(new RedlightTile(124, true))
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(SOUND_GLASS)
|
|
->setIconName(L"redstone_lamp_on")
|
|
->setDescriptionId(IDS_TILE_REDSTONE_LIGHT)
|
|
->setUseDescriptionId(IDS_DESC_REDSTONE_LIGHT);
|
|
Tile::woodSlab = (HalfSlabTile*)(new WoodSlabTile(Tile::woodSlab_Id, true))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_slab,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"woodSlab")
|
|
->setDescriptionId(IDS_DESC_WOODSLAB)
|
|
->setUseDescriptionId(IDS_DESC_WOODSLAB);
|
|
Tile::woodSlabHalf =
|
|
(HalfSlabTile*)(new WoodSlabTile(Tile::woodSlabHalf_Id, false))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_halfslab,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(2.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"woodSlab")
|
|
->setDescriptionId(IDS_DESC_WOODSLAB)
|
|
->setUseDescriptionId(IDS_DESC_WOODSLAB);
|
|
Tile::cocoa = (new CocoaTile(127))
|
|
->setDestroyTime(0.2f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"cocoa")
|
|
->sendTileData()
|
|
->setDescriptionId(IDS_TILE_COCOA)
|
|
->setUseDescriptionId(IDS_DESC_COCOA);
|
|
Tile::stairs_sandstone =
|
|
(new StairTile(128, Tile::sandStone, 0))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_sand)
|
|
->setIconName(L"stairsSandstone")
|
|
->setDescriptionId(IDS_TILE_STAIRS_SANDSTONE)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::emeraldOre = (new OreTile(129))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"emerald_ore")
|
|
->setDescriptionId(IDS_TILE_EMERALDORE)
|
|
->setUseDescriptionId(IDS_DESC_EMERALDORE);
|
|
Tile::enderChest = (new EnderChestTile(130))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_chest, Item::eMaterial_ender)
|
|
->setDestroyTime(22.5f)
|
|
->setExplodeable(1000)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"enderChest")
|
|
->sendTileData()
|
|
->setLightEmission(.5f)
|
|
->setDescriptionId(IDS_TILE_ENDERCHEST)
|
|
->setUseDescriptionId(IDS_DESC_ENDERCHEST);
|
|
|
|
Tile::tripWireSource =
|
|
(TripWireSourceTile*)(new TripWireSourceTile(131))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_lever,
|
|
Item::eMaterial_undefined)
|
|
->setIconName(L"trip_wire_source")
|
|
->sendTileData()
|
|
->setDescriptionId(IDS_TILE_TRIPWIRE_SOURCE)
|
|
->setUseDescriptionId(IDS_DESC_TRIPWIRE_SOURCE);
|
|
Tile::tripWire = (new TripWireTile(132))
|
|
->setIconName(L"trip_wire")
|
|
->sendTileData()
|
|
->setDescriptionId(IDS_TILE_TRIPWIRE)
|
|
->setUseDescriptionId(IDS_DESC_TRIPWIRE);
|
|
Tile::emeraldBlock =
|
|
(new MetalTile(133))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_block,
|
|
Item::eMaterial_emerald)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_METAL)
|
|
->setIconName(L"emerald_block")
|
|
->setDescriptionId(IDS_TILE_EMERALDBLOCK)
|
|
->setUseDescriptionId(IDS_DESC_EMERALDBLOCK);
|
|
Tile::woodStairsDark =
|
|
(new StairTile(134, Tile::wood, TreeTile::DARK_TRUNK))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_sprucewood)
|
|
->setIconName(L"stairsWoodSpruce")
|
|
->setDescriptionId(IDS_TILE_STAIRS_SPRUCEWOOD)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::woodStairsBirch =
|
|
(new StairTile(135, Tile::wood, TreeTile::BIRCH_TRUNK))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_birchwood)
|
|
->setIconName(L"stairsWoodBirch")
|
|
->setDescriptionId(IDS_TILE_STAIRS_BIRCHWOOD)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::woodStairsJungle =
|
|
(new StairTile(136, Tile::wood, TreeTile::JUNGLE_TRUNK))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_junglewood)
|
|
->setIconName(L"stairsWoodJungle")
|
|
->setDescriptionId(IDS_TILE_STAIRS_JUNGLEWOOD)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::commandBlock = (new CommandBlock(137))
|
|
->setIndestructible()
|
|
->setExplodeable(6000000)
|
|
->setIconName(L"command_block")
|
|
->setDescriptionId(IDS_TILE_COMMAND_BLOCK)
|
|
->setUseDescriptionId(IDS_DESC_COMMAND_BLOCK);
|
|
Tile::beacon = (BeaconTile*)(new BeaconTile(138))
|
|
->setLightEmission(1.0f)
|
|
->setIconName(L"beacon")
|
|
->setDescriptionId(IDS_TILE_BEACON)
|
|
->setUseDescriptionId(IDS_DESC_BEACON);
|
|
Tile::cobbleWall = (new WallTile(139, Tile::stoneBrick))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_fence, Item::eMaterial_stone)
|
|
->setIconName(L"cobbleWall")
|
|
->setDescriptionId(IDS_TILE_COBBLESTONE_WALL)
|
|
->setUseDescriptionId(IDS_DESC_COBBLESTONE_WALL);
|
|
Tile::flowerPot = (new FlowerPotTile(140))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(SOUND_NORMAL)
|
|
->setIconName(L"flower_pot")
|
|
->setDescriptionId(IDS_TILE_FLOWERPOT)
|
|
->setUseDescriptionId(IDS_DESC_FLOWERPOT);
|
|
|
|
Tile::carrots = (new CarrotTile(141))
|
|
->setIconName(L"carrots")
|
|
->setDescriptionId(IDS_TILE_CARROTS)
|
|
->setUseDescriptionId(IDS_DESC_CARROTS)
|
|
->disableMipmap();
|
|
Tile::potatoes = (new PotatoTile(142))
|
|
->setIconName(L"potatoes")
|
|
->setDescriptionId(IDS_TILE_POTATOES)
|
|
->setUseDescriptionId(IDS_DESC_POTATO)
|
|
->disableMipmap();
|
|
Tile::button_wood =
|
|
(new WoodButtonTile(143))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_button,
|
|
Item::eMaterial_wood)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(Tile::SOUND_WOOD)
|
|
->setIconName(L"button")
|
|
->setDescriptionId(IDS_TILE_BUTTON)
|
|
->sendTileData()
|
|
->setUseDescriptionId(IDS_DESC_BUTTON);
|
|
Tile::skull = (new SkullTile(144))
|
|
->setDestroyTime(1.0f)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"skull")
|
|
->setDescriptionId(IDS_TILE_SKULL)
|
|
->setUseDescriptionId(IDS_DESC_SKULL);
|
|
Tile::anvil = (new AnvilTile(145))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_device,
|
|
Item::eMaterial_iron)
|
|
->setDestroyTime(5.0f)
|
|
->setSoundType(SOUND_ANVIL)
|
|
->setExplodeable(2000)
|
|
->setIconName(L"anvil")
|
|
->sendTileData()
|
|
->setDescriptionId(IDS_TILE_ANVIL)
|
|
->setUseDescriptionId(IDS_DESC_ANVIL);
|
|
Tile::chest_trap = (new ChestTile(146, ChestTile::TYPE_TRAP))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_chest, Item::eMaterial_trap)
|
|
->setDestroyTime(2.5f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setDescriptionId(IDS_TILE_CHEST_TRAP)
|
|
->setUseDescriptionId(IDS_DESC_CHEST_TRAP);
|
|
Tile::weightedPlate_light =
|
|
(new WeightedPressurePlateTile(147, L"gold_block", Material::metal,
|
|
Redstone::SIGNAL_MAX))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate,
|
|
Item::eMaterial_gold)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setDescriptionId(IDS_TILE_WEIGHTED_PLATE_LIGHT)
|
|
->setUseDescriptionId(IDS_DESC_WEIGHTED_PLATE_LIGHT);
|
|
Tile::weightedPlate_heavy =
|
|
(new WeightedPressurePlateTile(148, L"iron_block", Material::metal,
|
|
Redstone::SIGNAL_MAX * 10))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_pressureplate,
|
|
Item::eMaterial_iron)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setDescriptionId(IDS_TILE_WEIGHTED_PLATE_HEAVY)
|
|
->setUseDescriptionId(IDS_DESC_WEIGHTED_PLATE_HEAVY);
|
|
Tile::comparator_off = (ComparatorTile*)(new ComparatorTile(149, false))
|
|
->setDestroyTime(0.0f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"comparator_off")
|
|
->setDescriptionId(IDS_TILE_COMPARATOR)
|
|
->setUseDescriptionId(IDS_DESC_COMPARATOR);
|
|
Tile::comparator_on = (ComparatorTile*)(new ComparatorTile(150, true))
|
|
->setDestroyTime(0.0f)
|
|
->setLightEmission(10 / 16.0f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"comparator_on")
|
|
->setDescriptionId(IDS_TILE_COMPARATOR)
|
|
->setUseDescriptionId(IDS_DESC_COMPARATOR);
|
|
|
|
Tile::daylightDetector =
|
|
(DaylightDetectorTile*)(new DaylightDetectorTile(151))
|
|
->setDestroyTime(0.2f)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"daylight_detector")
|
|
->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)
|
|
->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR);
|
|
Tile::redstoneBlock =
|
|
(new PoweredMetalTile(152))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_block,
|
|
Item::eMaterial_redstone)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_METAL)
|
|
->setIconName(L"redstone_block")
|
|
->setDescriptionId(IDS_TILE_REDSTONE_BLOCK)
|
|
->setUseDescriptionId(IDS_DESC_REDSTONE_BLOCK);
|
|
Tile::netherQuartz = (new OreTile(153))
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(5)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"quartz_ore")
|
|
->setDescriptionId(IDS_TILE_NETHER_QUARTZ)
|
|
->setUseDescriptionId(IDS_DESC_NETHER_QUARTZ_ORE);
|
|
Tile::hopper =
|
|
(HopperTile*)(new HopperTile(154))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_redstoneContainer,
|
|
Item::eMaterial_undefined)
|
|
->setDestroyTime(3.0f)
|
|
->setExplodeable(8)
|
|
->setSoundType(SOUND_WOOD)
|
|
->setIconName(L"hopper")
|
|
->setDescriptionId(IDS_TILE_HOPPER)
|
|
->setUseDescriptionId(IDS_DESC_HOPPER);
|
|
Tile::quartzBlock =
|
|
(new QuartzBlockTile(155))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock,
|
|
Item::eMaterial_quartz)
|
|
->setSoundType(SOUND_STONE)
|
|
->setDestroyTime(0.8f)
|
|
->setIconName(L"quartz_block")
|
|
->setDescriptionId(IDS_TILE_QUARTZ_BLOCK)
|
|
->setUseDescriptionId(IDS_DESC_QUARTZ_BLOCK);
|
|
Tile::stairs_quartz =
|
|
(new StairTile(156, Tile::quartzBlock, QuartzBlockTile::TYPE_DEFAULT))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs,
|
|
Item::eMaterial_quartz)
|
|
->setIconName(L"stairsQuartz")
|
|
->setDescriptionId(IDS_TILE_STAIRS_QUARTZ)
|
|
->setUseDescriptionId(IDS_DESC_STAIRS);
|
|
Tile::activatorRail = (new PoweredRailTile(157))
|
|
->setDestroyTime(0.7f)
|
|
->setSoundType(SOUND_METAL)
|
|
->setIconName(L"rail_activator")
|
|
->setDescriptionId(IDS_TILE_ACTIVATOR_RAIL)
|
|
->setUseDescriptionId(IDS_DESC_ACTIVATOR_RAIL);
|
|
Tile::dropper =
|
|
(new DropperTile(158))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_redstoneContainer,
|
|
Item::eMaterial_undefined)
|
|
->setDestroyTime(3.5f)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"dropper")
|
|
->setDescriptionId(IDS_TILE_DROPPER)
|
|
->setUseDescriptionId(IDS_DESC_DROPPER);
|
|
Tile::clayHardened_colored =
|
|
(new ColoredTile(159, Material::stone))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_clay,
|
|
Item::eMaterial_clay)
|
|
->setDestroyTime(1.25f)
|
|
->setExplodeable(7)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"hardened_clay_stained")
|
|
->setDescriptionId(IDS_TILE_STAINED_CLAY)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_CLAY);
|
|
Tile::stained_glass_pane =
|
|
(new StainedGlassPaneBlock(160))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_glass,
|
|
Item::eMaterial_glass)
|
|
->setDestroyTime(0.3f)
|
|
->setSoundType(SOUND_GLASS)
|
|
->setIconName(L"glass")
|
|
->setDescriptionId(IDS_TILE_STAINED_GLASS_PANE)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_GLASS_PANE);
|
|
|
|
Tile::hayBlock = (new HayBlockTile(170))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_block,
|
|
Item::eMaterial_wheat)
|
|
->setDestroyTime(0.5f)
|
|
->setSoundType(SOUND_GRASS)
|
|
->setIconName(L"hay_block")
|
|
->setDescriptionId(IDS_TILE_HAY)
|
|
->setUseDescriptionId(IDS_DESC_HAY);
|
|
Tile::woolCarpet =
|
|
(new WoolCarpetTile(171))
|
|
->setBaseItemTypeAndMaterial(Item::eBaseItemType_carpet,
|
|
Item::eMaterial_cloth)
|
|
->setDestroyTime(0.1f)
|
|
->setSoundType(SOUND_CLOTH)
|
|
->setIconName(L"woolCarpet")
|
|
->setLightBlock(0)
|
|
->setDescriptionId(IDS_TILE_CARPET)
|
|
->setUseDescriptionId(IDS_DESC_CARPET);
|
|
Tile::clayHardened = (new Tile(172, Material::stone))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_clay, Item::eMaterial_clay)
|
|
->setDestroyTime(1.25f)
|
|
->setExplodeable(7)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"hardened_clay")
|
|
->setDescriptionId(IDS_TILE_HARDENED_CLAY)
|
|
->setUseDescriptionId(IDS_DESC_HARDENED_CLAY);
|
|
Tile::coalBlock = (new Tile(173, Material::stone))
|
|
->setBaseItemTypeAndMaterial(
|
|
Item::eBaseItemType_block, Item::eMaterial_coal)
|
|
->setDestroyTime(5.0f)
|
|
->setExplodeable(10)
|
|
->setSoundType(SOUND_STONE)
|
|
->setIconName(L"coal_block")
|
|
->setDescriptionId(IDS_TILE_COAL)
|
|
->setUseDescriptionId(IDS_DESC_COAL_BLOCK);
|
|
|
|
// Special cases for certain items since they can have different icons
|
|
Item::items[wool_Id] = (new WoolTileItem(Tile::wool_Id - 256))
|
|
->setIconName(L"cloth")
|
|
->setDescriptionId(IDS_TILE_CLOTH)
|
|
->setUseDescriptionId(IDS_DESC_WOOL);
|
|
Item::items[clayHardened_colored_Id] =
|
|
(new WoolTileItem(Tile::clayHardened_colored_Id - 256))
|
|
->setIconName(L"clayHardenedStained")
|
|
->setDescriptionId(IDS_TILE_STAINED_CLAY)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_CLAY);
|
|
Item::items[stained_glass_Id] =
|
|
(new WoolTileItem(Tile::stained_glass_Id - 256))
|
|
->setIconName(L"stainedGlass")
|
|
->setDescriptionId(IDS_TILE_STAINED_GLASS)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_GLASS);
|
|
Item::items[stained_glass_pane_Id] =
|
|
(new WoolTileItem(Tile::stained_glass_pane_Id - 256))
|
|
->setIconName(L"stainedGlassPane")
|
|
->setDescriptionId(IDS_TILE_STAINED_GLASS_PANE)
|
|
->setUseDescriptionId(IDS_DESC_STAINED_GLASS_PANE);
|
|
Item::items[woolCarpet_Id] = (new WoolTileItem(Tile::woolCarpet_Id - 256))
|
|
->setIconName(L"woolCarpet")
|
|
->setDescriptionId(IDS_TILE_CARPET)
|
|
->setUseDescriptionId(IDS_DESC_CARPET);
|
|
Item::items[treeTrunk_Id] =
|
|
(new MultiTextureTileItem(Tile::treeTrunk_Id - 256, treeTrunk,
|
|
(int*)TreeTile::TREE_NAMES, 4))
|
|
->setIconName(L"log")
|
|
->setDescriptionId(IDS_TILE_LOG)
|
|
->setUseDescriptionId(IDS_DESC_LOG);
|
|
Item::items[wood_Id] = (new MultiTextureTileItem(
|
|
Tile::wood_Id - 256, Tile::wood,
|
|
(int*)WoodTile::WOOD_NAMES, 4, IDS_TILE_PLANKS))
|
|
->setIconName(L"wood")
|
|
->setDescriptionId(IDS_TILE_OAKWOOD_PLANKS)
|
|
->setUseDescriptionId(IDS_DESC_LOG); // <- TODO
|
|
Item::items[monsterStoneEgg_Id] =
|
|
(new MultiTextureTileItem(
|
|
Tile::monsterStoneEgg_Id - 256, monsterStoneEgg,
|
|
(int*)StoneMonsterTile::STONE_MONSTER_NAMES, 3))
|
|
->setIconName(L"monsterStoneEgg")
|
|
->setDescriptionId(IDS_TILE_STONE_SILVERFISH)
|
|
->setUseDescriptionId(
|
|
IDS_DESC_STONE_SILVERFISH); // 4J - Brought forward from
|
|
// post-1.2 to fix stacking problem
|
|
Item::items[stoneBrick_Id] =
|
|
(new MultiTextureTileItem(
|
|
Tile::stoneBrick_Id - 256, stoneBrick,
|
|
(int*)SmoothStoneBrickTile::SMOOTH_STONE_BRICK_NAMES, 4))
|
|
->setIconName(L"stonebricksmooth")
|
|
->setDescriptionId(IDS_TILE_STONE_BRICK_SMOOTH);
|
|
Item::items[sandStone_Id] =
|
|
(new MultiTextureTileItem(sandStone_Id - 256, sandStone,
|
|
SandStoneTile::SANDSTONE_NAMES,
|
|
SandStoneTile::SANDSTONE_BLOCK_NAMES))
|
|
->setIconName(L"sandStone")
|
|
->setDescriptionId(IDS_TILE_SANDSTONE)
|
|
->setUseDescriptionId(IDS_DESC_SANDSTONE);
|
|
Item::items[quartzBlock_Id] =
|
|
(new MultiTextureTileItem(quartzBlock_Id - 256, quartzBlock,
|
|
QuartzBlockTile::BLOCK_NAMES,
|
|
QuartzBlockTile::QUARTZ_BLOCK_NAMES))
|
|
->setIconName(L"quartzBlock")
|
|
->setDescriptionId(IDS_TILE_QUARTZ_BLOCK)
|
|
->setUseDescriptionId(IDS_DESC_QUARTZ_BLOCK);
|
|
Item::items[stoneSlabHalf_Id] =
|
|
(new StoneSlabTileItem(Tile::stoneSlabHalf_Id - 256,
|
|
Tile::stoneSlabHalf, Tile::stoneSlab, false))
|
|
->setIconName(L"stoneSlab")
|
|
->setDescriptionId(IDS_TILE_STONESLAB)
|
|
->setUseDescriptionId(IDS_DESC_HALFSLAB);
|
|
Item::items[stoneSlab_Id] =
|
|
(new StoneSlabTileItem(Tile::stoneSlab_Id - 256, Tile::stoneSlabHalf,
|
|
Tile::stoneSlab, true))
|
|
->setIconName(L"stoneSlab")
|
|
->setDescriptionId(IDS_DESC_STONESLAB)
|
|
->setUseDescriptionId(IDS_DESC_SLAB);
|
|
Item::items[woodSlabHalf_Id] =
|
|
(new StoneSlabTileItem(Tile::woodSlabHalf_Id - 256, Tile::woodSlabHalf,
|
|
Tile::woodSlab, false))
|
|
->setIconName(L"woodSlab")
|
|
->setDescriptionId(IDS_DESC_WOODSLAB)
|
|
->setUseDescriptionId(IDS_DESC_WOODSLAB);
|
|
Item::items[woodSlab_Id] =
|
|
(new StoneSlabTileItem(Tile::woodSlab_Id - 256, Tile::woodSlabHalf,
|
|
Tile::woodSlab, true))
|
|
->setIconName(L"woodSlab")
|
|
->setDescriptionId(IDS_DESC_WOODSLAB)
|
|
->setUseDescriptionId(IDS_DESC_WOODSLAB);
|
|
Item::items[sapling_Id] =
|
|
(new MultiTextureTileItem(Tile::sapling_Id - 256, Tile::sapling,
|
|
Sapling::SAPLING_NAMES, 4))
|
|
->setIconName(L"sapling")
|
|
->setDescriptionId(IDS_TILE_SAPLING)
|
|
->setUseDescriptionId(IDS_DESC_SAPLING);
|
|
Item::items[leaves_Id] = (new LeafTileItem(Tile::leaves_Id - 256))
|
|
->setIconName(L"leaves")
|
|
->setDescriptionId(IDS_TILE_LEAVES)
|
|
->setUseDescriptionId(IDS_DESC_LEAVES);
|
|
Item::items[vine_Id] = (new ColoredTileItem(Tile::vine_Id - 256, false))
|
|
->setDescriptionId(IDS_TILE_VINE)
|
|
->setUseDescriptionId(IDS_DESC_VINE);
|
|
int idsData[3] = {IDS_TILE_SHRUB, IDS_TILE_TALL_GRASS, IDS_TILE_FERN};
|
|
intArray ids = intArray(idsData, 3);
|
|
Item::items[tallgrass_Id] =
|
|
((ColoredTileItem*)(new ColoredTileItem(Tile::tallgrass_Id - 256, true))
|
|
->setDescriptionId(IDS_TILE_TALL_GRASS))
|
|
->setDescriptionPostfixes(ids);
|
|
Item::items[topSnow_Id] = (new SnowItem(topSnow_Id - 256, topSnow));
|
|
Item::items[waterLily_Id] =
|
|
(new WaterLilyTileItem(Tile::waterLily_Id - 256));
|
|
Item::items[pistonBase_Id] = (new PistonTileItem(Tile::pistonBase_Id - 256))
|
|
->setDescriptionId(IDS_TILE_PISTON_BASE)
|
|
->setUseDescriptionId(IDS_DESC_PISTON);
|
|
Item::items[pistonStickyBase_Id] =
|
|
(new PistonTileItem(Tile::pistonStickyBase_Id - 256))
|
|
->setDescriptionId(IDS_TILE_PISTON_STICK_BASE)
|
|
->setUseDescriptionId(IDS_DESC_STICKY_PISTON);
|
|
Item::items[cobbleWall_Id] =
|
|
(new MultiTextureTileItem(cobbleWall_Id - 256, cobbleWall,
|
|
(int*)WallTile::COBBLE_NAMES, 2))
|
|
->setDescriptionId(IDS_TILE_COBBLESTONE_WALL)
|
|
->setUseDescriptionId(IDS_DESC_COBBLESTONE_WALL);
|
|
Item::items[anvil_Id] = (new AnvilTileItem(anvil))
|
|
->setDescriptionId(IDS_TILE_ANVIL)
|
|
->setUseDescriptionId(IDS_DESC_ANVIL);
|
|
|
|
for (int i = 0; i < 256; i++) {
|
|
if (Tile::tiles[i] != NULL) {
|
|
if (Item::items[i] == NULL) {
|
|
Item::items[i] = new TileItem(i - 256);
|
|
Tile::tiles[i]->init();
|
|
}
|
|
|
|
bool propagate = false;
|
|
if (i > 0 && Tile::tiles[i]->getRenderShape() == Tile::SHAPE_STAIRS)
|
|
propagate = true;
|
|
if (i > 0 && dynamic_cast<HalfSlabTile*>(Tile::tiles[i]) != NULL) {
|
|
propagate = true;
|
|
}
|
|
if (i == Tile::farmland_Id) propagate = true;
|
|
if (Tile::transculent[i]) {
|
|
propagate = true;
|
|
}
|
|
if (Tile::lightBlock[i] == 0) {
|
|
propagate = true;
|
|
}
|
|
Tile::propagate[i] = propagate;
|
|
}
|
|
}
|
|
Tile::transculent[0] = true;
|
|
|
|
Stats::buildItemStats();
|
|
|
|
// */
|
|
}
|
|
|
|
// 4J - added for common ctor code
|
|
void Tile::_init(int id, Material* material, bool isSolidRender) {
|
|
destroySpeed = 0.0f;
|
|
explosionResistance = 0.0f;
|
|
isInventoryItem = true;
|
|
collectStatistics = true;
|
|
|
|
// 4J Stu - Removed these in favour of TLS versions
|
|
// xx0 = yy0 = zz0 = xx1 = yy1 = zz1 = 0;
|
|
|
|
soundType = Tile::SOUND_NORMAL;
|
|
gravity = 1.0f;
|
|
friction = 0.6f;
|
|
_isTicking = false;
|
|
_isEntityTile = false;
|
|
|
|
/* 4J - TODO
|
|
if (Tile.tiles[id] != null)
|
|
{
|
|
throw new IllegalArgumentException("Slot " + id + " is already occupied by "
|
|
+ Tile.tiles[id] + " when adding " + this);
|
|
}
|
|
*/
|
|
this->material = material;
|
|
Tile::tiles[id] = this;
|
|
this->id = id;
|
|
updateDefaultShape();
|
|
// 4J - note these used to call isSolidRender(), but that always calls
|
|
// Tile::isSolidRender in C++ so have added as a parameter that can be
|
|
// varied from derived ctors
|
|
solid[id] = isSolidRender;
|
|
lightBlock[id] = isSolidRender ? 255 : 0;
|
|
transculent[id] = !material->blocksLight();
|
|
mipmapEnable[id] = true; // 4J added
|
|
iconName = L"";
|
|
}
|
|
|
|
Tile::Tile(int id, Material* material, bool isSolidRender) {
|
|
_init(id, material, isSolidRender);
|
|
m_iMaterial = Item::eMaterial_undefined;
|
|
m_iBaseItemType = Item::eBaseItemType_undefined;
|
|
icon = NULL;
|
|
}
|
|
|
|
Tile* Tile::sendTileData(unsigned char importantMask /*=15*/) {
|
|
Tile::_sendTileData[id] =
|
|
importantMask; // 4J - changed was bool, now bitfield to indicate which
|
|
// bits are important to be sent. Default behaviour with
|
|
// this method is all 4 bits
|
|
return this;
|
|
}
|
|
|
|
void Tile::init() {}
|
|
|
|
// 4J-PB - adding so we can class different items together for the new crafting
|
|
// menu so pickaxe_stone would get tagged with pickaxe and stone
|
|
Tile* Tile::setBaseItemTypeAndMaterial(int iType, int iMaterial) {
|
|
this->m_iBaseItemType = iType;
|
|
this->m_iMaterial = iMaterial;
|
|
return this;
|
|
}
|
|
|
|
int Tile::getBaseItemType() { return this->m_iBaseItemType; }
|
|
|
|
int Tile::getMaterial() { return this->m_iMaterial; }
|
|
|
|
Tile* Tile::setSoundType(const SoundType* soundType) {
|
|
this->soundType = soundType;
|
|
return this;
|
|
}
|
|
|
|
Tile* Tile::setLightBlock(int i) {
|
|
lightBlock[id] = i;
|
|
return this;
|
|
}
|
|
|
|
Tile* Tile::setLightEmission(float f) {
|
|
Tile::lightEmission[id] = (int)(Level::MAX_BRIGHTNESS * f);
|
|
return this;
|
|
}
|
|
|
|
Tile* Tile::setExplodeable(float explosionResistance) {
|
|
this->explosionResistance = explosionResistance * 3;
|
|
return this;
|
|
}
|
|
|
|
bool Tile::isSolidBlockingTile(int t) {
|
|
Tile* tile = Tile::tiles[t];
|
|
if (tile == NULL) return false;
|
|
return tile->material->isSolidBlocking() && tile->isCubeShaped() &&
|
|
!tile->isSignalSource();
|
|
}
|
|
|
|
bool Tile::isCubeShaped() { return true; }
|
|
|
|
bool Tile::isPathfindable(LevelSource* level, int x, int y, int z) {
|
|
return !material->blocksMotion();
|
|
}
|
|
|
|
int Tile::getRenderShape() { return SHAPE_BLOCK; }
|
|
|
|
Tile* Tile::setDestroyTime(float destroySpeed) {
|
|
this->destroySpeed = destroySpeed;
|
|
if (explosionResistance < destroySpeed * 5)
|
|
explosionResistance = destroySpeed * 5;
|
|
return this;
|
|
}
|
|
|
|
Tile* Tile::setIndestructible() {
|
|
setDestroyTime(INDESTRUCTIBLE_DESTROY_TIME);
|
|
return this;
|
|
}
|
|
|
|
float Tile::getDestroySpeed(Level* level, int x, int y, int z) {
|
|
return destroySpeed;
|
|
}
|
|
|
|
Tile* Tile::setTicking(bool tick) {
|
|
_isTicking = tick;
|
|
return this;
|
|
}
|
|
|
|
bool Tile::isTicking() { return _isTicking; }
|
|
|
|
bool Tile::isEntityTile() { return _isEntityTile; }
|
|
|
|
Tile* Tile::disableMipmap() {
|
|
mipmapEnable[id] = false;
|
|
return this;
|
|
}
|
|
|
|
void Tile::setShape(float x0, float y0, float z0, float x1, float y1,
|
|
float z1) {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
tls->xx0 = x0;
|
|
tls->yy0 = y0;
|
|
tls->zz0 = z0;
|
|
tls->xx1 = x1;
|
|
tls->yy1 = y1;
|
|
tls->zz1 = z1;
|
|
tls->tileId = this->id;
|
|
|
|
// this->xx0 = x0;
|
|
// this->yy0 = y0;
|
|
// this->zz0 = z0;
|
|
// this->xx1 = x1;
|
|
// this->yy1 = y1;
|
|
// this->zz1 = z1;
|
|
}
|
|
|
|
float Tile::getBrightness(LevelSource* level, int x, int y, int z) {
|
|
// Lighting fix brought forward from ~1.5 here - used to use the
|
|
// lightEmission level for this tile rather than getting the for the passed
|
|
// in x/y/z coords
|
|
return level->getBrightness(x, y, z,
|
|
lightEmission[level->getTile(x, y, z)]);
|
|
}
|
|
|
|
// 4J - brought forward from 1.8.2
|
|
int Tile::getLightColor(LevelSource* level, int x, int y, int z,
|
|
int tileId /*=-1*/) {
|
|
// Lighting fix brought forward from ~1.5 here - used to use the
|
|
// lightEmission level for this tile rather than getting the for the passed
|
|
// in x/y/z coords
|
|
if (tileId == -1) {
|
|
return level->getLightColor(x, y, z,
|
|
lightEmission[level->getTile(x, y, z)], -1);
|
|
} else {
|
|
return level->getLightColor(x, y, z, lightEmission[tileId], tileId);
|
|
}
|
|
}
|
|
|
|
bool Tile::isFaceVisible(Level* level, int x, int y, int z, int f) {
|
|
if (f == 0) y--;
|
|
if (f == 1) y++;
|
|
if (f == 2) z--;
|
|
if (f == 3) z++;
|
|
if (f == 4) x--;
|
|
if (f == 5) x++;
|
|
return !level->isSolidRenderTile(x, y, z);
|
|
}
|
|
|
|
bool Tile::shouldRenderFace(LevelSource* level, int x, int y, int z, int face) {
|
|
ThreadStorage* tls =
|
|
m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
if (face == 0 && tls->yy0 > 0) return true;
|
|
if (face == 1 && tls->yy1 < 1) return true;
|
|
if (face == 2 && tls->zz0 > 0) return true;
|
|
if (face == 3 && tls->zz1 < 1) return true;
|
|
if (face == 4 && tls->xx0 > 0) return true;
|
|
if (face == 5 && tls->xx1 < 1) return true;
|
|
return (!level->isSolidRenderTile(x, y, z));
|
|
}
|
|
|
|
// AP - added this function so we can generate the faceFlags for a block in a
|
|
// single fast function
|
|
int Tile::getFaceFlags(LevelSource* level, int x, int y, int z) {
|
|
int faceFlags = 0;
|
|
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
|
|
if (tls->yy0 > 0 || (!level->isSolidRenderTile(x, y - 1, z)))
|
|
faceFlags |= 0x01;
|
|
if (tls->yy1 < 1 || (!level->isSolidRenderTile(x, y + 1, z)))
|
|
faceFlags |= 0x02;
|
|
if (tls->zz0 > 0 || (!level->isSolidRenderTile(x, y, z - 1)))
|
|
faceFlags |= 0x04;
|
|
if (tls->zz1 < 1 || (!level->isSolidRenderTile(x, y, z + 1)))
|
|
faceFlags |= 0x08;
|
|
if (tls->xx0 > 0 || (!level->isSolidRenderTile(x - 1, y, z)))
|
|
faceFlags |= 0x10;
|
|
if (tls->xx1 < 1 || (!level->isSolidRenderTile(x + 1, y, z)))
|
|
faceFlags |= 0x20;
|
|
|
|
return faceFlags;
|
|
}
|
|
|
|
bool Tile::isSolidFace(LevelSource* level, int x, int y, int z, int face) {
|
|
return (level->getMaterial(x, y, z)->isSolid());
|
|
}
|
|
|
|
Icon* Tile::getTexture(LevelSource* level, int x, int y, int z, int face) {
|
|
// 4J - addition here to make rendering big blocks of leaves more efficient.
|
|
// Normally leaves never consider themselves as solid, so blocks of leaves
|
|
// will have all sides of each block completely visible. Changing to
|
|
// consider as solid if this block is surrounded by other leaves (or solid
|
|
// things). This is paired with another change in
|
|
// Level::isSolidRenderTile/Region::isSolidRenderTile which makes things
|
|
// solid code-wise (ie for determining visible sides of neighbouring
|
|
// blocks). This change just makes the texture a solid one (tex + 1) which
|
|
// 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
|
|
// method in the tiles, for the sake of efficiency - I don't imagine we'll
|
|
// be doing much more of this sort of thing
|
|
|
|
int tileId = level->getTile(x, y, z);
|
|
int tileData = level->getData(x, y, z);
|
|
|
|
if (tileId == Tile::leaves_Id) {
|
|
bool opaque = true;
|
|
|
|
int axo[6] = {1, -1, 0, 0, 0, 0};
|
|
int ayo[6] = {0, 0, 1, -1, 0, 0};
|
|
int azo[6] = {0, 0, 0, 0, 1, -1};
|
|
for (int i = 0; (i < 6) && opaque; i++) {
|
|
int t = level->getTile(x + axo[i], y + ayo[i], z + azo[i]);
|
|
if ((t != Tile::leaves_Id) && ((Tile::tiles[t] == NULL) ||
|
|
!Tile::tiles[t]->isSolidRender())) {
|
|
opaque = false;
|
|
}
|
|
}
|
|
|
|
Icon* icon = NULL;
|
|
if (opaque) {
|
|
Tile::leaves->setFancy(false);
|
|
icon = getTexture(face, tileData);
|
|
Tile::leaves->setFancy(true);
|
|
} else {
|
|
icon = getTexture(face, tileData);
|
|
}
|
|
return icon;
|
|
}
|
|
return getTexture(face, tileData);
|
|
}
|
|
|
|
Icon* Tile::getTexture(int face, int data) { return icon; }
|
|
|
|
Icon* Tile::getTexture(int face) { return getTexture(face, 0); }
|
|
|
|
AABB* Tile::getTileAABB(Level* level, int x, int y, int z) {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return AABB::newTemp(x + tls->xx0, y + tls->yy0, z + tls->zz0, x + tls->xx1,
|
|
y + tls->yy1, z + tls->zz1);
|
|
}
|
|
|
|
void Tile::addAABBs(Level* level, int x, int y, int z, AABB* box,
|
|
AABBList* boxes, std::shared_ptr<Entity> source) {
|
|
AABB* aabb = getAABB(level, x, y, z);
|
|
if (aabb != NULL && box->intersects(aabb)) boxes->push_back(aabb);
|
|
}
|
|
|
|
AABB* Tile::getAABB(Level* level, int x, int y, int z) {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return AABB::newTemp(x + tls->xx0, y + tls->yy0, z + tls->zz0, x + tls->xx1,
|
|
y + tls->yy1, z + tls->zz1);
|
|
}
|
|
|
|
bool Tile::isSolidRender(bool isServerLevel) { return true; }
|
|
|
|
bool Tile::mayPick(int data, bool liquid) { return mayPick(); }
|
|
|
|
bool Tile::mayPick() { return true; }
|
|
|
|
void Tile::tick(Level* level, int x, int y, int z, Random* random) {}
|
|
|
|
void Tile::animateTick(Level* level, int x, int y, int z, Random* random) {}
|
|
|
|
void Tile::destroy(Level* level, int x, int y, int z, int data) {}
|
|
|
|
void Tile::neighborChanged(Level* level, int x, int y, int z, int type) {}
|
|
|
|
void Tile::addLights(Level* level, int x, int y, int z) {}
|
|
|
|
int Tile::getTickDelay(Level* level) { return 10; }
|
|
|
|
void Tile::onPlace(Level* level, int x, int y, int z) {}
|
|
|
|
void Tile::onRemove(Level* level, int x, int y, int z, int id, int data) {}
|
|
|
|
int Tile::getResourceCount(Random* random) { return 1; }
|
|
|
|
int Tile::getResource(int data, Random* random, int playerBonusLevel) {
|
|
return id;
|
|
}
|
|
|
|
float Tile::getDestroyProgress(std::shared_ptr<Player> player, Level* level,
|
|
int x, int y, int z) {
|
|
float destroySpeed = getDestroySpeed(level, x, y, z);
|
|
if (destroySpeed < 0) return 0;
|
|
if (!player->canDestroy(this)) {
|
|
return player->getDestroySpeed(this, false) / destroySpeed / 100.0f;
|
|
}
|
|
return (player->getDestroySpeed(this, true) / destroySpeed) / 30;
|
|
}
|
|
|
|
void Tile::spawnResources(Level* level, int x, int y, int z, int data,
|
|
int playerBonusLevel) {
|
|
spawnResources(level, x, y, z, data, 1, playerBonusLevel);
|
|
}
|
|
|
|
void Tile::spawnResources(Level* level, int x, int y, int z, int data,
|
|
float odds, int playerBonusLevel) {
|
|
if (level->isClientSide) return;
|
|
int count = getResourceCountForLootBonus(playerBonusLevel, level->random);
|
|
for (int i = 0; i < count; i++) {
|
|
if (level->random->nextFloat() > odds) continue;
|
|
int type = getResource(data, level->random, playerBonusLevel);
|
|
if (type <= 0) continue;
|
|
|
|
popResource(level, x, y, z,
|
|
std::shared_ptr<ItemInstance>(new ItemInstance(
|
|
type, 1, getSpawnResourcesAuxValue(data))));
|
|
}
|
|
}
|
|
|
|
void Tile::popResource(Level* level, int x, int y, int z,
|
|
std::shared_ptr<ItemInstance> itemInstance) {
|
|
if (level->isClientSide ||
|
|
!level->getGameRules()->getBoolean(GameRules::RULE_DOTILEDROPS))
|
|
return;
|
|
|
|
float s = 0.7f;
|
|
double xo = level->random->nextFloat() * s + (1 - s) * 0.5;
|
|
double yo = level->random->nextFloat() * s + (1 - s) * 0.5;
|
|
double zo = level->random->nextFloat() * s + (1 - s) * 0.5;
|
|
std::shared_ptr<ItemEntity> item = std::shared_ptr<ItemEntity>(
|
|
new ItemEntity(level, x + xo, y + yo, z + zo, itemInstance));
|
|
item->throwTime = 10;
|
|
level->addEntity(item);
|
|
}
|
|
|
|
// Brought forward for TU7
|
|
void Tile::popExperience(Level* level, int x, int y, int z, int amount) {
|
|
if (!level->isClientSide) {
|
|
while (amount > 0) {
|
|
int newCount = ExperienceOrb::getExperienceValue(amount);
|
|
amount -= newCount;
|
|
level->addEntity(std::shared_ptr<ExperienceOrb>(
|
|
new ExperienceOrb(level, x + .5, y + .5, z + .5, newCount)));
|
|
}
|
|
}
|
|
}
|
|
|
|
int Tile::getSpawnResourcesAuxValue(int data) { return 0; }
|
|
|
|
float Tile::getExplosionResistance(std::shared_ptr<Entity> source) {
|
|
return explosionResistance / 5.0f;
|
|
}
|
|
|
|
HitResult* Tile::clip(Level* level, int xt, int yt, int zt, Vec3* a, Vec3* b) {
|
|
updateShape(level, xt, yt, zt);
|
|
|
|
a = a->add(-xt, -yt, -zt);
|
|
b = b->add(-xt, -yt, -zt);
|
|
|
|
ThreadStorage* tls = m_tlsShape;
|
|
Vec3* xh0 = a->clipX(b, tls->xx0);
|
|
Vec3* xh1 = a->clipX(b, tls->xx1);
|
|
|
|
Vec3* yh0 = a->clipY(b, tls->yy0);
|
|
Vec3* yh1 = a->clipY(b, tls->yy1);
|
|
|
|
Vec3* zh0 = a->clipZ(b, tls->zz0);
|
|
Vec3* zh1 = a->clipZ(b, tls->zz1);
|
|
|
|
Vec3* closest = NULL;
|
|
|
|
if (containsX(xh0) &&
|
|
(closest == NULL || a->distanceToSqr(xh0) < a->distanceToSqr(closest)))
|
|
closest = xh0;
|
|
if (containsX(xh1) &&
|
|
(closest == NULL || a->distanceToSqr(xh1) < a->distanceToSqr(closest)))
|
|
closest = xh1;
|
|
if (containsY(yh0) &&
|
|
(closest == NULL || a->distanceToSqr(yh0) < a->distanceToSqr(closest)))
|
|
closest = yh0;
|
|
if (containsY(yh1) &&
|
|
(closest == NULL || a->distanceToSqr(yh1) < a->distanceToSqr(closest)))
|
|
closest = yh1;
|
|
if (containsZ(zh0) &&
|
|
(closest == NULL || a->distanceToSqr(zh0) < a->distanceToSqr(closest)))
|
|
closest = zh0;
|
|
if (containsZ(zh1) &&
|
|
(closest == NULL || a->distanceToSqr(zh1) < a->distanceToSqr(closest)))
|
|
closest = zh1;
|
|
|
|
if (closest == NULL) return NULL;
|
|
|
|
int face = -1;
|
|
|
|
if (closest == xh0) face = Facing::WEST;
|
|
if (closest == xh1) face = Facing::EAST;
|
|
if (closest == yh0) face = Facing::DOWN;
|
|
if (closest == yh1) face = Facing::UP;
|
|
if (closest == zh0) face = Facing::NORTH;
|
|
if (closest == zh1) face = Facing::SOUTH;
|
|
|
|
return new HitResult(xt, yt, zt, face, closest->add(xt, yt, zt));
|
|
}
|
|
|
|
bool Tile::containsX(Vec3* v) {
|
|
if (v == NULL) return false;
|
|
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return v->y >= tls->yy0 && v->y <= tls->yy1 && v->z >= tls->zz0 &&
|
|
v->z <= tls->zz1;
|
|
}
|
|
|
|
bool Tile::containsY(Vec3* v) {
|
|
if (v == NULL) return false;
|
|
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return v->x >= tls->xx0 && v->x <= tls->xx1 && v->z >= tls->zz0 &&
|
|
v->z <= tls->zz1;
|
|
}
|
|
|
|
bool Tile::containsZ(Vec3* v) {
|
|
if (v == NULL) return false;
|
|
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return v->x >= tls->xx0 && v->x <= tls->xx1 && v->y >= tls->yy0 &&
|
|
v->y <= tls->yy1;
|
|
}
|
|
|
|
void Tile::wasExploded(Level* level, int x, int y, int z,
|
|
Explosion* explosion) {}
|
|
|
|
bool Tile::mayPlace(Level* level, int x, int y, int z, int face,
|
|
std::shared_ptr<ItemInstance> item) {
|
|
return mayPlace(level, x, y, z, face);
|
|
}
|
|
|
|
int Tile::getRenderLayer() { return 0; }
|
|
|
|
bool Tile::mayPlace(Level* level, int x, int y, int z, int face) {
|
|
return mayPlace(level, x, y, z);
|
|
}
|
|
|
|
bool Tile::mayPlace(Level* level, int x, int y, int z) {
|
|
int t = level->getTile(x, y, z);
|
|
return t == 0 || Tile::tiles[t]->material->isReplaceable();
|
|
}
|
|
|
|
// 4J-PB - Adding a TestUse for tooltip display
|
|
bool Tile::TestUse() { return false; }
|
|
|
|
bool Tile::TestUse(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Player> player) {
|
|
return false;
|
|
}
|
|
|
|
bool Tile::use(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Player> player, int clickedFace, float clickX,
|
|
float clickY, float clickZ,
|
|
bool soundOnly /*=false*/) // 4J added soundOnly param
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void Tile::stepOn(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Entity> entity) {}
|
|
|
|
int Tile::getPlacedOnFaceDataValue(Level* level, int x, int y, int z, int face,
|
|
float clickX, float clickY, float clickZ,
|
|
int itemValue) {
|
|
return itemValue;
|
|
}
|
|
|
|
void Tile::prepareRender(Level* level, int x, int y, int z) {}
|
|
|
|
void Tile::attack(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Player> player) {}
|
|
|
|
void Tile::handleEntityInside(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Entity> e, Vec3* current) {}
|
|
|
|
void Tile::updateShape(
|
|
LevelSource* level, int x, int y, int z, int forceData,
|
|
std::shared_ptr<TileEntity>
|
|
forceEntity) // 4J added forceData, forceEntity param
|
|
{
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
}
|
|
|
|
double Tile::getShapeX0() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->xx0;
|
|
}
|
|
|
|
double Tile::getShapeX1() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->xx1;
|
|
}
|
|
|
|
double Tile::getShapeY0() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->yy0;
|
|
}
|
|
|
|
double Tile::getShapeY1() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->yy1;
|
|
}
|
|
|
|
double Tile::getShapeZ0() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->zz0;
|
|
}
|
|
|
|
double Tile::getShapeZ1() {
|
|
ThreadStorage* tls = m_tlsShape;
|
|
// 4J Stu - Added this so that the TLS shape is correct for this tile
|
|
if (tls->tileId != this->id) updateDefaultShape();
|
|
return tls->zz1;
|
|
}
|
|
|
|
int Tile::getColor() const { return 0xffffff; }
|
|
|
|
int Tile::getColor(int auxData) { return 0xffffff; }
|
|
|
|
int Tile::getColor(LevelSource* level, int x, int y, int z) { return 0xffffff; }
|
|
|
|
int Tile::getColor(LevelSource* level, int x, int y, int z, int data) {
|
|
return 0xffffff;
|
|
}
|
|
|
|
int Tile::getSignal(LevelSource* level, int x, int y, int z, int dir) {
|
|
return Redstone::SIGNAL_NONE;
|
|
}
|
|
|
|
bool Tile::isSignalSource() { return false; }
|
|
|
|
void Tile::entityInside(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Entity> entity) {}
|
|
|
|
int Tile::getDirectSignal(LevelSource* level, int x, int y, int z, int dir) {
|
|
return Redstone::SIGNAL_NONE;
|
|
}
|
|
|
|
void Tile::updateDefaultShape() { setShape(0, 0, 0, 1, 1, 1); }
|
|
|
|
void Tile::playerDestroy(Level* level, std::shared_ptr<Player> player, int x,
|
|
int y, int z, int data) {
|
|
// 4J Stu - Special case - only record a crop destroy if is fully grown
|
|
if (id == Tile::wheat_Id) {
|
|
if (Tile::wheat->getResource(data, NULL, 0) > 0)
|
|
player->awardStat(GenericStats::blocksMined(id),
|
|
GenericStats::param_blocksMined(id, data, 1));
|
|
} else if (id == Tile::potatoes_Id) {
|
|
if (Tile::potatoes->getResource(data, NULL, 0) > 0)
|
|
player->awardStat(GenericStats::blocksMined(id),
|
|
GenericStats::param_blocksMined(id, data, 1));
|
|
} else if (id == Tile::carrots_Id) {
|
|
if (Tile::potatoes->getResource(data, NULL, 0) > 0)
|
|
player->awardStat(GenericStats::blocksMined(id),
|
|
GenericStats::param_blocksMined(id, data, 1));
|
|
} else {
|
|
player->awardStat(GenericStats::blocksMined(id),
|
|
GenericStats::param_blocksMined(id, data, 1));
|
|
}
|
|
player->awardStat(
|
|
GenericStats::totalBlocksMined(),
|
|
GenericStats::param_noArgs()); // 4J : WESTY : Added for other award.
|
|
player->causeFoodExhaustion(FoodConstants::EXHAUSTION_MINE);
|
|
|
|
if (id == Tile::treeTrunk_Id)
|
|
player->awardStat(GenericStats::mineWood(),
|
|
GenericStats::param_noArgs());
|
|
|
|
if (isSilkTouchable() && EnchantmentHelper::hasSilkTouch(player)) {
|
|
std::shared_ptr<ItemInstance> item = getSilkTouchItemInstance(data);
|
|
if (item != NULL) {
|
|
popResource(level, x, y, z, item);
|
|
}
|
|
} else {
|
|
int playerBonusLevel = EnchantmentHelper::getDiggingLootBonus(player);
|
|
spawnResources(level, x, y, z, data, playerBonusLevel);
|
|
}
|
|
}
|
|
|
|
bool Tile::isSilkTouchable() { return isCubeShaped() && !_isEntityTile; }
|
|
|
|
std::shared_ptr<ItemInstance> Tile::getSilkTouchItemInstance(int data) {
|
|
int popData = 0;
|
|
if (id >= 0 && id < Item::items.length &&
|
|
Item::items[id]->isStackedByData()) {
|
|
popData = data;
|
|
}
|
|
return std::shared_ptr<ItemInstance>(new ItemInstance(id, 1, popData));
|
|
}
|
|
|
|
int Tile::getResourceCountForLootBonus(int bonusLevel, Random* random) {
|
|
return getResourceCount(random);
|
|
}
|
|
|
|
bool Tile::canSurvive(Level* level, int x, int y, int z) { return true; }
|
|
|
|
void Tile::setPlacedBy(Level* level, int x, int y, int z,
|
|
std::shared_ptr<LivingEntity> by,
|
|
std::shared_ptr<ItemInstance> itemInstance) {}
|
|
|
|
void Tile::finalizePlacement(Level* level, int x, int y, int z, int data) {}
|
|
|
|
Tile* Tile::setDescriptionId(unsigned int id) {
|
|
this->descriptionId = id;
|
|
return this;
|
|
}
|
|
|
|
std::wstring Tile::getName() {
|
|
return L""; // I18n::get(getDescriptionId() + L".name");
|
|
}
|
|
|
|
unsigned int Tile::getDescriptionId(int iData /*= -1*/) {
|
|
return descriptionId;
|
|
}
|
|
|
|
Tile* Tile::setUseDescriptionId(unsigned int id) {
|
|
this->useDescriptionId = id;
|
|
return this;
|
|
}
|
|
|
|
unsigned int Tile::getUseDescriptionId() { return useDescriptionId; }
|
|
|
|
bool Tile::triggerEvent(Level* level, int x, int y, int z, int b0, int b1) {
|
|
return false;
|
|
}
|
|
|
|
bool Tile::isCollectStatistics() { return collectStatistics; }
|
|
|
|
Tile* Tile::setNotCollectStatistics() {
|
|
collectStatistics = false;
|
|
return this;
|
|
}
|
|
|
|
int Tile::getPistonPushReaction() { return material->getPushReaction(); }
|
|
|
|
// 4J - brought forward from 1.8.2
|
|
float Tile::getShadeBrightness(LevelSource* level, int x, int y, int z) {
|
|
return level->isSolidBlockingTile(x, y, z) ? 0.2f : 1.0f;
|
|
}
|
|
|
|
void Tile::fallOn(Level* level, int x, int y, int z,
|
|
std::shared_ptr<Entity> entity, float fallDistance) {}
|
|
|
|
int Tile::cloneTileId(Level* level, int x, int y, int z) { return id; }
|
|
|
|
int Tile::cloneTileData(Level* level, int x, int y, int z) {
|
|
return getSpawnResourcesAuxValue(level->getData(x, y, z));
|
|
}
|
|
|
|
void Tile::playerWillDestroy(Level* level, int x, int y, int z, int data,
|
|
std::shared_ptr<Player> player) {}
|
|
|
|
void Tile::onRemoving(Level* level, int x, int y, int z, int data) {}
|
|
|
|
void Tile::handleRain(Level* level, int x, int y, int z) {}
|
|
|
|
void Tile::levelTimeChanged(Level* level, int64_t delta, int64_t newTime) {}
|
|
|
|
bool Tile::useOwnCloneData() { return false; }
|
|
|
|
bool Tile::canInstantlyTick() { return true; }
|
|
|
|
bool Tile::dropFromExplosion(Explosion* explosion) { return true; }
|
|
|
|
bool Tile::isMatching(int id) { return this->id == id; }
|
|
|
|
bool Tile::isMatching(int tileIdA, int tileIdB) {
|
|
if (tileIdA == tileIdB) {
|
|
return true;
|
|
}
|
|
if (tileIdA == 0 || tileIdB == 0 || tiles[tileIdA] == NULL ||
|
|
tiles[tileIdB] == NULL) {
|
|
return false;
|
|
}
|
|
return tiles[tileIdA]->isMatching(tileIdB);
|
|
}
|
|
|
|
bool Tile::hasAnalogOutputSignal() { return false; }
|
|
|
|
int Tile::getAnalogOutputSignal(Level* level, int x, int y, int z, int dir) {
|
|
return Redstone::SIGNAL_NONE;
|
|
}
|
|
|
|
Tile* Tile::setIconName(const std::wstring& iconName) {
|
|
this->iconName = iconName;
|
|
return this;
|
|
}
|
|
|
|
std::wstring Tile::getIconName() {
|
|
return iconName.empty() ? L"MISSING_ICON_TILE_" + _toString<int>(id) +
|
|
L"_" + _toString<int>(descriptionId)
|
|
: iconName;
|
|
}
|
|
|
|
void Tile::registerIcons(IconRegister* iconRegister) {
|
|
icon = iconRegister->registerIcon(getIconName());
|
|
}
|
|
|
|
std::wstring Tile::getTileItemIconName() { return L""; }
|
|
|
|
Tile::SoundType::SoundType(eMATERIALSOUND_TYPE eMaterialSound, float volume,
|
|
float pitch, int iBreakSound, int iPlaceSound) {
|
|
this->eMaterialSound = eMaterialSound;
|
|
if (iBreakSound > -1) {
|
|
this->iBreakSound = iBreakSound;
|
|
} else {
|
|
switch (eMaterialSound) {
|
|
case eMaterialSoundType_STONE:
|
|
this->iBreakSound = eSoundType_DIG_STONE;
|
|
break;
|
|
case eMaterialSoundType_WOOD:
|
|
this->iBreakSound = eSoundType_DIG_WOOD;
|
|
break;
|
|
case eMaterialSoundType_GRAVEL:
|
|
this->iBreakSound = eSoundType_DIG_GRAVEL;
|
|
break;
|
|
case eMaterialSoundType_GRASS:
|
|
this->iBreakSound = eSoundType_DIG_GRASS;
|
|
break;
|
|
case eMaterialSoundType_METAL:
|
|
this->iBreakSound = eSoundType_DIG_STONE;
|
|
break;
|
|
case eMaterialSoundType_GLASS:
|
|
this->iBreakSound = eSoundType_RANDOM_GLASS;
|
|
break;
|
|
case eMaterialSoundType_CLOTH:
|
|
this->iBreakSound = eSoundType_DIG_CLOTH;
|
|
break;
|
|
case eMaterialSoundType_SAND:
|
|
this->iBreakSound = eSoundType_DIG_SAND;
|
|
break;
|
|
case eMaterialSoundType_SNOW:
|
|
this->iBreakSound = eSoundType_DIG_SNOW;
|
|
break;
|
|
case eMaterialSoundType_LADDER:
|
|
this->iBreakSound = eSoundType_DIG_WOOD;
|
|
break;
|
|
default:
|
|
app.DebugPrintf("NO BREAK SOUND!\n");
|
|
this->iBreakSound = -1;
|
|
break;
|
|
}
|
|
// this->breakSound = L"step." + this->name;
|
|
}
|
|
|
|
if (iPlaceSound > -1) {
|
|
this->iPlaceSound = iPlaceSound;
|
|
} else {
|
|
this->iPlaceSound = this->iBreakSound;
|
|
}
|
|
|
|
switch (eMaterialSound) {
|
|
case eMaterialSoundType_STONE:
|
|
this->iStepSound = eSoundType_STEP_STONE;
|
|
break;
|
|
case eMaterialSoundType_WOOD:
|
|
this->iStepSound = eSoundType_STEP_WOOD;
|
|
break;
|
|
case eMaterialSoundType_GRAVEL:
|
|
this->iStepSound = eSoundType_STEP_GRAVEL;
|
|
break;
|
|
case eMaterialSoundType_GRASS:
|
|
this->iStepSound = eSoundType_STEP_GRASS;
|
|
break;
|
|
case eMaterialSoundType_METAL:
|
|
this->iStepSound = eSoundType_STEP_METAL;
|
|
break;
|
|
case eMaterialSoundType_CLOTH:
|
|
this->iStepSound = eSoundType_STEP_CLOTH;
|
|
break;
|
|
case eMaterialSoundType_SAND:
|
|
this->iStepSound = eSoundType_STEP_SAND;
|
|
break;
|
|
case eMaterialSoundType_SNOW:
|
|
this->iStepSound = eSoundType_STEP_SNOW;
|
|
break;
|
|
case eMaterialSoundType_LADDER:
|
|
this->iStepSound = eSoundType_STEP_LADDER;
|
|
break;
|
|
default:
|
|
app.DebugPrintf("NO STEP SOUND!\n");
|
|
|
|
this->iStepSound = -1;
|
|
break;
|
|
}
|
|
|
|
// this->stepSound = L"step." + this->name;
|
|
this->volume = volume;
|
|
this->pitch = pitch;
|
|
}
|
|
|
|
float Tile::SoundType::getVolume() const { return volume; }
|
|
float Tile::SoundType::getPitch() const { return pitch; }
|
|
// wstring getBreakSound() const { return breakSound; }
|
|
// wstring getStepSound() const { return stepSound; }
|
|
int Tile::SoundType::getBreakSound() const { return iBreakSound; }
|
|
int Tile::SoundType::getStepSound() const { return iStepSound; }
|
|
int Tile::SoundType::getPlaceSound() const { return iPlaceSound; }
|
|
|
|
/*
|
|
4J: These are necessary on the PS3.
|
|
(and 4 and Vita).
|
|
*/
|
|
#if (defined __PS3__ || defined __ORBIS__ || defined __PSVITA__ || defined __linux__)
|
|
const int Tile::stone_Id;
|
|
const int Tile::grass_Id;
|
|
const int Tile::dirt_Id;
|
|
// 4
|
|
const int Tile::wood_Id;
|
|
const int Tile::sapling_Id;
|
|
const int Tile::unbreakable_Id;
|
|
const int Tile::water_Id;
|
|
const int Tile::calmWater_Id;
|
|
const int Tile::lava_Id;
|
|
const int Tile::calmLava_Id;
|
|
const int Tile::sand_Id;
|
|
const int Tile::gravel_Id;
|
|
const int Tile::goldOre_Id;
|
|
const int Tile::ironOre_Id;
|
|
const int Tile::coalOre_Id;
|
|
const int Tile::treeTrunk_Id;
|
|
const int Tile::leaves_Id;
|
|
const int Tile::sponge_Id;
|
|
const int Tile::glass_Id;
|
|
const int Tile::lapisOre_Id;
|
|
const int Tile::lapisBlock_Id;
|
|
const int Tile::dispenser_Id;
|
|
const int Tile::sandStone_Id;
|
|
// 25
|
|
const int Tile::bed_Id;
|
|
const int Tile::goldenRail_Id;
|
|
const int Tile::detectorRail_Id;
|
|
const int Tile::pistonStickyBase_Id;
|
|
const int Tile::web_Id;
|
|
const int Tile::tallgrass_Id;
|
|
const int Tile::deadBush_Id;
|
|
const int Tile::pistonBase_Id;
|
|
const int Tile::pistonExtensionPiece_Id;
|
|
const int Tile::wool_Id;
|
|
const int Tile::pistonMovingPiece_Id;
|
|
const int Tile::flower_Id;
|
|
const int Tile::rose_Id;
|
|
const int Tile::mushroom_brown_Id;
|
|
const int Tile::mushroom_red_Id;
|
|
const int Tile::goldBlock_Id;
|
|
const int Tile::ironBlock_Id;
|
|
const int Tile::stoneSlab_Id;
|
|
const int Tile::stoneSlabHalf_Id;
|
|
const int Tile::redBrick_Id;
|
|
const int Tile::tnt_Id;
|
|
const int Tile::bookshelf_Id;
|
|
const int Tile::mossyCobblestone_Id;
|
|
const int Tile::obsidian_Id;
|
|
const int Tile::torch_Id;
|
|
const int Tile::fire_Id;
|
|
const int Tile::mobSpawner_Id;
|
|
const int Tile::stairs_wood_Id;
|
|
const int Tile::chest_Id;
|
|
const int Tile::redStoneDust_Id;
|
|
const int Tile::diamondOre_Id;
|
|
const int Tile::diamondBlock_Id;
|
|
const int Tile::workBench_Id;
|
|
const int Tile::wheat_Id;
|
|
const int Tile::farmland_Id;
|
|
const int Tile::furnace_Id;
|
|
const int Tile::furnace_lit_Id;
|
|
const int Tile::sign_Id;
|
|
const int Tile::door_wood_Id;
|
|
const int Tile::ladder_Id;
|
|
const int Tile::rail_Id;
|
|
const int Tile::stairs_stone_Id;
|
|
const int Tile::wallSign_Id;
|
|
const int Tile::lever_Id;
|
|
const int Tile::pressurePlate_stone_Id;
|
|
const int Tile::door_iron_Id;
|
|
const int Tile::pressurePlate_wood_Id;
|
|
const int Tile::redStoneOre_Id;
|
|
const int Tile::redStoneOre_lit_Id;
|
|
const int Tile::redstoneTorch_off_Id;
|
|
const int Tile::redstoneTorch_on_Id;
|
|
const int Tile::button_stone_Id;
|
|
const int Tile::topSnow_Id;
|
|
const int Tile::ice_Id;
|
|
const int Tile::snow_Id;
|
|
const int Tile::cactus_Id;
|
|
const int Tile::clay_Id;
|
|
const int Tile::reeds_Id;
|
|
const int Tile::jukebox_Id;
|
|
const int Tile::fence_Id;
|
|
const int Tile::pumpkin_Id;
|
|
const int Tile::netherRack_Id;
|
|
const int Tile::soulsand_Id;
|
|
const int Tile::glowstone_Id;
|
|
const int Tile::portalTile_Id;
|
|
const int Tile::litPumpkin_Id;
|
|
const int Tile::cake_Id;
|
|
const int Tile::diode_off_Id;
|
|
const int Tile::diode_on_Id;
|
|
const int Tile::stained_glass_Id;
|
|
const int Tile::trapdoor_Id;
|
|
const int Tile::monsterStoneEgg_Id;
|
|
const int Tile::stoneBrick_Id;
|
|
const int Tile::hugeMushroom_brown_Id;
|
|
const int Tile::hugeMushroom_red_Id;
|
|
const int Tile::ironFence_Id;
|
|
const int Tile::thinGlass_Id;
|
|
const int Tile::melon_Id;
|
|
const int Tile::pumpkinStem_Id;
|
|
const int Tile::melonStem_Id;
|
|
const int Tile::vine_Id;
|
|
const int Tile::fenceGate_Id;
|
|
const int Tile::stairs_bricks_Id;
|
|
const int Tile::stairs_stoneBrick_Id;
|
|
const int Tile::mycel_Id;
|
|
const int Tile::waterLily_Id;
|
|
const int Tile::netherBrick_Id;
|
|
const int Tile::netherFence_Id;
|
|
const int Tile::stairs_netherBricks_Id;
|
|
const int Tile::netherStalk_Id;
|
|
const int Tile::enchantTable_Id;
|
|
const int Tile::brewingStand_Id;
|
|
const int Tile::cauldron_Id;
|
|
const int Tile::endPortalTile_Id;
|
|
const int Tile::endPortalFrameTile_Id;
|
|
const int Tile::endStone_Id;
|
|
const int Tile::dragonEgg_Id;
|
|
const int Tile::redstoneLight_Id;
|
|
const int Tile::redstoneLight_lit_Id;
|
|
const int Tile::woodSlab_Id;
|
|
const int Tile::woodSlabHalf_Id;
|
|
const int Tile::cocoa_Id;
|
|
const int Tile::stairs_sandstone_Id;
|
|
const int Tile::stairs_sprucewood_Id;
|
|
const int Tile::stairs_birchwood_Id;
|
|
const int Tile::stairs_junglewood_Id;
|
|
const int Tile::emeraldOre_Id;
|
|
const int Tile::enderChest_Id;
|
|
const int Tile::tripWireSource_Id;
|
|
const int Tile::tripWire_Id;
|
|
const int Tile::emeraldBlock_Id;
|
|
const int Tile::cobbleWall_Id;
|
|
const int Tile::flowerPot_Id;
|
|
const int Tile::carrots_Id;
|
|
const int Tile::potatoes_Id;
|
|
const int Tile::anvil_Id;
|
|
const int Tile::button_wood_Id;
|
|
const int Tile::skull_Id;
|
|
const int Tile::netherQuartz_Id;
|
|
const int Tile::quartzBlock_Id;
|
|
const int Tile::stairs_quartz_Id;
|
|
const int Tile::woolCarpet_Id;
|
|
#endif
|