mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/4jcraft.git
synced 2026-07-18 00:58:07 +00:00
TU19: merge Minecraft.World/Blocks
This commit is contained in:
@@ -12,7 +12,7 @@ const std::wstring PumpkinTile::TEXTURE_FACE = L"pumpkin_face";
|
||||
const std::wstring PumpkinTile::TEXTURE_LANTERN = L"pumpkin_jack";
|
||||
|
||||
PumpkinTile::PumpkinTile(int id, bool lit)
|
||||
: DirectionalTile(id, Material::vegetable) {
|
||||
: DirectionalTile(id, Material::vegetable, false) {
|
||||
iconTop = NULL;
|
||||
iconFace = NULL;
|
||||
setTicking(true);
|
||||
@@ -40,9 +40,9 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
if (!level->isClientSide) {
|
||||
// 4J - added limit of number of snowmen that can be spawned
|
||||
if (level->canCreateMore(eTYPE_SNOWMAN, Level::eSpawnType_Egg)) {
|
||||
level->setTileNoUpdate(x, y, z, 0);
|
||||
level->setTileNoUpdate(x, y - 1, z, 0);
|
||||
level->setTileNoUpdate(x, y - 2, z, 0);
|
||||
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 2, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
std::shared_ptr<SnowMan> snowMan =
|
||||
std::shared_ptr<SnowMan>(new SnowMan(level));
|
||||
snowMan->moveTo(x + 0.5, y - 1.95, z + 0.5, 0, 0);
|
||||
@@ -59,9 +59,9 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
level, x, y - 1, z, level->getData(x, y - 1, z), 0);
|
||||
Tile::tiles[Tile::snow_Id]->spawnResources(
|
||||
level, x, y - 2, z, level->getData(x, y - 2, z), 0);
|
||||
level->setTile(x, y, z, 0);
|
||||
level->setTile(x, y - 1, z, 0);
|
||||
level->setTile(x, y - 2, z, 0);
|
||||
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 2, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < 120; i++) {
|
||||
@@ -81,15 +81,21 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
// 4J - added limit of number of golems that can be spawned
|
||||
if (level->canCreateMore(eTYPE_VILLAGERGOLEM,
|
||||
Level::eSpawnType_Egg)) {
|
||||
level->setTileNoUpdate(x, y, z, 0);
|
||||
level->setTileNoUpdate(x, y - 1, z, 0);
|
||||
level->setTileNoUpdate(x, y - 2, z, 0);
|
||||
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 2, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
if (xArms) {
|
||||
level->setTileNoUpdate(x - 1, y - 1, z, 0);
|
||||
level->setTileNoUpdate(x + 1, y - 1, z, 0);
|
||||
level->setTileAndData(x - 1, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x + 1, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
} else {
|
||||
level->setTileNoUpdate(x, y - 1, z - 1, 0);
|
||||
level->setTileNoUpdate(x, y - 1, z + 1, 0);
|
||||
level->setTileAndData(x, y - 1, z - 1, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z + 1, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
|
||||
std::shared_ptr<VillagerGolem> villagerGolem =
|
||||
@@ -125,9 +131,11 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
level, x, y - 1, z, level->getData(x, y - 1, z), 0);
|
||||
Tile::tiles[Tile::ironBlock_Id]->spawnResources(
|
||||
level, x, y - 2, z, level->getData(x, y - 2, z), 0);
|
||||
level->setTile(x, y, z, 0);
|
||||
level->setTile(x, y - 1, z, 0);
|
||||
level->setTile(x, y - 2, z, 0);
|
||||
level->setTileAndData(x, y, z, 0, 0, Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 2, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
|
||||
if (xArms) {
|
||||
Tile::tiles[Tile::ironBlock_Id]->spawnResources(
|
||||
@@ -136,8 +144,10 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
Tile::tiles[Tile::ironBlock_Id]->spawnResources(
|
||||
level, x + 1, y - 1, z,
|
||||
level->getData(x + 1, y - 1, z), 0);
|
||||
level->setTile(x - 1, y - 1, z, 0);
|
||||
level->setTile(x + 1, y - 1, z, 0);
|
||||
level->setTileAndData(x - 1, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x + 1, y - 1, z, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
} else {
|
||||
Tile::tiles[Tile::ironBlock_Id]->spawnResources(
|
||||
level, x, y - 1, z - 1,
|
||||
@@ -145,8 +155,10 @@ void PumpkinTile::onPlace(Level* level, int x, int y, int z) {
|
||||
Tile::tiles[Tile::ironBlock_Id]->spawnResources(
|
||||
level, x, y - 1, z + 1,
|
||||
level->getData(x, y - 1, z + 1), 0);
|
||||
level->setTile(x, y - 1, z - 1, 0);
|
||||
level->setTile(x, y - 1, z + 1, 0);
|
||||
level->setTileAndData(x, y - 1, z - 1, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
level->setTileAndData(x, y - 1, z + 1, 0, 0,
|
||||
Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -161,13 +173,15 @@ bool PumpkinTile::mayPlace(Level* level, int x, int y, int z) {
|
||||
}
|
||||
|
||||
void PumpkinTile::setPlacedBy(Level* level, int x, int y, int z,
|
||||
std::shared_ptr<Mob> by) {
|
||||
std::shared_ptr<LivingEntity> by,
|
||||
std::shared_ptr<ItemInstance> itemInstance) {
|
||||
int dir = Mth::floor(by->yRot * 4 / (360) + 2.5) & 3;
|
||||
level->setData(x, y, z, dir);
|
||||
level->setData(x, y, z, dir, Tile::UPDATE_CLIENTS);
|
||||
}
|
||||
|
||||
void PumpkinTile::registerIcons(IconRegister* iconRegister) {
|
||||
iconFace = iconRegister->registerIcon(lit ? TEXTURE_LANTERN : TEXTURE_FACE);
|
||||
iconTop = iconRegister->registerIcon(L"pumpkin_top");
|
||||
icon = iconRegister->registerIcon(L"pumpkin_side");
|
||||
iconFace = iconRegister->registerIcon(getIconName() + L"_face_" +
|
||||
(lit ? L"on" : L"off"));
|
||||
iconTop = iconRegister->registerIcon(getIconName() + L"_top");
|
||||
icon = iconRegister->registerIcon(getIconName() + L"_side");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user