feat: LoadCreateJoinMenu1080 (alfin wn)

This commit is contained in:
Frcoxd 2026-04-20 23:32:59 -03:00
commit 4b8ce04efb
35 changed files with 537 additions and 289 deletions

View file

@ -159,6 +159,7 @@ void IUIScene_CreativeMenu::staticCtor()
ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::SMOOTHBRICK_SLAB) ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::SMOOTHBRICK_SLAB)
ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::NETHERBRICK_SLAB) ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::NETHERBRICK_SLAB)
ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::QUARTZ_SLAB) ITEM_AUX(Tile::stoneSlabHalf_Id,StoneSlabTile::QUARTZ_SLAB)
ITEM_AUX(Tile::stone_slab2_Id ,StoneSlabTile2::RED_SANDSTONE_SLAB)
ITEM(Tile::stairs_wood_Id) ITEM(Tile::stairs_wood_Id)
ITEM(Tile::stairs_birchwood_Id) ITEM(Tile::stairs_birchwood_Id)
ITEM(Tile::stairs_sprucewood_Id) ITEM(Tile::stairs_sprucewood_Id)

View file

@ -6,7 +6,7 @@
#include "../../../Minecraft.World/net.minecraft.world.entity.ai.attributes.h" #include "../../../Minecraft.World/net.minecraft.world.entity.ai.attributes.h"
#include "../../../Minecraft.World/net.minecraft.world.entity.monster.h" #include "../../../Minecraft.World/net.minecraft.world.entity.monster.h"
#include "../../MultiPlayerLevel.h" #include "../../MultiPlayerLevel.h"
#include "../../../Minecraft.World\LevelData.h" #include "../../../Minecraft.World/LevelData.h"
#include "IUIScene_HUD.h" #include "IUIScene_HUD.h"
#include "UI.h" #include "UI.h"

View file

@ -2,7 +2,7 @@
#include <vector> #include <vector>
#include "IUIScene_WritingBookMenu.h" #include "IUIScene_WritingBookMenu.h"
#include "MultiPlayerLocalPlayer.h" #include "MultiPlayerLocalPlayer.h"
#include "Common\UI\UI.h" #include "Common/UI/UI.h"
#include "ClientConnection.h" #include "ClientConnection.h"
#include "../Minecraft.World/CustomPayloadPacket.h" #include "../Minecraft.World/CustomPayloadPacket.h"

View file

