diff --git a/build.gradle b/build.gradle index 91a92eaf9..499cd1bc0 100644 --- a/build.gradle +++ b/build.gradle @@ -122,6 +122,7 @@ sourceSets { include 'appeng/client/render/model/RenderHelper.java' include 'appeng/client/render/model/GlassModelLoader.java' include 'appeng/helpers/AEGlassMaterial.java' + include 'appeng/block/spatial/BlockMatrixFrame.java' include 'appeng/core/sync/AppEngPacket.java' include 'appeng/core/sync/network/INetworkInfo.java' diff --git a/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java b/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java index c0c55cfdd..3f848c235 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java @@ -22,6 +22,7 @@ package appeng.block.crafting; import net.minecraft.block.BlockStateContainer; import net.minecraft.block.BlockState; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.Direction; import net.minecraft.util.NonNullList; @@ -82,7 +83,7 @@ public class BlockCraftingMonitor extends BlockCraftingUnit @Override @OnlyIn( Dist.CLIENT ) - public void getSubBlocks( final CreativeTabs tabs, final NonNullList itemStacks ) + public void fillItemGroup(ItemGroup group, NonNullList itemStacks) { itemStacks.add( new ItemStack( this, 1, 0 ) ); } diff --git a/src/main/java/appeng/block/grindstone/BlockCrank.java b/src/main/java/appeng/block/grindstone/BlockCrank.java index 527939a13..d22fdba1c 100644 --- a/src/main/java/appeng/block/grindstone/BlockCrank.java +++ b/src/main/java/appeng/block/grindstone/BlockCrank.java @@ -36,6 +36,7 @@ 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; @@ -157,9 +158,9 @@ public class BlockCrank extends AEBaseTileBlock } @Override - public boolean canPlaceBlockAt( final World world, final BlockPos pos ) + public boolean isValidPosition(BlockState state, IWorldReader w, BlockPos pos) { - return this.findCrankable( world, pos ) != null; + return this.findCrankable( w, pos ) != null; } @Override diff --git a/src/main/java/appeng/block/misc/BlockLightDetector.java b/src/main/java/appeng/block/misc/BlockLightDetector.java index a30e6fecb..20c34f15b 100644 --- a/src/main/java/appeng/block/misc/BlockLightDetector.java +++ b/src/main/java/appeng/block/misc/BlockLightDetector.java @@ -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.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -164,7 +165,7 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl } @Override - public boolean canPlaceBlockAt( final World w, final BlockPos pos ) + public boolean isValidPosition(BlockState state, IWorldReader w, BlockPos pos) { for( final Direction dir : Direction.VALUES ) { diff --git a/src/main/java/appeng/block/misc/BlockQuartzFixture.java b/src/main/java/appeng/block/misc/BlockQuartzFixture.java index 53d5b8b1c..8b9d67fad 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzFixture.java +++ b/src/main/java/appeng/block/misc/BlockQuartzFixture.java @@ -36,6 +36,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.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -180,7 +181,7 @@ public class BlockQuartzFixture extends AEBaseBlock implements IOrientableBlock, } @Override - public boolean canPlaceBlockAt( final World w, final BlockPos pos ) + public boolean isValidPosition(BlockState state, IWorldReader w, BlockPos pos) { for( final Direction dir : Direction.VALUES ) { diff --git a/src/main/java/appeng/block/misc/BlockSkyCompass.java b/src/main/java/appeng/block/misc/BlockSkyCompass.java index 3b004a72b..8d1a8ba58 100644 --- a/src/main/java/appeng/block/misc/BlockSkyCompass.java +++ b/src/main/java/appeng/block/misc/BlockSkyCompass.java @@ -31,6 +31,7 @@ import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.Direction; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.common.property.ExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; @@ -96,7 +97,7 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision } @Override - public boolean canPlaceBlockAt( final World w, final BlockPos pos ) + public boolean isValidPosition(BlockState state, IWorldReader w, BlockPos pos) { for( final Direction dir : Direction.VALUES ) { diff --git a/src/main/java/appeng/block/misc/BlockTinyTNT.java b/src/main/java/appeng/block/misc/BlockTinyTNT.java index 341445aa3..62863bce1 100644 --- a/src/main/java/appeng/block/misc/BlockTinyTNT.java +++ b/src/main/java/appeng/block/misc/BlockTinyTNT.java @@ -154,9 +154,9 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision } @Override - public void onBlockExploded( final World w, final BlockPos pos, final Explosion exp ) + public void onExplosionDestroy( final World w, final BlockPos pos, final Explosion exp ) { - super.onBlockExploded( w, pos, exp ); + super.onExplosionDestroy( w, pos, exp ); if( !w.isRemote ) { final EntityTinyTNTPrimed primedTinyTNTEntity = new EntityTinyTNTPrimed( w, pos.getX() + 0.5F, pos.getY() + 0.5F, pos.getZ() + 0.5F, exp diff --git a/src/main/java/appeng/block/networking/BlockCableBus.java b/src/main/java/appeng/block/networking/BlockCableBus.java index 872b52136..a8dc0a734 100644 --- a/src/main/java/appeng/block/networking/BlockCableBus.java +++ b/src/main/java/appeng/block/networking/BlockCableBus.java @@ -428,7 +428,7 @@ public class BlockCableBus extends AEBaseTileBlock implements IAEFacade @Override @OnlyIn( Dist.CLIENT ) - public void getSubBlocks( final CreativeTabs tabs, final NonNullList itemStacks ) + public void fillItemGroup(ItemGroup group, NonNullList itemStacks) { // do nothing } diff --git a/src/main/java/appeng/block/networking/BlockEnergyCell.java b/src/main/java/appeng/block/networking/BlockEnergyCell.java index 7ce81018b..3ef01f754 100644 --- a/src/main/java/appeng/block/networking/BlockEnergyCell.java +++ b/src/main/java/appeng/block/networking/BlockEnergyCell.java @@ -57,7 +57,7 @@ public class BlockEnergyCell extends AEBaseTileBlock @Override @OnlyIn( Dist.CLIENT ) - public void getSubBlocks( final CreativeTabs tabs, final NonNullList itemStacks ) + public void fillItemGroup(ItemGroup group, NonNullList itemStacks) { super.getSubBlocks( tabs, itemStacks ); diff --git a/src/main/java/appeng/block/paint/BlockPaint.java b/src/main/java/appeng/block/paint/BlockPaint.java index c66f9cdfe..08634789e 100644 --- a/src/main/java/appeng/block/paint/BlockPaint.java +++ b/src/main/java/appeng/block/paint/BlockPaint.java @@ -94,7 +94,7 @@ public class BlockPaint extends AEBaseTileBlock @Override @OnlyIn( Dist.CLIENT ) - public void getSubBlocks( final CreativeTabs tabs, final NonNullList itemStacks ) + public void fillItemGroup(ItemGroup group, NonNullList itemStacks) { // do nothing } diff --git a/src/main/java/appeng/block/spatial/BlockMatrixFrame.java b/src/main/java/appeng/block/spatial/BlockMatrixFrame.java index 557a1df4f..f876f5ae9 100644 --- a/src/main/java/appeng/block/spatial/BlockMatrixFrame.java +++ b/src/main/java/appeng/block/spatial/BlockMatrixFrame.java @@ -19,19 +19,24 @@ package appeng.block.spatial; -import java.util.Arrays; +import java.util.Collections; import java.util.List; +import net.minecraft.block.BlockRenderType; import net.minecraft.block.material.Material; import net.minecraft.block.BlockState; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; +import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.util.NonNullList; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; +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.Explosion; import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -45,24 +50,31 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision public BlockMatrixFrame() { - super( Material.ANVIL ); - this.setResistance( 6000000.0F ); - this.setBlockUnbreakable(); - this.setLightOpacity( 0 ); - this.setOpaque( false ); + super( Properties.create(Material.ANVIL).hardnessAndResistance(-1.0F, 6000000.0F).noDrops().notSolid() ); +// FIXME this.setLightOpacity( 0 ); +// FIXME this.setOpaque( false ); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.INVISIBLE; } @Override @OnlyIn( Dist.CLIENT ) - public void getSubBlocks( final CreativeTabs tabs, final NonNullList itemStacks ) + public void fillItemGroup(ItemGroup group, NonNullList itemStacks) { // do nothing } @Override - public Iterable getSelectedBoundingBoxesFromPool( final World w, final BlockPos pos, final Entity thePlayer, final boolean b ) - { - return Arrays.asList( new AxisAlignedBB[] {} );// AxisAlignedBB.getBoundingBox( 0.25, 0, 0.25, 0.75, 0.5, 0.75 ) + public VoxelShape getRaytraceShape(BlockState state, IBlockReader worldIn, BlockPos pos) { + return VoxelShapes.empty(); + } + + @Override + public Iterable getSelectedBoundingBoxesFromPool(IBlockReader w, BlockPos pos, Entity thePlayer, boolean b ) { + return Collections.emptyList();// AxisAlignedBB.getBoundingBox( 0.25, 0, 0.25, 0.75, 0.5, 0.75 ) // } ); } @@ -73,17 +85,18 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision } @Override - public boolean canPlaceBlockAt( final World worldIn, final BlockPos pos ) - { + public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { return false; } @Override - public void onBlockExploded( final World world, final BlockPos pos, final Explosion explosion ) + public void onExplosionDestroy( final World world, final BlockPos pos, final Explosion explosion ) { // Don't explode. } + + @Override public boolean canEntityDestroy( final BlockState state, final IBlockReader world, final BlockPos pos, final Entity entity ) { diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index bd9afc428..83334fe4c 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -22,6 +22,7 @@ package appeng.core.api.definitions; import appeng.api.definitions.IBlockDefinition; import appeng.api.definitions.IBlocks; import appeng.api.definitions.ITileDefinition; +import appeng.block.spatial.BlockMatrixFrame; import appeng.bootstrap.BlockRenderingCustomizer; import appeng.bootstrap.FeatureFactory; import appeng.bootstrap.IBlockRendering; @@ -134,8 +135,10 @@ public final class ApiBlocks implements IBlocks this.quartzOreCharged = registry.block( "charged_quartz_ore", () -> new BlockChargedQuartzOre(QUARTZ_PROPERTIES) ) .features( AEFeature.CERTUS_ORE, AEFeature.CHARGED_CERTUS_ORE ) .build(); -// this.matrixFrame = registry.block( "matrix_frame", BlockMatrixFrame::new ).features( AEFeature.SPATIAL_IO ).build(); -// + this.matrixFrame = registry.block( "matrix_frame", BlockMatrixFrame::new ) + .features( AEFeature.SPATIAL_IO ) + .build(); + FeatureFactory deco = registry.features( AEFeature.DECORATIVE_BLOCKS ); this.quartzBlock = deco.block( "quartz_block", () -> new AEDecorativeBlock(QUARTZ_PROPERTIES) ).build(); this.quartzPillar = deco.block( "quartz_pillar", () -> new BlockQuartzPillar(QUARTZ_PROPERTIES) ).build();