diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 8d21cb2f5..95286f8da 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -21,9 +21,13 @@ package appeng.block; import javax.annotation.Nullable; +import appeng.helpers.AEGlassMaterial; import appeng.util.Platform; import net.minecraft.block.Block; import net.minecraft.block.BlockState; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; +import net.minecraft.block.material.MaterialColor; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResultType; @@ -39,6 +43,7 @@ import net.minecraft.world.World; import appeng.api.util.IOrientable; import appeng.api.util.IOrientableBlock; +import net.minecraftforge.common.ToolType; public abstract class AEBaseBlock extends Block @@ -53,29 +58,44 @@ public abstract class AEBaseBlock extends Block protected AEBaseBlock( final Block.Properties props ) { super( props ); + } - // FIXME: Move to block registration - // FIXME if( mat == AEGlassMaterial.INSTANCE || mat == Material.GLASS ) - // FIXME { - // FIXME this.setSoundType( SoundType.GLASS ); - // FIXME } - // FIXME else if( mat == Material.ROCK ) - // FIXME { - // FIXME this.setSoundType( SoundType.STONE ); - // FIXME } - // FIXME else if( mat == Material.WOOD ) - // FIXME { - // FIXME this.setSoundType( SoundType.WOOD ); - // FIXME } - // FIXME else - // FIXME { - // FIXME this.setSoundType( SoundType.METAL ); - // FIXME } + /** + * Utility function to create block properties with some sensible defaults for AE blocks. + */ + public static Block.Properties defaultProps(Material material) { + return defaultProps(material, material.getColor()); + } - // FIXME this.setLightOpacity( 255 ); - // FIXME this.setLightLevel( 0 ); - // FIXME this.setHardness( 2.2F ); - // FIXME this.setHarvestLevel( "pickaxe", 0 ); + /** + * Utility function to create block properties with some sensible defaults for AE blocks. + */ + public static Block.Properties defaultProps(Material material, MaterialColor color) { + return Block.Properties.create(material, color) + // These values previousls were encoded in AEBaseBlock + .hardnessAndResistance(2.2f, 11.f) + .harvestTool(ToolType.PICKAXE) + .harvestLevel(0) + .sound(getDefaultSoundByMaterial(material)); + } + + private static SoundType getDefaultSoundByMaterial(Material mat) { + if( mat == AEGlassMaterial.INSTANCE || mat == Material.GLASS ) + { + return SoundType.GLASS; + } + else if( mat == Material.ROCK ) + { + return SoundType.STONE; + } + else if( mat == Material.WOOD ) + { + return SoundType.WOOD; + } + else + { + return SoundType.METAL; + } } @Override diff --git a/src/main/java/appeng/block/misc/BlockCellWorkbench.java b/src/main/java/appeng/block/misc/BlockCellWorkbench.java index faaaa0308..53c703e7d 100644 --- a/src/main/java/appeng/block/misc/BlockCellWorkbench.java +++ b/src/main/java/appeng/block/misc/BlockCellWorkbench.java @@ -43,7 +43,7 @@ public class BlockCellWorkbench extends AEBaseTileBlock public BlockCellWorkbench() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockCharger.java b/src/main/java/appeng/block/misc/BlockCharger.java index 5994297c5..aee166a01 100644 --- a/src/main/java/appeng/block/misc/BlockCharger.java +++ b/src/main/java/appeng/block/misc/BlockCharger.java @@ -19,46 +19,44 @@ package appeng.block.misc; -import java.util.Random; -import java.util.function.Function; - -import javax.annotation.Nullable; - +import appeng.api.AEApi; +import appeng.api.util.AEAxisAlignedBB; +import appeng.block.AEBaseTileBlock; +import appeng.client.render.effects.LightningFX; +import appeng.client.render.renderable.ItemRenderable; +import appeng.client.render.tesr.ModularTESR; +import appeng.core.AEConfig; +import appeng.core.AppEng; +import appeng.tile.misc.TileCharger; +import appeng.util.Platform; +import net.minecraft.block.BlockState; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.TransformationMatrix; +import net.minecraft.client.renderer.Vector3f; +import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; 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 org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; - -import net.minecraft.block.BlockState; -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.Matrix4f; -import net.minecraft.client.renderer.Vector3f; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -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.world.World; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; -import appeng.api.AEApi; -import appeng.api.util.AEAxisAlignedBB; -import appeng.block.AEBaseTileBlock; -import appeng.client.render.renderable.ItemRenderable; -import appeng.client.render.tesr.ModularTESR; -import appeng.core.AEConfig; -import appeng.core.AppEng; -import appeng.tile.AEBaseTile; -import appeng.tile.misc.TileCharger; -import appeng.util.Platform; +import javax.annotation.Nullable; +import java.util.Random; +import java.util.function.Function; public class BlockCharger extends AEBaseTileBlock @@ -66,7 +64,7 @@ public class BlockCharger extends AEBaseTileBlock public BlockCharger() { - super( Properties.create(Material.IRON).notSolid() ); + super( defaultProps(Material.IRON).notSolid() ); this.setFullSize( this.setOpaque( false ) ); } @@ -110,12 +108,10 @@ public class BlockCharger extends AEBaseTileBlock return; } - final AEBaseTile tile = this.getTileEntity( w, pos ); - if( tile instanceof TileCharger ) + final TileCharger tile = this.getTileEntity( w, pos ); + if(tile != null) { - final TileCharger tc = (TileCharger) tile; - - if( AEApi.instance().definitions().materials().certusQuartzCrystalCharged().isSameAs( tc.getInternalInventory().getStackInSlot( 0 ) ) ) + if( AEApi.instance().definitions().materials().certusQuartzCrystalCharged().isSameAs( tile.getInternalInventory().getStackInSlot( 0 ) ) ) { final double xOff = 0.0; final double yOff = 0.0; @@ -125,9 +121,9 @@ public class BlockCharger extends AEBaseTileBlock { if( AppEng.proxy.shouldAddParticles( r ) ) { -// FIXME final LightningFX fx = new LightningFX( w, xOff + 0.5 + pos.getX(), yOff + 0.5 + pos.getY(), zOff + 0.5 + pos -// FIXME .getZ(), 0.0D, 0.0D, 0.0D ); -// FIXME Minecraft.getInstance().effectRenderer.addEffect( fx ); + final LightningFX fx = new LightningFX( w, xOff + 0.5 + pos.getX(), yOff + 0.5 + pos.getY(), zOff + 0.5 + pos + .getZ(), 0.0, 0.0, 0.0 ); + Minecraft.getInstance().particles.addEffect( fx ); } } } @@ -202,10 +198,9 @@ public class BlockCharger extends AEBaseTileBlock } @OnlyIn( Dist.CLIENT ) - private static Pair getRenderedItem( TileCharger tile ) + private static Pair getRenderedItem(TileCharger tile ) { - Matrix4f transform = new Matrix4f(); - transform.translate( new Vector3f( 0.5f, 0.4f, 0.5f ) ); + TransformationMatrix transform = new TransformationMatrix(new Vector3f( 0.5f, 0.375f, 0.5f ), null, null, null); return new ImmutablePair<>( tile.getInternalInventory().getStackInSlot( 0 ), transform ); } diff --git a/src/main/java/appeng/block/misc/BlockCondenser.java b/src/main/java/appeng/block/misc/BlockCondenser.java index 6c934fe2c..68ef53771 100644 --- a/src/main/java/appeng/block/misc/BlockCondenser.java +++ b/src/main/java/appeng/block/misc/BlockCondenser.java @@ -46,7 +46,7 @@ public class BlockCondenser extends AEBaseTileBlock public BlockCondenser() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockInterface.java b/src/main/java/appeng/block/misc/BlockInterface.java index f621ca65f..d240b5e42 100644 --- a/src/main/java/appeng/block/misc/BlockInterface.java +++ b/src/main/java/appeng/block/misc/BlockInterface.java @@ -52,7 +52,7 @@ public class BlockInterface extends AEBaseTileBlock public BlockInterface() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/block/misc/BlockLightDetector.java b/src/main/java/appeng/block/misc/BlockLightDetector.java index a15f137ca..bea9134c8 100644 --- a/src/main/java/appeng/block/misc/BlockLightDetector.java +++ b/src/main/java/appeng/block/misc/BlockLightDetector.java @@ -52,7 +52,7 @@ public class BlockLightDetector extends AEBaseTileBlock imple public BlockLightDetector() { - super( Properties.create(Material.MISCELLANEOUS).notSolid() ); + super( defaultProps(Material.MISCELLANEOUS).notSolid() ); this.setDefaultState( this.getDefaultState().with(BlockStateProperties.FACING, Direction.UP ).with( ODD, false ) ); } diff --git a/src/main/java/appeng/block/misc/BlockQuartzFixture.java b/src/main/java/appeng/block/misc/BlockQuartzFixture.java index 75e61279a..b8eeda047 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzFixture.java +++ b/src/main/java/appeng/block/misc/BlockQuartzFixture.java @@ -81,7 +81,7 @@ public class BlockQuartzFixture extends AEBaseBlock implements IOrientableBlock public BlockQuartzFixture() { - super(Block.Properties.create(Material.MISCELLANEOUS).doesNotBlockMovement().hardnessAndResistance(0, 0).lightValue(14).sound(SoundType.GLASS)); + super(defaultProps(Material.MISCELLANEOUS).doesNotBlockMovement().hardnessAndResistance(0).lightValue(14).sound(SoundType.GLASS)); this.setDefaultState( getDefaultState().with( FACING, Direction.UP ).with( ODD, false ) ); this.setFullSize( false ); diff --git a/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java b/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java index 5602018ca..6f66bfb57 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java +++ b/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java @@ -48,7 +48,7 @@ public class BlockQuartzGrowthAccelerator extends AEBaseTileBlock public BlockSecurityStation() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); this.setDefaultState( this.getDefaultState().with( POWERED, false ) ); } diff --git a/src/main/java/appeng/block/misc/BlockTinyTNT.java b/src/main/java/appeng/block/misc/BlockTinyTNT.java index a88378c35..158d45314 100644 --- a/src/main/java/appeng/block/misc/BlockTinyTNT.java +++ b/src/main/java/appeng/block/misc/BlockTinyTNT.java @@ -55,9 +55,9 @@ public class BlockTinyTNT extends AEBaseBlock private static final VoxelShape SHAPE = VoxelShapes.create(new AxisAlignedBB( 0.25f, 0.0f, 0.25f, 0.75f, 0.5f, 0.75f )); - public BlockTinyTNT() + public BlockTinyTNT(Block.Properties props) { - super( Properties.create(Material.TNT).hardnessAndResistance(0).sound(SoundType.GROUND).notSolid() ); + super(props); } @Override diff --git a/src/main/java/appeng/block/misc/BlockVibrationChamber.java b/src/main/java/appeng/block/misc/BlockVibrationChamber.java index 7af625cce..85cf9c841 100644 --- a/src/main/java/appeng/block/misc/BlockVibrationChamber.java +++ b/src/main/java/appeng/block/misc/BlockVibrationChamber.java @@ -56,7 +56,7 @@ public final class BlockVibrationChamber extends AEBaseTileBlock /* FIXME implem private static final ICableBusContainer NULL_CABLE_BUS = new NullCableBusContainer(); public BlockCableBus() { - super(Properties.create(AEGlassMaterial.INSTANCE).notSolid()); + super(defaultProps(AEGlassMaterial.INSTANCE).notSolid()); } @Override diff --git a/src/main/java/appeng/block/networking/BlockController.java b/src/main/java/appeng/block/networking/BlockController.java index aba766490..abc88806f 100644 --- a/src/main/java/appeng/block/networking/BlockController.java +++ b/src/main/java/appeng/block/networking/BlockController.java @@ -74,7 +74,7 @@ public class BlockController extends AEBaseTileBlock public BlockController() { - super( Block.Properties.create(Material.IRON).hardnessAndResistance(6) ); + super( defaultProps(Material.IRON).hardnessAndResistance(6) ); this.setDefaultState( this.getDefaultState() .with( CONTROLLER_STATE, ControllerBlockState.offline ) .with( CONTROLLER_TYPE, ControllerRenderType.block ) ); diff --git a/src/main/java/appeng/block/networking/BlockCreativeEnergyCell.java b/src/main/java/appeng/block/networking/BlockCreativeEnergyCell.java index a84d4b7b2..ad1dede55 100644 --- a/src/main/java/appeng/block/networking/BlockCreativeEnergyCell.java +++ b/src/main/java/appeng/block/networking/BlockCreativeEnergyCell.java @@ -29,6 +29,6 @@ public class BlockCreativeEnergyCell extends AEBaseTileBlock public BlockEnergyAcceptor() { - super(Block.Properties.create(Material.IRON) ); + super(defaultProps(Material.IRON) ); } } diff --git a/src/main/java/appeng/block/networking/BlockEnergyCell.java b/src/main/java/appeng/block/networking/BlockEnergyCell.java index 44bf169e9..062a050d2 100644 --- a/src/main/java/appeng/block/networking/BlockEnergyCell.java +++ b/src/main/java/appeng/block/networking/BlockEnergyCell.java @@ -41,7 +41,7 @@ public class BlockEnergyCell extends AEBaseTileBlock public BlockEnergyCell() { - super( Properties.create(AEGlassMaterial.INSTANCE) ); + super( defaultProps(AEGlassMaterial.INSTANCE) ); } @Override diff --git a/src/main/java/appeng/block/networking/BlockWireless.java b/src/main/java/appeng/block/networking/BlockWireless.java index 7e21a4bac..a7fe25b35 100644 --- a/src/main/java/appeng/block/networking/BlockWireless.java +++ b/src/main/java/appeng/block/networking/BlockWireless.java @@ -67,7 +67,7 @@ public class BlockWireless extends AEBaseTileBlock public BlockWireless() { - super( Properties.create(AEGlassMaterial.INSTANCE).notSolid() ); + super( defaultProps(AEGlassMaterial.INSTANCE).notSolid() ); this.setFullSize( false ); this.setOpaque( false ); this.setDefaultState( this.getDefaultState().with( STATE, State.OFF ) ); diff --git a/src/main/java/appeng/block/paint/BlockPaint.java b/src/main/java/appeng/block/paint/BlockPaint.java index 21c53d6eb..06cf8156c 100644 --- a/src/main/java/appeng/block/paint/BlockPaint.java +++ b/src/main/java/appeng/block/paint/BlockPaint.java @@ -45,7 +45,7 @@ public class BlockPaint extends AEBaseTileBlock { public BlockPaint() { - super(Properties.create(Material.WATER, MaterialColor.AIR)); + super(defaultProps(Material.WATER, MaterialColor.AIR)); this.setFullSize( false ); this.setOpaque( false ); } diff --git a/src/main/java/appeng/block/qnb/BlockQuantumLinkChamber.java b/src/main/java/appeng/block/qnb/BlockQuantumLinkChamber.java index 4e1df61e4..f4f3a70e5 100644 --- a/src/main/java/appeng/block/qnb/BlockQuantumLinkChamber.java +++ b/src/main/java/appeng/block/qnb/BlockQuantumLinkChamber.java @@ -65,7 +65,7 @@ public class BlockQuantumLinkChamber extends BlockQuantumBase public BlockQuantumLinkChamber() { - super(Properties.create(AEGlassMaterial.INSTANCE) ); + super(defaultProps(AEGlassMaterial.INSTANCE) ); } @Override diff --git a/src/main/java/appeng/block/qnb/BlockQuantumRing.java b/src/main/java/appeng/block/qnb/BlockQuantumRing.java index cf4d3fcee..a01f3821d 100644 --- a/src/main/java/appeng/block/qnb/BlockQuantumRing.java +++ b/src/main/java/appeng/block/qnb/BlockQuantumRing.java @@ -37,7 +37,7 @@ public class BlockQuantumRing extends BlockQuantumBase { private static final VoxelShape SHAPE_FORMED = createShape(1.0 / 16.0); public BlockQuantumRing() { - super(Properties.create(Material.IRON)); + super(defaultProps(Material.IRON)); } @Override diff --git a/src/main/java/appeng/block/spatial/BlockSpatialIOPort.java b/src/main/java/appeng/block/spatial/BlockSpatialIOPort.java index 182366c19..169ad3770 100644 --- a/src/main/java/appeng/block/spatial/BlockSpatialIOPort.java +++ b/src/main/java/appeng/block/spatial/BlockSpatialIOPort.java @@ -48,7 +48,7 @@ public class BlockSpatialIOPort extends AEBaseTileBlock public BlockSpatialIOPort() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/block/spatial/BlockSpatialPylon.java b/src/main/java/appeng/block/spatial/BlockSpatialPylon.java index e61df5480..66bfa1641 100644 --- a/src/main/java/appeng/block/spatial/BlockSpatialPylon.java +++ b/src/main/java/appeng/block/spatial/BlockSpatialPylon.java @@ -35,7 +35,7 @@ public class BlockSpatialPylon extends AEBaseTileBlock public BlockSpatialPylon() { - super( Properties.create(AEGlassMaterial.INSTANCE) ); + super( defaultProps(AEGlassMaterial.INSTANCE) ); } @Override diff --git a/src/main/java/appeng/block/storage/BlockChest.java b/src/main/java/appeng/block/storage/BlockChest.java index 3f4ad3934..e99822f5d 100644 --- a/src/main/java/appeng/block/storage/BlockChest.java +++ b/src/main/java/appeng/block/storage/BlockChest.java @@ -52,7 +52,7 @@ public class BlockChest extends AEBaseTileBlock public BlockChest() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); this.setDefaultState( this.getDefaultState().with( SLOT_STATE, DriveSlotState.EMPTY ) ); } diff --git a/src/main/java/appeng/block/storage/BlockDrive.java b/src/main/java/appeng/block/storage/BlockDrive.java index f66cb5c87..da936edb9 100644 --- a/src/main/java/appeng/block/storage/BlockDrive.java +++ b/src/main/java/appeng/block/storage/BlockDrive.java @@ -43,7 +43,7 @@ public class BlockDrive extends AEBaseTileBlock public BlockDrive() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/block/storage/BlockIOPort.java b/src/main/java/appeng/block/storage/BlockIOPort.java index fd1a9dee9..079ab689f 100644 --- a/src/main/java/appeng/block/storage/BlockIOPort.java +++ b/src/main/java/appeng/block/storage/BlockIOPort.java @@ -45,7 +45,7 @@ public class BlockIOPort extends AEBaseTileBlock public BlockIOPort() { - super( Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/client/render/effects/LightningFX.java b/src/main/java/appeng/client/render/effects/LightningFX.java index e9226159d..e6e58e0cf 100644 --- a/src/main/java/appeng/client/render/effects/LightningFX.java +++ b/src/main/java/appeng/client/render/effects/LightningFX.java @@ -56,7 +56,7 @@ public class LightningFX extends SpriteTexturedParticle private final double[] verticesWithUV = new double[3]; private boolean hasData = false; - private LightningFX( final World w, final double x, final double y, final double z, final double r, final double g, final double b ) + public LightningFX( final World w, final double x, final double y, final double z, final double r, final double g, final double b ) { this( w, x, y, z, r, g, b, 6 ); this.regen(); diff --git a/src/main/java/appeng/client/render/renderable/ItemRenderable.java b/src/main/java/appeng/client/render/renderable/ItemRenderable.java index fc2e560e7..05ce56dae 100644 --- a/src/main/java/appeng/client/render/renderable/ItemRenderable.java +++ b/src/main/java/appeng/client/render/renderable/ItemRenderable.java @@ -24,6 +24,7 @@ import java.util.function.Function; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.Matrix4f; +import net.minecraft.client.renderer.TransformationMatrix; import net.minecraft.client.renderer.model.ItemCameraTransforms; import org.apache.commons.lang3.tuple.Pair; import org.lwjgl.BufferUtils; @@ -36,9 +37,9 @@ import net.minecraft.tileentity.TileEntity; public class ItemRenderable implements Renderable { - private final Function> f; + private final Function> f; - public ItemRenderable( Function> f ) + public ItemRenderable( Function> f ) { this.f = f; } @@ -46,16 +47,16 @@ public class ItemRenderable implements Renderable @Override public void renderTileEntityAt(T te, float partialTicks, com.mojang.blaze3d.matrix.MatrixStack matrixStack, IRenderTypeBuffer buffers, int combinedLight, int combinedOverlay) { - Pair pair = this.f.apply( te ); + Pair pair = this.f.apply( te ); if( pair != null && pair.getLeft() != null ) { - matrixStack.push(); if( pair.getRight() != null ) { - FloatBuffer matrix = BufferUtils.createFloatBuffer( 16 ); - // FIXME pair.getRight().store( matrix ); - // FIXME matrix.flip(); - // FIXME matrixStack.( matrix ); + pair.getRight().push(matrixStack); + } + else + { + matrixStack.push(); } Minecraft.getInstance().getItemRenderer().renderItem( pair.getLeft(), ItemCameraTransforms.TransformType.GROUND, combinedLight, combinedOverlay, matrixStack, buffers ); matrixStack.pop(); diff --git a/src/main/java/appeng/core/api/definitions/ApiBlocks.java b/src/main/java/appeng/core/api/definitions/ApiBlocks.java index e2bc7dd9b..0271dc3e3 100644 --- a/src/main/java/appeng/core/api/definitions/ApiBlocks.java +++ b/src/main/java/appeng/core/api/definitions/ApiBlocks.java @@ -57,6 +57,7 @@ import appeng.decorative.solid.*; import appeng.entity.EntityTinyTNTPrimed; import appeng.fluids.block.BlockFluidInterface; import appeng.fluids.tile.TileFluidInterface; +import appeng.helpers.AEGlassMaterial; import appeng.hooks.DispenserBehaviorTinyTNT; import appeng.tile.crafting.TileCraftingMonitorTile; import appeng.tile.crafting.TileCraftingStorageTile; @@ -83,6 +84,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.common.ToolType; +import static appeng.block.AEBaseBlock.defaultProps; import static appeng.block.crafting.AbstractCraftingUnitBlock.CraftingUnitType; import static appeng.decorative.solid.BlockSkyStone.SkystoneType; @@ -169,10 +171,10 @@ public final class ApiBlocks implements IBlocks private final IBlockDefinition cubeGenerator; private final IBlockDefinition energyGenerator; - private static final Block.Properties QUARTZ_PROPERTIES = Block.Properties.create(Material.ROCK) + private static final Block.Properties QUARTZ_PROPERTIES = defaultProps(Material.ROCK) .hardnessAndResistance(3, 5); - private static final Block.Properties SKYSTONE_PROPERTIES = Block.Properties.create( Material.ROCK ) + private static final Block.Properties SKYSTONE_PROPERTIES = defaultProps( Material.ROCK ) .hardnessAndResistance( 50, 150 ); public ApiBlocks(FeatureFactory registry) @@ -200,7 +202,7 @@ public final class ApiBlocks implements IBlocks this.chiseledQuartzBlock = deco.block( "chiseled_quartz_block", () -> new AEDecorativeBlock(QUARTZ_PROPERTIES) ).build(); this.quartzGlass = registry.features( AEFeature.QUARTZ_GLASS ) - .block( "quartz_glass", () -> new BlockQuartzGlass(Block.Properties.create(Material.GLASS).hardnessAndResistance(2.2F).sound(SoundType.GLASS).notSolid()) ) + .block( "quartz_glass", () -> new BlockQuartzGlass(defaultProps(Material.GLASS).notSolid()) ) .rendering(new BlockRenderingCustomizer() { @Override @OnlyIn(Dist.CLIENT) @@ -209,7 +211,7 @@ public final class ApiBlocks implements IBlocks } }) .build(); - this.quartzVibrantGlass = deco.block( "quartz_vibrant_glass", () -> new BlockQuartzLamp(Block.Properties.create(Material.GLASS).hardnessAndResistance(2.2F).sound(SoundType.GLASS).lightValue(15).notSolid()) ) + this.quartzVibrantGlass = deco.block( "quartz_vibrant_glass", () -> new BlockQuartzLamp(defaultProps(Material.GLASS).lightValue(15).notSolid()) ) .addFeatures( AEFeature.DECORATIVE_LIGHTS, AEFeature.QUARTZ_GLASS ) .rendering(new BlockRenderingCustomizer() { @Override @@ -234,7 +236,7 @@ public final class ApiBlocks implements IBlocks this.fluixBlock = registry.features( AEFeature.FLUIX ).block( "fluix_block", () -> new AEDecorativeBlock(QUARTZ_PROPERTIES) ).build(); this.skyStoneBlock = registry.features( AEFeature.SKY_STONE ) - .block( "sky_stone_block", () -> new BlockSkyStone( SkystoneType.STONE, Block.Properties.create(Material.ROCK) + .block( "sky_stone_block", () -> new BlockSkyStone( SkystoneType.STONE, defaultProps(Material.ROCK) .hardnessAndResistance(50, 150) .harvestLevel(3) ) ) .build(); @@ -249,7 +251,7 @@ public final class ApiBlocks implements IBlocks .addFeatures( AEFeature.SKY_STONE ) .build(); - Block.Properties skyStoneChestProps = Block.Properties.create(Material.ROCK) + Block.Properties skyStoneChestProps = defaultProps(Material.ROCK) .hardnessAndResistance(50, 150) .notSolid(); @@ -271,17 +273,17 @@ public final class ApiBlocks implements IBlocks .tileEntity( skyChestTile ) .build(); - this.skyCompass = registry.block( "sky_compass", () -> new BlockSkyCompass(Block.Properties.create(Material.MISCELLANEOUS)) ) + this.skyCompass = registry.block( "sky_compass", () -> new BlockSkyCompass(defaultProps(Material.MISCELLANEOUS)) ) .features( AEFeature.METEORITE_COMPASS ) .tileEntity( registry.tileEntity("sky_compass", TileSkyCompass.class, TileSkyCompass::new) .rendering( new SkyCompassRendering() ) .build() ) .build(); - this.grindstone = registry.block( "grindstone", () -> new BlockGrinder(Block.Properties.create(Material.ROCK).hardnessAndResistance(3.2f)) ) + this.grindstone = registry.block( "grindstone", () -> new BlockGrinder(defaultProps(Material.ROCK).hardnessAndResistance(3.2f)) ) .features( AEFeature.GRIND_STONE ) .tileEntity( registry.tileEntity("grindstone", TileGrinder.class, TileGrinder::new ).build() ) .build(); - this.crank = registry.block( "crank", () -> new BlockCrank(Block.Properties.create(Material.WOOD).harvestTool(ToolType.AXE).harvestLevel(0).notSolid()) ) + this.crank = registry.block( "crank", () -> new BlockCrank(defaultProps(Material.WOOD).harvestTool(ToolType.AXE).harvestLevel(0).notSolid()) ) .features( AEFeature.GRIND_STONE ) .tileEntity( registry.tileEntity("crank", TileCrank.class, TileCrank::new ) .rendering(new TileEntityRenderingCustomizer() { @@ -293,7 +295,7 @@ public final class ApiBlocks implements IBlocks }) .build() ) .build(); - this.inscriber = registry.block( "inscriber", () -> new BlockInscriber(Block.Properties.create(Material.IRON).notSolid()) ) + this.inscriber = registry.block( "inscriber", () -> new BlockInscriber(defaultProps(Material.IRON).notSolid()) ) .features( AEFeature.INSCRIBER ) .tileEntity( registry.tileEntity("inscriber", TileInscriber.class, TileInscriber::new) .rendering(new InscriberRendering()) @@ -325,7 +327,7 @@ public final class ApiBlocks implements IBlocks .setShouldReceiveVelocityUpdates(true)) .build(); - this.tinyTNT = registry.block( "tiny_tnt", BlockTinyTNT::new ) + this.tinyTNT = registry.block( "tiny_tnt", () -> new BlockTinyTNT(defaultProps(Material.TNT).sound(SoundType.GROUND).hardnessAndResistance(0).notSolid()) ) .features( AEFeature.TINY_TNT ) .bootstrap( ( block, item ) -> (IInitComponent) () -> DispenserBlock.registerDispenseBehavior( item, new DispenserBehaviorTinyTNT() ) ) @@ -425,7 +427,7 @@ public final class ApiBlocks implements IBlocks .build(); FeatureFactory crafting = registry.features( AEFeature.CRAFTING_CPU ); - Block.Properties craftingBlockProps = Block.Properties.create(Material.IRON); + Block.Properties craftingBlockProps = defaultProps(Material.IRON); this.craftingUnit = crafting.block( "crafting_unit", () -> new CraftingUnitBlock( craftingBlockProps, CraftingUnitType.UNIT ) ) .rendering( new CraftingCubeRendering() ) .tileEntity( craftingUnit ) @@ -483,7 +485,7 @@ public final class ApiBlocks implements IBlocks }) .build(); - this.molecularAssembler = registry.block( "molecular_assembler", () -> new BlockMolecularAssembler(Block.Properties.create(Material.IRON).notSolid()) ) + this.molecularAssembler = registry.block( "molecular_assembler", () -> new BlockMolecularAssembler(defaultProps(Material.IRON).notSolid()) ) .features( AEFeature.MOLECULAR_ASSEMBLER ) .rendering(new BlockRenderingCustomizer() { @OnlyIn(Dist.CLIENT) @@ -605,10 +607,6 @@ public final class ApiBlocks implements IBlocks .build(); } - private Block createQuartzOreBlock() { - return new BlockQuartzOre(Block.Properties.create(Material.ROCK).hardnessAndResistance(3, 5)); - } - @Override public IBlockDefinition quartzOre() { diff --git a/src/main/java/appeng/core/api/definitions/ApiMaterials.java b/src/main/java/appeng/core/api/definitions/ApiMaterials.java index 2b9fd5d2f..c846006d3 100644 --- a/src/main/java/appeng/core/api/definitions/ApiMaterials.java +++ b/src/main/java/appeng/core/api/definitions/ApiMaterials.java @@ -121,11 +121,11 @@ public final class ApiMaterials implements IMaterials this.registry = registry; EntitySingularity.TYPE = registry.entity("singularity", EntitySingularity::new, EntityClassification.MISC) - .customize(builder -> builder.setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true)) + .customize(builder -> builder.size(0.2f, 0.2f).setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true)) .build(); EntityChargedQuartz.TYPE = registry.entity("charged_quartz", EntityChargedQuartz::new, EntityClassification.MISC) - .customize(builder -> builder.setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true)) + .customize(builder -> builder.size(0.2f, 0.2f).setTrackingRange(16).setUpdateInterval(4).setShouldReceiveVelocityUpdates(true)) .build(); this.cell2SpatialPart = createMaterial(MaterialType.SPATIAL_2_CELL_COMPONENT ); diff --git a/src/main/java/appeng/debug/BlockChunkloader.java b/src/main/java/appeng/debug/BlockChunkloader.java index bc26733e0..586b1f8be 100644 --- a/src/main/java/appeng/debug/BlockChunkloader.java +++ b/src/main/java/appeng/debug/BlockChunkloader.java @@ -27,7 +27,7 @@ import net.minecraft.block.material.Material; public class BlockChunkloader extends AEBaseTileBlock { public BlockChunkloader() { - super(Block.Properties.create(Material.IRON)); + super(defaultProps(Material.IRON)); } } diff --git a/src/main/java/appeng/debug/BlockCubeGenerator.java b/src/main/java/appeng/debug/BlockCubeGenerator.java index 9b3db7e9e..54ea771c7 100644 --- a/src/main/java/appeng/debug/BlockCubeGenerator.java +++ b/src/main/java/appeng/debug/BlockCubeGenerator.java @@ -39,7 +39,7 @@ public class BlockCubeGenerator extends AEBaseTileBlock public BlockCubeGenerator() { - super(Block.Properties.create(Material.IRON) ); + super(defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/debug/BlockEnergyGenerator.java b/src/main/java/appeng/debug/BlockEnergyGenerator.java index 83d766cb8..5ab2c8353 100644 --- a/src/main/java/appeng/debug/BlockEnergyGenerator.java +++ b/src/main/java/appeng/debug/BlockEnergyGenerator.java @@ -30,7 +30,7 @@ public class BlockEnergyGenerator extends AEBaseTileBlock public BlockEnergyGenerator() { - super( Block.Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } } diff --git a/src/main/java/appeng/debug/BlockItemGen.java b/src/main/java/appeng/debug/BlockItemGen.java index 5f2062b76..0f8ee348a 100644 --- a/src/main/java/appeng/debug/BlockItemGen.java +++ b/src/main/java/appeng/debug/BlockItemGen.java @@ -30,7 +30,7 @@ public class BlockItemGen extends AEBaseTileBlock public BlockItemGen() { - super( Block.Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } } diff --git a/src/main/java/appeng/debug/BlockPhantomNode.java b/src/main/java/appeng/debug/BlockPhantomNode.java index 9809720fb..0984295b7 100644 --- a/src/main/java/appeng/debug/BlockPhantomNode.java +++ b/src/main/java/appeng/debug/BlockPhantomNode.java @@ -39,7 +39,7 @@ public class BlockPhantomNode extends AEBaseTileBlock public BlockPhantomNode() { - super( Block.Properties.create(Material.IRON) ); + super( defaultProps(Material.IRON) ); } @Override diff --git a/src/main/java/appeng/fluids/block/BlockFluidInterface.java b/src/main/java/appeng/fluids/block/BlockFluidInterface.java index aa7fb9bfe..2bdf2991a 100644 --- a/src/main/java/appeng/fluids/block/BlockFluidInterface.java +++ b/src/main/java/appeng/fluids/block/BlockFluidInterface.java @@ -44,7 +44,7 @@ public class BlockFluidInterface extends AEBaseTileBlock { public BlockFluidInterface() { - super(Properties.create( Material.IRON )); + super(defaultProps( Material.IRON )); } @Override