@ -1,12 +1,12 @@
#include "stdafx.h" #include "stdafx.h"
#include "Common\UI\UI.h" #include "Common/UI/UI.h"
#include "UIScene_BookAndQuillMenu.h" #include "UIScene_BookAndQuillMenu.h"
#include "PlayerConnection.h" #include "PlayerConnection.h"
#include "LocalPlayer.h" #include "LocalPlayer.h"
#include "ClientConnection.h" #include "ClientConnection.h"
#include "..\Minecraft.Client\PlayerList.h" #include "../Minecraft.Client/PlayerList.h"
#include "..\Minecraft.Client\ServerPlayer.h" #include "../Minecraft.Client/ServerPlayer.h"
#include "..\Minecraft.Client\MultiPlayerLocalPlayer.h" #include "../Minecraft.Client/MultiPlayerLocalPlayer.h"
UIScene_BookAndQuillMenu::UIScene_BookAndQuillMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) UIScene_BookAndQuillMenu::UIScene_BookAndQuillMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
{ {

View file

@ -2,7 +2,7 @@
#include "XUI_Chat.h" #include "XUI_Chat.h"
#include "../../Minecraft.h" #include "../../Minecraft.h"
#include "../../Gui.h" #include "../../Gui.h"
#include "../../../Minecraft.World\ArabicShaping.h" #include "../../../Minecraft.World/ArabicShaping.h"
HRESULT CScene_Chat::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) HRESULT CScene_Chat::OnInit( XUIMessageInit* pInitData, BOOL& bHandled )
{ {

View file

@ -1,7 +1,7 @@
#include "stdafx.h" #include "stdafx.h"
#include "EndermiteModel.h" #include "EndermiteModel.h"
#include "Cube.h" #include "Cube.h"
#include "..\Minecraft.World\Mth.h" #include "../Minecraft.World/Mth.h"
#include "ModelPart.h" #include "ModelPart.h"

View file

@ -1,6 +1,6 @@
#include "stdafx.h" #include "stdafx.h"
#include "EndermiteRenderer.h" #include "EndermiteRenderer.h"
#include "..\Minecraft.World\net.minecraft.world.entity.monster.h" #include "../Minecraft.World/net.minecraft.world.entity.monster.h"
#include "EndermiteModel.h" #include "EndermiteModel.h"
ResourceLocation EndermiteRenderer::ENDERMITE_LOCATION(TN_MOB_ENDERMITE); ResourceLocation EndermiteRenderer::ENDERMITE_LOCATION(TN_MOB_ENDERMITE);

View file

@ -1,8 +1,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "GuardianModel.h" #include "GuardianModel.h"
#include "..\Minecraft.World\Mth.h" #include "../Minecraft.World/Mth.h"
#include "ModelPart.h" #include "ModelPart.h"
#include "..\Minecraft.World\Guardian.h" #include "../Minecraft.World/Guardian.h"

View file

@ -1,10 +1,10 @@
#include "stdafx.h" #include "stdafx.h"
#include "GuardianRenderer.h" #include "GuardianRenderer.h"
#include "GuardianModel.h" #include "GuardianModel.h"
#include "..\Minecraft.World\Mth.h" #include "../Minecraft.World/Mth.h"
#include "..\Minecraft.World\net.minecraft.world.entity.animal.h" #include "../Minecraft.World/net.minecraft.world.entity.animal.h"
#include "../Minecraft.World/Guardian.h" #include "../Minecraft.World/Guardian.h"
#include "..\Minecraft.World\Level.h" #include "../Minecraft.World/Level.h"
#include "Tesselator.h" #include "Tesselator.h"

View file

@ -17,7 +17,7 @@
#if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD) #if defined(_WINDOWS64) && defined(MINECRAFT_SERVER_BUILD)
#include "../Minecraft.Server/ServerLogManager.h" #include "../Minecraft.Server/ServerLogManager.h"
#include "../Minecraft.Server/Access/Access.h" #include "../Minecraft.Server/Access/Access.h"
#include "..\Minecraft.Server/Security/SecurityConfig.h" #include "../Minecraft.Server/Security/SecurityConfig.h"
#include "../Minecraft.World/Socket.h" #include "../Minecraft.World/Socket.h"
#include <FourKitBridge.h> #include <FourKitBridge.h>
#include <Windows64/Network/WinsockNetLayer.h> #include <Windows64/Network/WinsockNetLayer.h>

View file

@ -34,7 +34,7 @@
#include "../Minecraft.World/GenericStats.h" #include "../Minecraft.World/GenericStats.h"
#include "../Minecraft.World/JavaMath.h" #include "../Minecraft.World/JavaMath.h"
#include "..\Minecraft.World\ListTag.h" #include "../Minecraft.World/ListTag.h"
// 4J Added // 4J Added
#include "../Minecraft.World/net.minecraft.world.item.crafting.h" #include "../Minecraft.World/net.minecraft.world.item.crafting.h"
#include "Options.h" #include "Options.h"

View file

@ -1,7 +1,7 @@
#include "stdafx.h" #include "stdafx.h"
#include "RabbitModel.h" #include "RabbitModel.h"
#include "ModelPart.h" #include "ModelPart.h"
#include "..\Minecraft.World\Mth.h" #include "../Minecraft.World/Mth.h"
#include "../Minecraft.World/Rabbit.h" #include "../Minecraft.World/Rabbit.h"
#define PI 3.14159265358979323846f #define PI 3.14159265358979323846f

View file

@ -9390,4 +9390,7 @@ All Ender Chests in a world are linked. Items placed into an Ender Chest are acc
<data name="IDS_ENCHANTMENT_LUCK_OF_THE_SEA"> <data name="IDS_ENCHANTMENT_LUCK_OF_THE_SEA">
<value>Luck of the Sea</value> <value>Luck of the Sea</value>
</data> </data>
<data name="IDS_TILE_STONESLAB_REDSAND">
<value>Red Sandstone Slab</value>
</data>
</root> </root>

View file

@ -166,11 +166,11 @@ public enum Material
DROPPER = 158, DROPPER = 158,
STAINED_CLAY = 159, STAINED_CLAY = 159,
STAINED_GLASS_PANE = 160, STAINED_GLASS_PANE = 160,
LEAVES2 = 161, LEAVES_2 = 161,
LOG2 = 162, LOG_2 = 162,
ACACIA_WOOD_STAIRS = 163, ACACIA_STAIRS = 163,
DARK_OAK_WOOD_STAIRS = 164, DARK_OAK_STAIRS = 164,
IRON_TRAP_DOOR = 167, IRON_TRAPDOOR = 167,
PRISMARINE = 168, PRISMARINE = 168,
SEA_LANTERN = 169, SEA_LANTERN = 169,
HAY_BLOCK = 170, HAY_BLOCK = 170,
@ -178,10 +178,12 @@ public enum Material
HARD_CLAY = 172, HARD_CLAY = 172,
COAL_BLOCK = 173, COAL_BLOCK = 173,
PACKED_ICE = 174, PACKED_ICE = 174,
TALL_GRASS2 = 175, DOUBLE_PLANT = 175,
INVERTED_DAYLIGHT_DETECTOR = 178, DAYLIGHT_DETECTOR_INVERTED = 178,
RED_SANDSTONE = 179, RED_SANDSTONE = 179,
RED_SANDSTONE_STAIRS = 180, RED_SANDSTONE_STAIRS = 180,
DOUBLE_STONE_SLAB2 = 181,
STONE_SLAB = 182,
SPRUCE_FENCE_GATE = 183, SPRUCE_FENCE_GATE = 183,
BIRCH_FENCE_GATE = 184, BIRCH_FENCE_GATE = 184,
JUNGLE_FENCE_GATE = 185, JUNGLE_FENCE_GATE = 185,
@ -192,6 +194,11 @@ public enum Material
JUNGLE_FENCE = 190, JUNGLE_FENCE = 190,
DARK_OAK_FENCE = 191, DARK_OAK_FENCE = 191,
ACACIA_FENCE = 192, ACACIA_FENCE = 192,
SPRUCE_DOOR = 193,
BIRCH_DOOR = 194,
JUNGLE_DOOR = 195,
ACACIA_DOOR = 196,
DARK_OAK_DOOR = 197,
// items // items
@ -349,9 +356,9 @@ public enum Material
HOPPER_MINECART = 408, HOPPER_MINECART = 408,
PRISMARINE_SHARD = 409, PRISMARINE_SHARD = 409,
PRISMARINE_CRYSTAL = 410, PRISMARINE_CRYSTAL = 410,
RAW_RABBIT = 411, RABBIT = 411,
COOKED_RABBIT = 412, COOKED_RABBIT = 412,
RABBITS_FOOT = 414, RABBIT_FOOT = 414,
RABBIT_HIDE = 415, RABBIT_HIDE = 415,
ARMOR_STAND = 416, ARMOR_STAND = 416,
IRON_BARDING = 417, IRON_BARDING = 417,
@ -359,13 +366,13 @@ public enum Material
DIAMOND_BARDING = 419, DIAMOND_BARDING = 419,
LEASH = 420, LEASH = 420,
NAME_TAG = 421, NAME_TAG = 421,
RAW_MUTTON = 423, MUTTON = 423,
COOKED_MUTTON = 424, COOKED_MUTTON = 424,
SPRUCE_DOOR = 427, SPRUCE_DOOR_ITEM = 427,
BIRCH_DOOR = 428, BIRCH_DOOR_ITEM = 428,
JUNGLE_DOOR = 429, JUNGLE_DOOR_ITEM = 429,
ACACIA_DOOR = 430, ACACIA_DOOR_ITEM = 430,
DARK_OAK_DOOR = 431, DARK_OAK_DOOR_ITEM = 431,
GOLD_RECORD = 2256, GOLD_RECORD = 2256,
GREEN_RECORD = 2257, GREEN_RECORD = 2257,
RECORD_3 = 2258, RECORD_3 = 2258,

View file

@ -12,7 +12,7 @@
#include "SharedMonsterAttributes.h" #include "SharedMonsterAttributes.h"
#include "ArmorStand.h" #include "ArmorStand.h"
#include "BlockPos.h" #include "BlockPos.h"
#include "..\Minecraft.Client\ServerLevel.h" #include "../Minecraft.Client/ServerLevel.h"
#include "ParticleTypes.h" #include "ParticleTypes.h"
#include "Random.h" #include "Random.h"
#include "AABB.h" #include "AABB.h"

View file

@ -6,8 +6,8 @@
#include "net.minecraft.world.item.h" #include "net.minecraft.world.item.h"
#include "Mth.h" #include "Mth.h"
#include "ArmorStandItem.h" #include "ArmorStandItem.h"
#include "..\Minecraft.World\ArmorStand.h" #include "../Minecraft.World/ArmorStand.h"
#include "..\Minecraft.World\Entity.h" #include "../Minecraft.World/Entity.h"
ArmorStandItem::ArmorStandItem(int id) : Item(id) ArmorStandItem::ArmorStandItem(int id) : Item(id)

View file

@ -5,7 +5,7 @@
#include "net.minecraft.world.entity.ai.attributes.h" #include "net.minecraft.world.entity.ai.attributes.h"
#include "net.minecraft.world.entity.monster.h" #include "net.minecraft.world.entity.monster.h"
#include "net.minecraft.h" #include "net.minecraft.h"
#include "..\Minecraft.Client\Textures.h" #include "../Minecraft.Client/Textures.h"
#include "Endermite.h" #include "Endermite.h"
#include "SoundTypes.h" #include "SoundTypes.h"
#include "Random.h" #include "Random.h"

View file

@ -21,4 +21,9 @@ const int Facing::STEP_Z[6] =
0, 0, -1, 1, 0, 0 0, 0, -1, 1, 0, 0
}; };
const wstring Facing::NAMES[] = {L"DOWN", L"UP", L"NORTH", L"SOUTH", L"WEST", L"EAST"}; const wstring Facing::NAMES[] = {L"DOWN", L"UP", L"NORTH", L"SOUTH", L"WEST", L"EAST"};
int Facing::getOpposite(int facing)
{
return OPPOSITE_FACING[facing];
}

View file

@ -16,4 +16,5 @@ public:
static const int STEP_Z[6]; static const int STEP_Z[6];
static const wstring NAMES[]; static const wstring NAMES[];
static int getOpposite(int facing);
}; };

View file

@ -11,9 +11,9 @@
#include "net.minecraft.world.damagesource.h" #include "net.minecraft.world.damagesource.h"
#include "SharedConstants.h" #include "SharedConstants.h"
#include "Guardian.h" #include "Guardian.h"
#include "..\Minecraft.Client\Textures.h" #include "../Minecraft.Client/Textures.h"
#include "..\Minecraft.World\Mth.h" #include "../Minecraft.World/Mth.h"
#include "..\Minecraft.World\net.minecraft.world.entity.animal.h" #include "../Minecraft.World/net.minecraft.world.entity.animal.h"
#include "MobEffect.h" #include "MobEffect.h"
#include "MobEffectInstance.h" #include "MobEffectInstance.h"

