Grindr, GUI, Container.

This commit is contained in:
Sebastian Hartte
2020-06-02 22:52:35 +02:00
parent cf9ab8a13b
commit 2de3a2ecee
65 changed files with 509 additions and 495 deletions
@@ -114,7 +114,7 @@ public class BlockCraftingUnit extends AEBaseTileBlock
}
@Override
public void neighborChanged( final BlockState state, final World worldIn, final BlockPos pos, final Block blockIn, final BlockPos fromPos )
public void neighborChanged( final BlockState state, final World worldIn, final BlockPos pos, final Block blockIn, final BlockPos fromPos, boolean isMoving )
{
final TileCraftingTile cp = this.getTileEntity( worldIn, pos );
if( cp != null )
@@ -19,32 +19,35 @@
package appeng.block.grindstone;
import javax.annotation.Nullable;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.BlockState;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import appeng.api.implementations.tiles.ICrankable;
import appeng.block.AEBaseTileBlock;
import appeng.core.stats.AeStats;
import appeng.tile.AEBaseTile;
import appeng.tile.grindstone.TileCrank;
import net.minecraft.block.Block;
import net.minecraft.block.BlockRenderType;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.util.math.shapes.VoxelShapes;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import javax.annotation.Nullable;
public class BlockCrank extends AEBaseTileBlock<TileCrank>
@@ -63,21 +66,22 @@ public class BlockCrank extends AEBaseTileBlock<TileCrank>
return ActionResultType.SUCCESS;
}
final AEBaseTile tile = this.getTileEntity( w, pos );
if( tile instanceof TileCrank )
final TileCrank tile = this.getTileEntity( w, pos );
if( tile != null )
{
if( ( (TileCrank) tile ).power() )
if( tile.power() )
{
AeStats.TurnedCranks.addToPlayer( player, 1 );
}
return ActionResultType.SUCCESS;
}
return ActionResultType.SUCCESS;
return ActionResultType.PASS;
}
private void dropCrank( final World world, final BlockPos pos )
{
world.destroyBlock( pos, true ); // w.destroyBlock( x, y, z, true );
world.destroyBlock( pos, true );
world.notifyBlockUpdate( pos, this.getDefaultState(), world.getBlockState( pos ), 3 );
}
@@ -102,13 +106,13 @@ public class BlockCrank extends AEBaseTileBlock<TileCrank>
}
@Override
public boolean isValidOrientation( final World w, final BlockPos pos, final Direction forward, final Direction up )
public boolean isValidOrientation( final IWorld w, final BlockPos pos, final Direction forward, final Direction up )
{
final TileEntity te = w.getTileEntity( pos );
return !( te instanceof TileCrank ) || this.isCrankable( w, pos, up.getOpposite() );
}
private Direction findCrankable( final World world, final BlockPos pos )
private Direction findCrankable( final IBlockReader world, final BlockPos pos )
{
for( final Direction dir : Direction.values() )
{
@@ -120,7 +124,7 @@ public class BlockCrank extends AEBaseTileBlock<TileCrank>
return null;
}
private boolean isCrankable( final World world, final BlockPos pos, final Direction offset )
private boolean isCrankable( final IBlockReader world, final BlockPos pos, final Direction offset )
{
final BlockPos o = pos.offset( offset );
final TileEntity te = world.getTileEntity( o );
@@ -129,15 +133,13 @@ public class BlockCrank extends AEBaseTileBlock<TileCrank>
}
@Override
public EnumBlockRenderType getRenderType( BlockState state )
public BlockRenderType getRenderType(BlockState state )
{
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
return BlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
{
public void neighborChanged(BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
final AEBaseTile tile = this.getTileEntity( world, pos );
if( tile != null )
{
@@ -158,22 +160,24 @@ public class BlockCrank extends AEBaseTileBlock<TileCrank>
return this.findCrankable( w, pos ) != null;
}
@Override
public boolean isFullCube( BlockState state )
{
return false;
private Direction getUp(IBlockReader world, BlockPos pos) {
TileCrank crank = getTileEntity(world, pos);
return crank != null ? crank.getUp() : null;
}
@Override
public boolean canPlaceTorchOnTop( BlockState state, IBlockReader world, BlockPos pos )
{
return false;
}
public VoxelShape getShape(BlockState state, IBlockReader world, BlockPos pos, ISelectionContext context) {
Direction up = getUp(world, pos);
@Override
public BlockFaceShape getBlockFaceShape( IBlockReader worldIn, BlockState state, BlockPos pos, Direction face )
{
return BlockFaceShape.UNDEFINED;
}
if (up == null) {
return VoxelShapes.empty();
} else {
// FIXME: Cache per direction, and build it 'precise', not just from AABB
final double xOff = -0.15 * up.getXOffset();
final double yOff = -0.15 * up.getYOffset();
final double zOff = -0.15 * up.getZOffset();
return VoxelShapes.create(new AxisAlignedBB(xOff + 0.15, yOff + 0.15, zOff + 0.15, xOff + 0.85, yOff + 0.85, zOff + 0.85));
}
}
}
@@ -20,8 +20,10 @@ package appeng.block.grindstone;
import appeng.block.AEBaseTileBlock;
import appeng.container.implementations.ContainerGrinder;
import appeng.tile.grindstone.TileGrinder;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand;
@@ -45,7 +47,9 @@ public class BlockGrinder extends AEBaseTileBlock<TileGrinder>
final TileGrinder tg = this.getTileEntity( w, pos );
if( tg != null && !p.isCrouching() )
{
// FIXME Platform.openGUI( p, tg, AEPartLocation.fromFacing(hit.getFace()), GuiBridge.GUI_GRINDER );
if (p instanceof ServerPlayerEntity) {
ContainerGrinder.open((ServerPlayerEntity) p, tg, getNameTextComponent());
}
return ActionResultType.SUCCESS;
}
return ActionResultType.PASS;
@@ -26,7 +26,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ActionResultType;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.BlockRenderType;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
@@ -71,9 +71,9 @@ public class BlockInscriber extends AEBaseTileBlock
}
@Override
public EnumBlockRenderType getRenderType( BlockState state )
public BlockRenderType getRenderType( BlockState state )
{
return EnumBlockRenderType.MODEL;
return BlockRenderType.MODEL;
}
@Override
@@ -35,6 +35,7 @@ import net.minecraft.util.Direction;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist;
@@ -116,7 +117,7 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
}
@Override
public boolean isValidOrientation( final World w, final BlockPos pos, final Direction forward, final Direction up )
public boolean isValidOrientation(final IWorld w, final BlockPos pos, final Direction forward, final Direction up )
{
return this.canPlaceAt( w, pos, up.getOpposite() );
}
@@ -148,7 +149,7 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final Direction up = this.getOrientable( world, pos ).getUp();
if( !this.canPlaceAt( world, pos, up.getOpposite() ) )
@@ -125,11 +125,12 @@ public class BlockQuartzFixture extends AEBaseBlock implements IOrientableBlock
return state;
}
// FIXME @Override
// FIXME public boolean isValidOrientation( final World w, final BlockPos pos, final Direction forward, final Direction up )
// FIXME {
// FIXME return this.canPlaceAt( w, pos, up.getOpposite() );
// FIXME }
@Override
public boolean isValidOrientation( final IWorld w, final BlockPos pos, final Direction forward, final Direction up )
{
// FIXME: I think this entire method -> not required, but not sure... are quartz fixtures rotateable???
return this.canPlaceAt( w, pos, up.getOpposite() );
}
private boolean canPlaceAt( final IWorldReader w, final BlockPos pos, final Direction dir )
{
@@ -172,16 +173,16 @@ public class BlockQuartzFixture extends AEBaseBlock implements IOrientableBlock
}
// FIXME: Replaced by the postPlaceupdate stuff above, but check item drops!
// @Override
// public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
// {
// final Direction up = this.getOrientable( world, pos ).getUp();
// if( !this.canPlaceAt( world, pos, up.getOpposite() ) )
// {
// this.dropTorch( world, pos );
// }
// }
//
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final Direction up = this.getOrientable( world, pos ).getUp();
if( !this.canPlaceAt( world, pos, up.getOpposite() ) )
{
this.dropTorch( world, pos );
}
}
private void dropTorch( final World w, final BlockPos pos )
{
final BlockState prev = w.getBlockState( pos );
@@ -27,10 +27,11 @@ import net.minecraft.block.material.Material;
import net.minecraft.block.BlockStateContainer;
import net.minecraft.block.BlockState;
import net.minecraft.entity.Entity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.BlockRenderType;
import net.minecraft.util.Direction;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader;
import net.minecraft.world.World;
import net.minecraftforge.common.property.ExtendedBlockState;
@@ -63,7 +64,7 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
}
@Override
public boolean isValidOrientation( final World w, final BlockPos pos, final Direction forward, final Direction up )
public boolean isValidOrientation(final IWorld w, final BlockPos pos, final Direction forward, final Direction up )
{
final TileSkyCompass sc = this.getTileEntity( w, pos );
if( sc != null )
@@ -79,7 +80,7 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileSkyCompass sc = this.getTileEntity( world, pos );
final Direction forward = sc.getForward();
@@ -178,9 +179,9 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
}
@Override
public EnumBlockRenderType getRenderType( BlockState state )
public BlockRenderType getRenderType( BlockState state )
{
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
return BlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
@@ -101,7 +101,7 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
if( world.isBlockIndirectlyGettingPowered( pos ) > 0 )
{
@@ -342,7 +342,7 @@ public class BlockCableBus extends AEBaseTileBlock implements IAEFacade
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
if( Platform.isServer() )
{
@@ -173,7 +173,7 @@ public class BlockController extends AEBaseTileBlock
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileController tc = this.getTileEntity( world, pos );
if( tc != null )
@@ -112,7 +112,7 @@ public class BlockPaint extends AEBaseTileBlock
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TilePaint tp = this.getTileEntity( world, pos );
@@ -101,7 +101,7 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileQuantumBridge bridge = this.getTileEntity( world, pos );
if( bridge != null )
@@ -48,7 +48,7 @@ public class BlockSpatialIOPort extends AEBaseTileBlock
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileSpatialIOPort te = this.getTileEntity( world, pos );
if( te != null )
@@ -61,7 +61,7 @@ public class BlockSpatialPylon extends AEBaseTileBlock
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileSpatialPylon tsp = this.getTileEntity( world, pos );
if( tsp != null )
@@ -48,7 +48,7 @@ public class BlockIOPort extends AEBaseTileBlock
}
@Override
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos )
public void neighborChanged( BlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving )
{
final TileIOPort te = this.getTileEntity( world, pos );
if( te != null )