mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
61 lines
2.3 KiB
Java
61 lines
2.3 KiB
Java
package com.hbm.blocks.generic;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.BlockTrapDoor;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import net.minecraft.world.World;
|
|
|
|
public class BlockNTMTrapdoor extends BlockTrapDoor {
|
|
public BlockNTMTrapdoor(Material material) {
|
|
super(material);
|
|
}
|
|
|
|
@Override
|
|
public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) {
|
|
int meta = world.getBlockMetadata(x, y, z);
|
|
|
|
// isOpen
|
|
if (!func_150118_d(meta))
|
|
return false;
|
|
|
|
Block blockBelow = world.getBlock(x, y - 1, z);
|
|
return blockBelow != null && blockBelow.isLadder(world, x, y - 1, z, entity);
|
|
}
|
|
|
|
@Override
|
|
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
|
// Make the hitbox in-line with ladders, if relevant
|
|
if (isLadder(world, x, y, z, null)) {
|
|
int meta = world.getBlockMetadata(x, y, z);
|
|
float thickness = 0.125F;
|
|
|
|
if ((meta & 3) == 0)
|
|
return AxisAlignedBB.getBoundingBox(x, y, z + 1F - thickness, x + 1F, y + 1F, z + 1F);
|
|
|
|
if ((meta & 3) == 1)
|
|
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1F, y + 1F, z + thickness);
|
|
|
|
if ((meta & 3) == 2)
|
|
return AxisAlignedBB.getBoundingBox(x + 1F - thickness, y, z, x + 1F, y + 1F, z + 1F);
|
|
|
|
if ((meta & 3) == 3)
|
|
return AxisAlignedBB.getBoundingBox(x, y, z, x + thickness, y + 1F, z + 1F);
|
|
}
|
|
|
|
return super.getCollisionBoundingBoxFromPool(world, x, y, z);
|
|
}
|
|
|
|
@Override
|
|
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
|
// The original code prevented manual operation of Material.iron trapdoors. This bypasses that behavior
|
|
int meta = world.getBlockMetadata(x, y, z);
|
|
world.setBlockMetadataWithNotify(x, y, z, meta ^ 4, 2);
|
|
world.playAuxSFXAtEntity(player, 1003, x, y, z, 0);
|
|
return true;
|
|
}
|
|
}
|