View file

@ -1,152 +1,172 @@
#include "stdafx.h" #include "stdafx.h"
#include "HalfSlabTile.h" #include "HalfSlabTile.h"
#include "net.minecraft.world.level.h" #include "net.minecraft.world.level.h"
#include "net.minecraft.world.level.biome.h" #include "net.minecraft.world.level.tile.h"
#include "net.minecraft.world.item.h" #include "net.minecraft.h"
#include "net.minecraft.stats.h"
#include "Facing.h" #include "Facing.h"
HalfSlabTile::HalfSlabTile(int id, Material *material)
HalfSlabTile::HalfSlabTile(int id, bool fullSize, Material *material) : Tile(id, material, fullSize) : Tile(id, material, true)
{ {
this->fullSize = fullSize;
Tile::lightBlock[id] = 0xFF;
if (fullSize)
{
solid[id] = true;
}
else
{
setShape(0, 0, 0, 1, 0.5f, 1);
}
setLightBlock(255);
} }
void HalfSlabTile::updateShape(LevelSource *level, int x, int y, int z, int forceData, shared_ptr<TileEntity> forceEntity) // 4J added forceData, forceEntity param void HalfSlabTile::DerivedInit()
{ {
if (fullSize)
{ if (!isFullSize())
setShape(0, 0, 0, 1, 1, 1); setShape(0.0f, 0.0f, 0.0f, 1.0f, 0.5f, 1.0f);
} else
else Tile::solid[id] = true;
{
bool upper = (level->getData(x, y, z) & TOP_SLOT_BIT) != 0;
if (upper)
{
setShape(0, 0.5f, 0, 1, 1, 1);
}
else
{
setShape(0, 0, 0, 1, 0.5f, 1);
}
}
} }
void HalfSlabTile::updateDefaultShape() void HalfSlabTile::updateDefaultShape()
{ {
if (fullSize)
{ if (isFullSize())
setShape(0, 0, 0, 1, 1, 1); setShape(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
} else
else setShape(0.0f, 0.0f, 0.0f, 1.0f, 0.5f, 1.0f);
{
setShape(0, 0, 0, 1, 0.5f, 1);
}
} }
void HalfSlabTile::addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, shared_ptr<Entity> source) void HalfSlabTile::updateShape(
LevelSource *level, int x, int y, int z,
int forceData, shared_ptr<TileEntity> forceEntity)
{ {
updateShape(level, x, y, z);
Tile::addAABBs(level, x, y, z, box, boxes, source); if (isFullSize())
{
setShape(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f);
return;
}
int data = (forceData >= 0) ? forceData : level->getData(x, y, z);
bool isUpper = (data & TOP_SLOT_BIT) != 0;
if (isUpper)
setShape(0.0f, 0.5f, 0.0f, 1.0f, 1.0f, 1.0f);
else
setShape(0.0f, 0.0f, 0.0f, 1.0f, 0.5f, 1.0f);
} }
bool HalfSlabTile::isSolidRender(bool isServerLevel) void HalfSlabTile::addAABBs(
Level *level, int x, int y, int z,
AABB *box, AABBList *boxes, shared_ptr<Entity> source)
{ {
return fullSize;
updateShape(level, x, y, z);
Tile::addAABBs(level, x, y, z, box, boxes, source);
} }
int HalfSlabTile::getPlacedOnFaceDataValue(Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, int itemValue) bool HalfSlabTile::isSolidRender(bool isServerLevel)
{ {
if (fullSize) return itemValue;
return isFullSize() != 0;
if (face == Facing::DOWN || (face != Facing::UP && clickY > 0.5))
{
return itemValue | TOP_SLOT_BIT;
}
return itemValue;
} }
int HalfSlabTile::getResourceCount(Random *random) bool HalfSlabTile::isSilkTouchable()
{ {
if (fullSize)
{ return false;
return 2;
}
return 1;
} }
int HalfSlabTile::getSpawnResourcesAuxValue(int data) int HalfSlabTile::getResourceCount(Random *random)
{ {
return data & TYPE_MASK;
return isFullSize() ? 2 : 1;
} }
bool HalfSlabTile::isCubeShaped() bool HalfSlabTile::isCubeShaped()
{ {
return fullSize;
return isFullSize() != 0;
} }
bool HalfSlabTile::shouldRenderFace(LevelSource *level, int x, int y, int z, int face) bool HalfSlabTile::shouldRenderFace(
LevelSource *level, int x, int y, int z, int face)
{ {
if (fullSize) return Tile::shouldRenderFace(level, x, y, z, face);
if (isFullSize())
return Tile::shouldRenderFace(level, x, y, z, face);
if (face != Facing::UP && face != Facing::DOWN && !Tile::shouldRenderFace(level, x, y, z, face))
{ if (face != Facing::UP && face != Facing::DOWN
return false; && !Tile::shouldRenderFace(level, x, y, z, face))
} return false;
int ox = x, oy = y, oz = z; int oppFace = Facing::getOpposite(face);
ox += Facing::STEP_X[Facing::OPPOSITE_FACING[face]]; int nx = x, ny = y, nz = z;
oy += Facing::STEP_Y[Facing::OPPOSITE_FACING[face]];
oz += Facing::STEP_Z[Facing::OPPOSITE_FACING[face]]; if (oppFace == Facing::DOWN) ny--;
if (oppFace == Facing::UP) ny++;
if (oppFace == Facing::NORTH) nz--;
if (oppFace == Facing::SOUTH) nz++;
if (oppFace == Facing::WEST) nx--;
if (oppFace == Facing::EAST) nx++;
boolean isUpper = (level->getData(ox, oy, oz) & TOP_SLOT_BIT) != 0; int currentData = level->getData(x, y, z);
if (isUpper) int neighborData = level->getData(nx, ny, nz);
{ int currentTile = level->getTile(x, y, z);
if (face == Facing::DOWN) return true; int neighborTile = level->getTile(nx, ny, nz);
if (face == Facing::UP && Tile::shouldRenderFace(level, x, y, z, face)) return true;
return !(isHalfSlab(level->getTile(x, y, z)) && (level->getData(x, y, z) & TOP_SLOT_BIT) != 0); bool currentIsUpper = (currentData & TOP_SLOT_BIT) != 0;
} bool neighborIsUpper = (neighborData & TOP_SLOT_BIT) != 0;
else
{ bool currentIsSlab = isHalfSlab(currentTile);
if (face == Facing::UP) return true; bool neighborIsSlab = isHalfSlab(neighborTile);
if (face == Facing::DOWN && Tile::shouldRenderFace(level, x, y, z, face)) return true;
return !(isHalfSlab(level->getTile(x, y, z)) && (level->getData(x, y, z) & TOP_SLOT_BIT) == 0);
} if (neighborIsSlab && neighborIsUpper)
{
if (face == Facing::DOWN)
return true;
if (face == Facing::UP && !Tile::shouldRenderFace(level, x, y, z, face))
return currentIsSlab && !currentIsUpper ? false : true;
return !(currentIsSlab && currentIsUpper);
}
if (face == Facing::UP || (face == Facing::DOWN
&& Tile::shouldRenderFace(level, x, y, z, face)))
return true;
return !(currentIsSlab && !currentIsUpper);
} }
bool HalfSlabTile::isHalfSlab(int tileId) int HalfSlabTile::getSpawnResourcesAuxValue(int data)
{ {
return tileId == Tile::stoneSlabHalf_Id || tileId == Tile::woodSlabHalf_Id; return data & TYPE_MASK;
} }
int HalfSlabTile::cloneTileData(Level *level, int x, int y, int z) int HalfSlabTile::cloneTileData(Level *level, int x, int y, int z)
{ {
return Tile::cloneTileData(level, x, y, z) & TYPE_MASK;
return level->getData(x, y, z) & TYPE_MASK;
} }
int HalfSlabTile::cloneTileId(Level *level, int x, int y, int z) int HalfSlabTile::cloneTileId(Level *level, int x, int y, int z)
{ {
if (isHalfSlab(id)) return id;
{ }
return id;
} int HalfSlabTile::getPlacedOnFaceDataValue(
if (id == Tile::stoneSlab_Id) Level *level, int x, int y, int z,
{ int face, float clickX, float clickY, float clickZ,
return Tile::stoneSlabHalf_Id; int itemValue)
} {
if (id == Tile::woodSlab_Id)
{ if (face == Facing::DOWN)
return Tile::woodSlabHalf_Id; return itemValue | TOP_SLOT_BIT;
} if (face == Facing::UP)
return Tile::stoneSlabHalf_Id; return itemValue;
return (clickY > 0.5f) ? (itemValue | TOP_SLOT_BIT) : itemValue;
}
bool HalfSlabTile::isHalfSlab(int tileId)
{
if (tileId <= 0 || Tile::tiles[tileId] == nullptr)
return false;
return dynamic_cast<HalfSlabTile *>(Tile::tiles[tileId]) != nullptr
&& !Tile::tiles[tileId]->isCubeShaped();
} }

