feat: slime block

This commit is contained in:
Fireblade
2026-05-22 21:15:13 -04:00
parent 67d6b2692f
commit 05c14bc0fe
38 changed files with 449 additions and 33 deletions
+19 -1
View File
@@ -2,6 +2,7 @@
#include "com.mojang.nbt.h"
#include "PistonPieceEntity.h"
#include "PistonMovingPiece.h"
#include "net.minecraft.world.phys.h"
#include "net.minecraft.world.level.h"
#include "Facing.h"
#include "Tile.h"
@@ -119,7 +120,13 @@ void PistonPieceEntity::moveCollidedEntities(float progress, float amount)
AABB *aabb = Tile::pistonMovingPiece->getAABB(level, x, y, z, id, progress, facing);
if (aabb != nullptr)
{
vector<shared_ptr<Entity> > *entities = level->getEntities(nullptr, aabb);
AABB *queryBox = aabb;
if (id == Tile::slimeBlock->id && Facing::STEP_Y[facing] > 0)
{
queryBox = AABB::newTemp(aabb->x0, aabb->y0, aabb->z0, aabb->x1, aabb->y1 + 1.0f, aabb->z1);
}
vector<shared_ptr<Entity> > *entities = level->getEntities(nullptr, queryBox);
if (!entities->empty())
{
vector< shared_ptr<Entity> > collisionHolder;
@@ -133,6 +140,17 @@ void PistonPieceEntity::moveCollidedEntities(float progress, float amount)
it->move(amount * Facing::STEP_X[facing],
amount * Facing::STEP_Y[facing],
amount * Facing::STEP_Z[facing]);
if (id == Tile::slimeBlock->id && Facing::STEP_Y[facing] > 0)
{
if (it->yd < amount)
{
it->yd = amount;
}
it->onGround = false;
it->fallDistance = 0.0f;
it->hasImpulse = true;
}
}
}
}