View file

@ -1,33 +1,57 @@
#pragma once #pragma once
#include "Tile.h" #include "Tile.h"
class HalfSlabTile : public Tile
class HalfSlabTile : public Tile
{ {
public: public:
static const int TYPE_MASK = 7; static const int TYPE_MASK = 7;
static const int TOP_SLOT_BIT = 8; static const int TOP_SLOT_BIT = 8;
protected:
bool fullSize; enum class Half
{
TOP,
BOTTOM
};
public: public:
HalfSlabTile(int id, bool fullSize, Material *material); HalfSlabTile(int id, Material *material);
virtual void updateShape(LevelSource *level, int x, int y, int z, int forceData = -1, shared_ptr<TileEntity> forceEntity = shared_ptr<TileEntity>()); // 4J added forceData, forceEntity param
virtual void updateDefaultShape(); virtual void DerivedInit();
virtual void addAABBs(Level *level, int x, int y, int z, AABB *box, AABBList *boxes, shared_ptr<Entity> source);
virtual bool isSolidRender(bool isServerLevel); virtual int isFullSize() = 0;
virtual int getPlacedOnFaceDataValue(Level *level, int x, int y, int z, int face, float clickX, float clickY, float clickZ, int itemValue);
virtual int getResourceCount(Random *random); virtual void updateShape(
virtual int getSpawnResourcesAuxValue(int data); LevelSource *level, int x, int y, int z,
virtual bool isCubeShaped(); int forceData = -1,
virtual bool shouldRenderFace(LevelSource *level, int x, int y, int z, int face); shared_ptr<TileEntity> forceEntity = shared_ptr<TileEntity>()) override;
virtual void updateDefaultShape() override;
virtual void addAABBs(
Level *level, int x, int y, int z,
AABB *box, AABBList *boxes,
shared_ptr<Entity> source) override;
virtual bool isSolidRender(bool isServerLevel = false) override;
virtual bool isSilkTouchable() override;
virtual int getPlacedOnFaceDataValue(
Level *level, int x, int y, int z,
int face, float clickX, float clickY, float clickZ,
int itemValue) override;
virtual int getResourceCount(Random *random) override;
virtual int getSpawnResourcesAuxValue(int data) override;
virtual bool isCubeShaped() override;
virtual bool shouldRenderFace(
LevelSource *level, int x, int y, int z, int face) override;
virtual int cloneTileData(Level *level, int x, int y, int z) override;
virtual int cloneTileId(Level *level, int x, int y, int z) override;
virtual int getAuxName(int auxValue) = 0;
private: private:
static bool isHalfSlab(int tileId); static bool isHalfSlab(int tileId);
public:
virtual int getAuxName(int auxValue) = 0;
virtual int cloneTileData(Level *level, int x, int y, int z);
virtual int cloneTileId(Level *level, int x, int y, int z);
}; };

View file

@ -411,6 +411,14 @@ Recipes::Recipes()
L'#', Tile::sandStone, L'#', Tile::sandStone,
L'S'); L'S');
addShapedRecipy(new ItemInstance(Tile::stairs_red_sandstone, 4), //
L"sssctg",
L"# ", //
L"## ", //
L"###", //
L'#', Tile::red_sandstone,
L'S');
addShapedRecipy(new ItemInstance(Tile::woodStairsBirch, 4), // addShapedRecipy(new ItemInstance(Tile::woodStairsBirch, 4), //
L"sssczg", L"sssczg",
@ -555,6 +563,12 @@ Recipes::Recipes()
L'#', Tile::sandStone, L'#', Tile::sandStone,
L'S'); L'S');
addShapedRecipy(new ItemInstance(Tile::stoneSlab2Half, 6, StoneSlabTile2::RED_SANDSTONE_SLAB), //
L"sctg",
L"###", //
L'#', Tile::red_sandstone,
L'S');
addShapedRecipy(new ItemInstance(Tile::stoneSlabHalf, 6, StoneSlabTile::STONE_SLAB), // addShapedRecipy(new ItemInstance(Tile::stoneSlabHalf, 6, StoneSlabTile::STONE_SLAB), //
L"sctg", L"sctg",

View file

@ -5,80 +5,78 @@
#include "net.minecraft.world.h" #include "net.minecraft.world.h"
#include "StoneSlabTile.h" #include "StoneSlabTile.h"
const unsigned int StoneSlabTile::SLAB_NAMES[SLAB_NAMES_LENGTH] = {
IDS_TILE_STONESLAB_STONE,
IDS_TILE_STONESLAB_SAND,
IDS_TILE_STONESLAB_WOOD,
IDS_TILE_STONESLAB_COBBLE,
IDS_TILE_STONESLAB_BRICK,
IDS_TILE_STONESLAB_SMOOTHBRICK,
IDS_TILE_STONESLAB_NETHERBRICK,
IDS_TILE_STONESLAB_QUARTZ,
};
const unsigned int StoneSlabTile::SLAB_NAMES[SLAB_NAMES_LENGTH] = { IDS_TILE_STONESLAB_STONE, StoneSlabTile::StoneSlabTile(int id)
IDS_TILE_STONESLAB_SAND, : HalfSlabTile(id, Material::stone)
IDS_TILE_STONESLAB_WOOD,
IDS_TILE_STONESLAB_COBBLE,
IDS_TILE_STONESLAB_BRICK,
IDS_TILE_STONESLAB_SMOOTHBRICK,
IDS_TILE_STONESLAB_NETHERBRICK,
IDS_TILE_STONESLAB_QUARTZ,
};
StoneSlabTile::StoneSlabTile(int id, bool fullSize) : HalfSlabTile(id, fullSize, Material::stone)
{ {
} }
Icon *StoneSlabTile::getTexture(int face, int data) Icon *StoneSlabTile::getTexture(int face, int data)
{ {
int type = data & TYPE_MASK; int type = data & TYPE_MASK;
if (fullSize && (data & TOP_SLOT_BIT) != 0)
{ if (isFullSize() && (data & TOP_SLOT_BIT) != 0)
face = Facing::UP; face = Facing::UP;
}
switch(type) switch (type)
{ {
case STONE_SLAB: case STONE_SLAB:
if (face == Facing::UP || face == Facing::DOWN) return icon; if (face == Facing::UP || face == Facing::DOWN) return icon;
return iconSide; return iconSide;
break; case SAND_SLAB:
case SAND_SLAB: return Tile::sandStone->getTexture(face);
return Tile::sandStone->getTexture(face); case WOOD_SLAB:
case WOOD_SLAB: return Tile::wood->getTexture(face);
return Tile::wood->getTexture(face); case COBBLESTONE_SLAB:
case COBBLESTONE_SLAB: return Tile::cobblestone->getTexture(face);
return Tile::cobblestone->getTexture(face); case BRICK_SLAB:
case BRICK_SLAB: return Tile::redBrick->getTexture(face);
return Tile::redBrick->getTexture(face); case SMOOTHBRICK_SLAB:
case SMOOTHBRICK_SLAB: return Tile::stoneBrick->getTexture(face, SmoothStoneBrickTile::TYPE_DEFAULT);
return Tile::stoneBrick->getTexture(face, SmoothStoneBrickTile::TYPE_DEFAULT); case NETHERBRICK_SLAB:
case NETHERBRICK_SLAB: return Tile::netherBrick->getTexture(Facing::UP);
return Tile::netherBrick->getTexture(Facing::UP); case QUARTZ_SLAB:
case QUARTZ_SLAB: return Tile::quartzBlock->getTexture(face);
return Tile::quartzBlock->getTexture(face); }
}
return icon;
return icon;
} }
void StoneSlabTile::registerIcons(IconRegister *iconRegister) void StoneSlabTile::registerIcons(IconRegister *iconRegister)
{ {
icon = iconRegister->registerIcon(L"stoneslab_top"); icon = iconRegister->registerIcon(L"stoneslab_top");
iconSide = iconRegister->registerIcon(L"stoneslab_side"); iconSide = iconRegister->registerIcon(L"stoneslab_side");
} }
int StoneSlabTile::getResource(int data, Random *random, int playerBonusLevel) int StoneSlabTile::getResource(int data, Random *random, int playerBonusLevel)
{ {
return Tile::stoneSlabHalf_Id; return Tile::stoneSlabHalf_Id;
} }
unsigned int StoneSlabTile::getDescriptionId(int iData /*= -1*/) unsigned int StoneSlabTile::getDescriptionId(int iData)
{ {
if(iData < 0 ) iData = 0; if (iData < 0) iData = 0;
return StoneSlabTile::SLAB_NAMES[iData]; return StoneSlabTile::SLAB_NAMES[iData];
} }
int StoneSlabTile::getAuxName(int auxValue) int StoneSlabTile::getAuxName(int auxValue)
{ {
if (auxValue < 0 || auxValue >= SLAB_NAMES_LENGTH) if (auxValue < 0 || auxValue >= SLAB_NAMES_LENGTH)
{ auxValue = 0;
auxValue = 0; return SLAB_NAMES[auxValue];//super.getDescriptionId() + "." + SLAB_NAMES[auxValue];
}
return SLAB_NAMES[auxValue];//super.getDescriptionId() + "." + SLAB_NAMES[auxValue];
} }
shared_ptr<ItemInstance> StoneSlabTile::getSilkTouchItemInstance(int data) shared_ptr<ItemInstance> StoneSlabTile::getSilkTouchItemInstance(int data)
{ {
return std::make_shared<ItemInstance>(Tile::stoneSlabHalf_Id, 2, data & TYPE_MASK); return make_shared<ItemInstance>(Tile::stoneSlabHalf_Id, 2, data & TYPE_MASK);
} }

View file

@ -1,39 +1,53 @@
#pragma once #pragma once
using namespace std;
#include "HalfSlabTile.h" #include "HalfSlabTile.h"
class ChunkRebuildData; class ChunkRebuildData;
class StoneSlabTile : public HalfSlabTile class StoneSlabTile : public HalfSlabTile
{ {
friend ChunkRebuildData; friend class ChunkRebuildData;
public: public:
static const int STONE_SLAB = 0; static const int STONE_SLAB = 0;
static const int SAND_SLAB = 1; static const int SAND_SLAB = 1;
static const int WOOD_SLAB = 2; static const int WOOD_SLAB = 2;
static const int COBBLESTONE_SLAB = 3; static const int COBBLESTONE_SLAB = 3;
static const int BRICK_SLAB = 4; static const int BRICK_SLAB = 4;
static const int SMOOTHBRICK_SLAB = 5; static const int SMOOTHBRICK_SLAB = 5;
static const int NETHERBRICK_SLAB = 6; static const int NETHERBRICK_SLAB = 6;
static const int QUARTZ_SLAB = 7; static const int QUARTZ_SLAB = 7;
static const int SLAB_NAMES_LENGTH = 8;
static const int SLAB_NAMES_LENGTH = 8; static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
private: private:
Icon *iconSide; Icon *iconSide;
public: public:
StoneSlabTile(int id, bool fullSize); StoneSlabTile(int id);
virtual Icon *getTexture(int face, int data); virtual int isFullSize() = 0;
virtual Icon *getTexture(int face, int data) override;
virtual void registerIcons(IconRegister *iconRegister) override;
virtual int getResource(int data, Random *random, int playerBonusLevel) override;
virtual unsigned int getDescriptionId(int iData = -1) override;
virtual int getAuxName(int auxValue) override;
void registerIcons(IconRegister *iconRegister);
virtual int getResource(int data, Random *random, int playerBonusLevel);
virtual unsigned int getDescriptionId(int iData = -1);
virtual int getAuxName(int auxValue);
protected: protected:
virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data); virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data) override;
};
class HalfStoneSlabTile : public StoneSlabTile
{
public:
HalfStoneSlabTile(int id) : StoneSlabTile(id) { DerivedInit(); }
virtual int isFullSize() override { return 0; }
};
class FullStoneSlabTile : public StoneSlabTile
{
public:
FullStoneSlabTile(int id) : StoneSlabTile(id) { DerivedInit(); }
virtual int isFullSize() override { return 1; }
}; };

View file

@ -0,0 +1,61 @@
#include "stdafx.h"
#include "net.minecraft.h"
#include "net.minecraft.world.level.h"
#include "net.minecraft.world.level.tile.h"
#include "net.minecraft.world.h"
#include "StoneSlabTile2.h"
#include "RedSandStoneTile.h"
const unsigned int StoneSlabTile2::SLAB_NAMES[SLAB_NAMES_LENGTH] = {
IDS_TILE_STONESLAB_REDSAND,
};
StoneSlabTile2::StoneSlabTile2(int id)
: HalfSlabTile(id, Material::stone)
{
}
Icon *StoneSlabTile2::getTexture(int face, int data)
{
int type = data & TYPE_MASK;
if (isFullSize() && (data & TOP_SLOT_BIT) != 0)
face = Facing::UP;
switch (type)
{
case RED_SANDSTONE_SLAB:
return Tile::red_sandstone->getTexture(face);
}
return icon;
}
void StoneSlabTile2::registerIcons(IconRegister *iconRegister)
{
icon = iconRegister->registerIcon(L"red_sandstone_top");
iconSide = iconRegister->registerIcon(L"red_sandstone_normal");
}
int StoneSlabTile2::getResource(int data, Random *random, int playerBonusLevel)
{
return Tile::stone_slab2_Id;
}
unsigned int StoneSlabTile2::getDescriptionId(int iData)
{
if (iData < 0) iData = 0;
return StoneSlabTile2::SLAB_NAMES[iData];
}
int StoneSlabTile2::getAuxName(int auxValue)
{
if (auxValue < 0 || auxValue >= SLAB_NAMES_LENGTH)
auxValue = 0;
return SLAB_NAMES[auxValue];//super.getDescriptionId() + "." + SLAB_NAMES[auxValue];
}
shared_ptr<ItemInstance> StoneSlabTile2::getSilkTouchItemInstance(int data)
{
return make_shared<ItemInstance>(Tile::stone_slab2_Id, 2, data & TYPE_MASK);
}

View file

@ -0,0 +1,44 @@
#pragma once
#include "HalfSlabTile.h"
class ChunkRebuildData;
class StoneSlabTile2 : public HalfSlabTile
{
friend class ChunkRebuildData;
public:
static const int RED_SANDSTONE_SLAB = 0;
static const int SLAB_NAMES_LENGTH = 1;
static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
private:
Icon *iconSide;
public:
StoneSlabTile2(int id);
virtual int isFullSize() = 0;
virtual Icon *getTexture(int face, int data) override;
virtual void registerIcons(IconRegister *iconRegister) override;
virtual int getResource(int data, Random *random, int playerBonusLevel) override;
virtual unsigned int getDescriptionId(int iData = -1) override;
virtual int getAuxName(int auxValue) override;
protected:
virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data) override;
};
class HalfStoneSlabTile2 : public StoneSlabTile2
{
public:
HalfStoneSlabTile2(int id) : StoneSlabTile2(id) { DerivedInit(); }
virtual int isFullSize() override { return 0; }
};
class FullStoneSlabTile2 : public StoneSlabTile2
{
public:
FullStoneSlabTile2(int id) : StoneSlabTile2(id) { DerivedInit(); }
virtual int isFullSize() override { return 1; }
};

View file

@ -15,6 +15,7 @@ void StructureRecipies::addRecipes(Recipes *r)
L'#', Tile::sand, L'#', Tile::sand,
L'S'); L'S');
r->addShapedRecipy(new ItemInstance(Tile::sandStone, 4, SandStoneTile::TYPE_SMOOTHSIDE), // r->addShapedRecipy(new ItemInstance(Tile::sandStone, 4, SandStoneTile::TYPE_SMOOTHSIDE), //
L"ssczg", L"ssczg",
L"##", // L"##", //
@ -31,6 +32,35 @@ void StructureRecipies::addRecipes(Recipes *r)
L'#', new ItemInstance(Tile::stoneSlabHalf, 1, StoneSlabTile::SAND_SLAB), L'#', new ItemInstance(Tile::stoneSlabHalf, 1, StoneSlabTile::SAND_SLAB),
L'S'); L'S');
r->addShapedRecipy(new ItemInstance(Tile::red_sandstone), //
L"ssczg",
L"##", //
L"##", //
L'#',new ItemInstance(Tile::sand, 1, SandTile::RED_SAND),
L'S');
r->addShapedRecipy(new ItemInstance(Tile::red_sandstone, 4, RedSandStoneTile::TYPE_SMOOTHSIDE), //
L"ssczg",
L"##", //
L"##", //
L'#', new ItemInstance(Tile::red_sandstone),
L'S');
r->addShapedRecipy(new ItemInstance(Tile::red_sandstone, 1, RedSandStoneTile::TYPE_HEIROGLYPHS), //
L"ssczg",
L"#", //
L"#", //
L'#', new ItemInstance(Tile::stoneSlab2Half, 1, StoneSlabTile2::RED_SANDSTONE_SLAB),
L'S');
r->addShapedRecipy(new ItemInstance(Tile::quartzBlock, 1, QuartzBlockTile::TYPE_CHISELED), // r->addShapedRecipy(new ItemInstance(Tile::quartzBlock, 1, QuartzBlockTile::TYPE_CHISELED), //
L"ssczg", L"ssczg",
L"#", // L"#", //
@ -47,6 +77,7 @@ void StructureRecipies::addRecipes(Recipes *r)
L'#', new ItemInstance(Tile::quartzBlock, 1, QuartzBlockTile::TYPE_DEFAULT), L'#', new ItemInstance(Tile::quartzBlock, 1, QuartzBlockTile::TYPE_DEFAULT),
L'S'); L'S');
// 4J Stu - Changed the order, as the blocks that go with sandstone cause a 3-icon scroll // 4J Stu - Changed the order, as the blocks that go with sandstone cause a 3-icon scroll
// that touches the text "Structures" in the title in 720 fullscreen. // that touches the text "Structures" in the title in 720 fullscreen.

View file

@ -5,7 +5,7 @@
#include "net.minecraft.world.item.h" #include "net.minecraft.world.item.h"
#include "net.minecraft.world.h" #include "net.minecraft.world.h"
#include "net.minecraft.h" #include "net.minecraft.h"
#include "..\Minecraft.Client\Minecraft.h" #include "../Minecraft.Client/Minecraft.h"
#include "net.minecraft.stats.h" #include "net.minecraft.stats.h"

View file

@ -256,6 +256,8 @@ Tile* Tile::darkGate = nullptr;
Tile* Tile::invertedDaylightDetector = nullptr; Tile* Tile::invertedDaylightDetector = nullptr;
Tile* Tile::red_sandstone = nullptr; Tile* Tile::red_sandstone = nullptr;
Tile* Tile::stairs_red_sandstone = nullptr; Tile* Tile::stairs_red_sandstone = nullptr;
HalfSlabTile* Tile::stoneSlab2 = nullptr;
HalfSlabTile* Tile::stoneSlab2Half = nullptr;
Tile* Tile::seaLantern = nullptr; Tile* Tile::seaLantern = nullptr;
Tile* Tile::prismarine = nullptr; Tile* Tile::prismarine = nullptr;
@ -370,8 +372,8 @@ void Tile::staticCtor()
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::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::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 = static_cast<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::stoneSlab = static_cast<HalfSlabTile *>((new FullStoneSlabTile(Tile::stoneSlab_Id))->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 = static_cast<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::stoneSlabHalf = static_cast<HalfSlabTile *>((new HalfStoneSlabTile(Tile::stoneSlabHalf_Id))->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::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::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::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);
@ -470,8 +472,9 @@ void Tile::staticCtor()
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::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 = (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::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 = static_cast<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::woodSlab = static_cast<HalfSlabTile *>((new FullWoodSlabTile(Tile::woodSlab_Id))->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 = static_cast<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::woodSlabHalf = static_cast<HalfSlabTile *>((new HalfWoodSlabTile(Tile::woodSlabHalf_Id))->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::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::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::emeraldOre = (new OreTile(129)) ->setDestroyTime(3.0f)->setExplodeable(5)->setSoundType(SOUND_STONE)->setIconName(L"emerald_ore")->setDescriptionId(IDS_TILE_EMERALDORE)->setUseDescriptionId(IDS_DESC_EMERALDORE);
@ -525,9 +528,12 @@ void Tile::staticCtor()
Tile::packedIce = (new PackedIceTile(174))->setDestroyTime(0.5f)->setSoundType(SOUND_GLASS)->setIconName(L"packed_ice")->setDescriptionId(IDS_TILE_PACKED_ICE)->setUseDescriptionId(IDS_DESC_PACKED_ICE); Tile::packedIce = (new PackedIceTile(174))->setDestroyTime(0.5f)->setSoundType(SOUND_GLASS)->setIconName(L"packed_ice")->setDescriptionId(IDS_TILE_PACKED_ICE)->setUseDescriptionId(IDS_DESC_PACKED_ICE);
Tile::invertedDaylightDetector = static_cast<DaylightDetectorTile*>((new DaylightDetectorTile(178, true))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR)); Tile::invertedDaylightDetector = static_cast<DaylightDetectorTile*>((new DaylightDetectorTile(178, true))->setDestroyTime(0.2f)->setSoundType(SOUND_WOOD)->setIconName(L"daylight_detector")->setDescriptionId(IDS_TILE_DAYLIGHT_DETECTOR)->setUseDescriptionId(IDS_DESC_DAYLIGHT_DETECTOR));
Tile::red_sandstone = (new RedSandStoneTile(179))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_sand)->setSoundType(Tile::SOUND_STONE)->setDestroyTime(0.8f)->sendTileData()->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_RED_SANDSTONE)->sendTileData(); Tile::red_sandstone = (new RedSandStoneTile(red_sandstone_Id))->setBaseItemTypeAndMaterial(Item::eBaseItemType_structblock, Item::eMaterial_sand)->setSoundType(Tile::SOUND_STONE)->setDestroyTime(0.8f)->sendTileData()->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_RED_SANDSTONE)->sendTileData();
Tile::stairs_red_sandstone = (new StairTile(180, Tile::red_sandstone, 0))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_sand)->setIconName(L"stairsRedSandstone")->setDescriptionId(IDS_TILE_STAIRS_RED_SANDSTONE)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS); Tile::stairs_red_sandstone = (new StairTile(stairs_red_sandstone_Id, Tile::red_sandstone, 0))->setBaseItemTypeAndMaterial(Item::eBaseItemType_stairs, Item::eMaterial_sand)->setIconName(L"stairsRedSandstone")->setDescriptionId(IDS_TILE_STAIRS_RED_SANDSTONE)->sendTileData()->setUseDescriptionId(IDS_DESC_STAIRS);
Tile::stoneSlab2 = static_cast<HalfSlabTile *>((new FullStoneSlabTile2(double_stone_slab2_Id))->setBaseItemTypeAndMaterial(Item::eBaseItemType_slab, Item::eMaterial_stone)->setDestroyTime(2.0f)->setExplodeable(10)->setSoundType(Tile::SOUND_STONE)->sendTileData()->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_SLAB));
Tile::stoneSlab2Half = static_cast<HalfSlabTile *>((new HalfStoneSlabTile2(stone_slab2_Id))->setBaseItemTypeAndMaterial(Item::eBaseItemType_halfslab, Item::eMaterial_stone)->setDestroyTime(2.0f)->setExplodeable(10)->setSoundType(Tile::SOUND_STONE)->sendTileData()->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_HALFSLAB));
Tile::spruceGate = (new FenceGateTile(183))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_sprucewood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_spruce")->setDescriptionId(IDS_TILE_SPRUCE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE); Tile::spruceGate = (new FenceGateTile(183))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_sprucewood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_spruce")->setDescriptionId(IDS_TILE_SPRUCE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
Tile::birchGate = (new FenceGateTile(184))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_birchwood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_birch")->setDescriptionId(IDS_TILE_BIRCH_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE); Tile::birchGate = (new FenceGateTile(184))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_birchwood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_birch")->setDescriptionId(IDS_TILE_BIRCH_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
Tile::jungleGate = (new FenceGateTile(185))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_junglewood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_jungle")->setDescriptionId(IDS_TILE_JUNGLE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE); Tile::jungleGate = (new FenceGateTile(185))->setBaseItemTypeAndMaterial(Item::eBaseItemType_fenceGate, Item::eMaterial_junglewood)->setDestroyTime(2.0f)->setExplodeable(5)->setSoundType(SOUND_WOOD)->setIconName(L"planks_jungle")->setDescriptionId(IDS_TILE_JUNGLE_GATE)->sendTileData()->setUseDescriptionId(IDS_DESC_FENCE_GATE);
@ -580,7 +586,9 @@ void Tile::staticCtor()
Item::items[rose_Id] = (new MultiTextureTileItem(Tile::rose_Id - 256, rose, (int*)Rose::FLOWER_NAMES, Rose::FLOWER_NAMES_LENGTH))->setIconName(L"flower_rose")->setDescriptionId(IDS_TILE_ROSE)->setUseDescriptionId(IDS_DESC_FLOWER); Item::items[rose_Id] = (new MultiTextureTileItem(Tile::rose_Id - 256, rose, (int*)Rose::FLOWER_NAMES, Rose::FLOWER_NAMES_LENGTH))->setIconName(L"flower_rose")->setDescriptionId(IDS_TILE_ROSE)->setUseDescriptionId(IDS_DESC_FLOWER);
Item::items[sand_Id] = (new MultiTextureTileItem(Tile::sand_Id - 256, sand, (int*)SandTile::SAND_NAMES, SandTile::SAND_NAMES_LENGTH))->setIconName(L"sand")->setDescriptionId(IDS_TILE_SAND)->setUseDescriptionId(IDS_DESC_SAND); Item::items[sand_Id] = (new MultiTextureTileItem(Tile::sand_Id - 256, sand, (int*)SandTile::SAND_NAMES, SandTile::SAND_NAMES_LENGTH))->setIconName(L"sand")->setDescriptionId(IDS_TILE_SAND)->setUseDescriptionId(IDS_DESC_SAND);
Item::items[red_sandstone_Id] = (new MultiTextureTileItem(Tile::red_sandstone_Id - 256, red_sandstone, (int*)RedSandStoneTile::SANDSTONE_NAMES, RedSandStoneTile::SANDSTONE_BLOCK_NAMES))->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_SANDSTONE)->setUseDescriptionId(IDS_DESC_SANDSTONE); Item::items[red_sandstone_Id] = (new MultiTextureTileItem(Tile::red_sandstone_Id - 256, red_sandstone, (int*)RedSandStoneTile::SANDSTONE_NAMES, RedSandStoneTile::SANDSTONE_BLOCK_NAMES))->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_SANDSTONE);
Item::items[stone_slab2_Id] = (new StoneSlabTileItem(Tile::stone_slab2_Id - 256, Tile::stoneSlab2Half, Tile::stoneSlab2, false))->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_HALFSLAB);
Item::items[double_stone_slab2_Id] = (new StoneSlabTileItem(Tile::double_stone_slab2_Id - 256, Tile::stoneSlab2Half, Tile::stoneSlab2, true))->setIconName(L"red_sandstone")->setDescriptionId(IDS_TILE_RED_SANDSTONE)->setUseDescriptionId(IDS_DESC_SLAB);
Item::items[tree2Trunk_Id] = (new MultiTextureTileItem(Tile::tree2Trunk_Id - 256, tree2Trunk, (int*)TreeTile2::TREE_NAMES, TreeTile2::TREE_NAMES_LENGTH))->setIconName(L"log")->setDescriptionId(IDS_TILE_LOG)->setUseDescriptionId(IDS_DESC_LOG); Item::items[tree2Trunk_Id] = (new MultiTextureTileItem(Tile::tree2Trunk_Id - 256, tree2Trunk, (int*)TreeTile2::TREE_NAMES, TreeTile2::TREE_NAMES_LENGTH))->setIconName(L"log")->setDescriptionId(IDS_TILE_LOG)->setUseDescriptionId(IDS_DESC_LOG);
Item::items[sponge_Id] = (new MultiTextureTileItem(Tile::sponge_Id - 256, sponge, (int*)Sponge::SPONGE_NAMES, Sponge::SPONGE_NAMES_LENGTH))->setIconName(L"sponge")->setDescriptionId(IDS_TILE_SPONGE)->setUseDescriptionId(IDS_DESC_SPONGE); Item::items[sponge_Id] = (new MultiTextureTileItem(Tile::sponge_Id - 256, sponge, (int*)Sponge::SPONGE_NAMES, Sponge::SPONGE_NAMES_LENGTH))->setIconName(L"sponge")->setDescriptionId(IDS_TILE_SPONGE)->setUseDescriptionId(IDS_DESC_SPONGE);

View file

@ -388,8 +388,8 @@ public:
static const int invertedDaylightDetector_Id = 178; static const int invertedDaylightDetector_Id = 178;
static const int red_sandstone_Id = 179; static const int red_sandstone_Id = 179;
static const int stairs_red_sandstone_Id = 180; static const int stairs_red_sandstone_Id = 180;
//181 double_stone_slab2 : sandstoneslab static const int double_stone_slab2_Id = 181;
//182 stone_slab2 : sandstoneslab static const int stone_slab2_Id = 182;
static const int spruceGate_Id = 183; static const int spruceGate_Id = 183;
static const int birchGate_Id = 184; static const int birchGate_Id = 184;
static const int jungleGate_Id = 185; static const int jungleGate_Id = 185;
@ -629,6 +629,8 @@ public:
static Tile* invertedDaylightDetector; static Tile* invertedDaylightDetector;
static Tile* red_sandstone; static Tile* red_sandstone;
static Tile* stairs_red_sandstone; static Tile* stairs_red_sandstone;
static HalfSlabTile* stoneSlab2;
static HalfSlabTile* stoneSlab2Half;
static Tile* tree2Trunk; static Tile* tree2Trunk;
static Tile* packedIce; static Tile* packedIce;
static Tile* seaLantern; static Tile* seaLantern;

View file

@ -7,47 +7,44 @@
#include "net.minecraft.world.item.h" #include "net.minecraft.world.item.h"
#include "net.minecraft.stats.h" #include "net.minecraft.stats.h"
const unsigned int WoodSlabTile::SLAB_NAMES[SLAB_NAMES_LENGTH] = { IDS_TILE_STONESLAB_OAK, const unsigned int WoodSlabTile::SLAB_NAMES[SLAB_NAMES_LENGTH] = {
IDS_TILE_STONESLAB_SPRUCE, IDS_TILE_STONESLAB_OAK,
IDS_TILE_STONESLAB_BIRCH, IDS_TILE_STONESLAB_SPRUCE,
IDS_TILE_STONESLAB_JUNGLE, IDS_TILE_STONESLAB_BIRCH,
IDS_TILE_STONESLAB_ACACIA, IDS_TILE_STONESLAB_JUNGLE,
IDS_TILE_STONESLAB_DARK_OAK IDS_TILE_STONESLAB_ACACIA,
IDS_TILE_STONESLAB_DARK_OAK
}; };
// public static final String[] WOOD_NAMES = { WoodSlabTile::WoodSlabTile(int id)
// "oak", "spruce", "birch", "jungle" : HalfSlabTile(id, Material::wood)
// };
WoodSlabTile::WoodSlabTile(int id, bool fullSize) : HalfSlabTile(id, fullSize, Material::wood)
{ {
} }
Icon *WoodSlabTile::getTexture(int face, int data) Icon *WoodSlabTile::getTexture(int face, int data)
{ {
return Tile::wood->getTexture(face, data & TYPE_MASK);
return Tile::wood->getTexture(face, data & TYPE_MASK);
} }
int WoodSlabTile::getResource(int data, Random *random, int playerBonusLevel) int WoodSlabTile::getResource(int data, Random *random, int playerBonusLevel)
{ {
return Tile::woodSlabHalf_Id; return Tile::woodSlabHalf_Id;
} }
shared_ptr<ItemInstance> WoodSlabTile::getSilkTouchItemInstance(int data) shared_ptr<ItemInstance> WoodSlabTile::getSilkTouchItemInstance(int data)
{ {
return std::make_shared<ItemInstance>(Tile::woodSlabHalf, 2, data & TYPE_MASK); return std::make_shared<ItemInstance>(Tile::woodSlabHalf, 2, data & TYPE_MASK);
} }
int WoodSlabTile::getAuxName(int auxValue) int WoodSlabTile::getAuxName(int auxValue)
{ {
if (auxValue < 0 || auxValue >= SLAB_NAMES_LENGTH) if (auxValue < 0 || auxValue >= SLAB_NAMES_LENGTH)
{ auxValue = 0;
auxValue = 0; return SLAB_NAMES[auxValue];
}
return SLAB_NAMES[auxValue];//super.getDescriptionId() + "." + SLAB_NAMES[auxValue];
} }
void WoodSlabTile::registerIcons(IconRegister *iconRegister) void WoodSlabTile::registerIcons(IconRegister *iconRegister)
{ {
// None
} }

View file

@ -1,25 +1,40 @@
#pragma once #pragma once
#include "Tile.h"
#include "HalfSlabTile.h" #include "HalfSlabTile.h"
class Player; class Player;
class WoodSlabTile : HalfSlabTile class WoodSlabTile : public HalfSlabTile
{ {
friend class Tile;
friend class Tile;
public: public:
static const int TYPE_MASK = 7; static const int SLAB_NAMES_LENGTH = 6;
static const int TOP_SLOT_BIT = 8; static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
static const int SLAB_NAMES_LENGTH = 6;
static const unsigned int SLAB_NAMES[SLAB_NAMES_LENGTH];
WoodSlabTile(int id, bool fullSize); public:
virtual Icon *getTexture(int face, int data); WoodSlabTile(int id);
virtual int getResource(int data, Random *random, int playerBonusLevel);
virtual int getAuxName(int auxValue);
virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data); virtual int isFullSize() = 0;
void registerIcons(IconRegister *iconRegister);
virtual Icon *getTexture(int face, int data) override;
virtual int getResource(int data, Random *random, int playerBonusLevel) override;
virtual int getAuxName(int auxValue) override;
virtual void registerIcons(IconRegister *iconRegister) override;
protected:
virtual shared_ptr<ItemInstance> getSilkTouchItemInstance(int data) override;
};
class HalfWoodSlabTile : public WoodSlabTile
{
public:
HalfWoodSlabTile(int id) : WoodSlabTile(id) { DerivedInit(); }
virtual int isFullSize() override { return 0; }
};
class FullWoodSlabTile : public WoodSlabTile
{
public:
FullWoodSlabTile(int id) : WoodSlabTile(id) { DerivedInit(); }
virtual int isFullSize() override { return 1; }
}; };

View file

@ -1966,6 +1966,8 @@ set(_MINECRAFT_WORLD_COMMON_NET_MINECRAFT_WORLD_LEVEL_TILE
"${CMAKE_CURRENT_SOURCE_DIR}/StoneMonsterTile.h" "${CMAKE_CURRENT_SOURCE_DIR}/StoneMonsterTile.h"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile.h" "${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile.h"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile2.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneSlabTile2.h"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneTile.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/StoneTile.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/StoneTile.h" "${CMAKE_CURRENT_SOURCE_DIR}/StoneTile.h"
"${CMAKE_CURRENT_SOURCE_DIR}/TallGrass.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/TallGrass.cpp"

View file

@ -141,5 +141,6 @@
#include "TallGrass2.h" #include "TallGrass2.h"
#include "PackedIceTile.h" #include "PackedIceTile.h"
#include "StoneSlabTile2.h"