diff --git a/build.properties b/build.properties index 5605e4ea..0a4c6c2f 100644 --- a/build.properties +++ b/build.properties @@ -1,7 +1,7 @@ minecraft.version=1.10.2 forge.version=12.18.1.2079 -gt.version=5.10.20 +gt.version=5.10.21 forestry.version=5.2.7.220 ic2.version=2.6.99-ex110 diff --git a/build/libs/gregtech-5.10.20-dev.jar b/build/libs/gregtech-5.10.20-dev.jar index cbdfc392..5653fe7a 100644 Binary files a/build/libs/gregtech-5.10.20-dev.jar and b/build/libs/gregtech-5.10.20-dev.jar differ diff --git a/build/libs/gregtech-5.10.20-sources.jar b/build/libs/gregtech-5.10.20-sources.jar index f4f3a513..0958dd18 100644 Binary files a/build/libs/gregtech-5.10.20-sources.jar and b/build/libs/gregtech-5.10.20-sources.jar differ diff --git a/build/libs/gregtech-5.10.20.jar b/build/libs/gregtech-5.10.20.jar index 8ac59e40..422d2973 100644 Binary files a/build/libs/gregtech-5.10.20.jar and b/build/libs/gregtech-5.10.20.jar differ diff --git a/src/main/java/gregtech/api/enums/StoneTypes.java b/src/main/java/gregtech/api/enums/StoneTypes.java index 076b4219..a69f75f8 100644 --- a/src/main/java/gregtech/api/enums/StoneTypes.java +++ b/src/main/java/gregtech/api/enums/StoneTypes.java @@ -9,26 +9,28 @@ import gregtech.api.objects.RegIconContainer; public enum StoneTypes { //vanilla ones - STONE(new RegIconContainer("blocks/stone"), OrePrefixes.ore), - NETHERRACK(new RegIconContainer("blocks/netherrack"), OrePrefixes.oreNetherrack), - ENDSTONE(new RegIconContainer("blocks/end_stone"), OrePrefixes.oreEndstone), + STONE(new RegIconContainer("blocks/stone"), OrePrefixes.ore, Materials.Stone), + NETHERRACK(new RegIconContainer("blocks/netherrack"), OrePrefixes.oreNetherrack, Materials.Netherrack), + ENDSTONE(new RegIconContainer("blocks/end_stone"), OrePrefixes.oreEndstone, Materials.Endstone), //gt ones - BLACK_GRANITE(Textures.BlockIcons.GRANITE_BLACK_STONE, OrePrefixes.oreBlackgranite), - RED_GRANITE(Textures.BlockIcons.GRANITE_RED_STONE, OrePrefixes.oreRedgranite), - MARBLE(Textures.BlockIcons.MARBLE_STONE, OrePrefixes.oreMarble), - BASALT(Textures.BlockIcons.BASALT_STONE, OrePrefixes.oreBasalt); + BLACK_GRANITE(Textures.BlockIcons.GRANITE_BLACK_STONE, OrePrefixes.oreBlackgranite, Materials.BlackGranite), + RED_GRANITE(Textures.BlockIcons.GRANITE_RED_STONE, OrePrefixes.oreRedgranite, Materials.RedGranite), + MARBLE(Textures.BlockIcons.MARBLE_STONE, OrePrefixes.oreMarble, Materials.Marble), + BASALT(Textures.BlockIcons.BASALT_STONE, OrePrefixes.oreBasalt, Materials.Basalt); public final int mId = ordinal(); public final IIconContainer mIconContainer; public final OrePrefixes processingPrefix; + public final Materials stoneMaterial; public static StoneTypes[] mTypes = values(); - StoneTypes(IIconContainer mIconContainer, OrePrefixes processingPrefix) { + StoneTypes(IIconContainer mIconContainer, OrePrefixes processingPrefix, Materials stoneMaterial) { this.mIconContainer = mIconContainer; this.processingPrefix= processingPrefix; + this.stoneMaterial = stoneMaterial; } } diff --git a/src/main/java/gregtech/api/items/GT_Generic_Block.java b/src/main/java/gregtech/api/items/GT_Generic_Block.java index 4c0b78a8..2d55a814 100644 --- a/src/main/java/gregtech/api/items/GT_Generic_Block.java +++ b/src/main/java/gregtech/api/items/GT_Generic_Block.java @@ -1,5 +1,6 @@ package gregtech.api.items; +import codechicken.lib.render.DigIconParticle; import gregtech.api.util.GT_LanguageManager; import gregtech.common.render.RenderBlocks; import net.minecraft.block.Block; @@ -8,21 +9,28 @@ import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyInteger; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.particle.ParticleDigging; +import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumFacing; +import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.RayTraceResult; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; +import java.util.Random; + import static gregtech.api.enums.GT_Values.W; public abstract class GT_Generic_Block extends Block { @@ -40,6 +48,81 @@ public abstract class GT_Generic_Block extends Block { setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); } + @Override + public boolean addLandingEffects(IBlockState state, WorldServer worldObj, BlockPos blockPosition, IBlockState iblockstate, EntityLivingBase entity, int numberOfParticles) { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean addHitEffects(IBlockState state, World worldObj, RayTraceResult target, ParticleManager manager) { + addBlockHitEffects(worldObj, target.getBlockPos() != null ? target.getBlockPos() : BlockPos.ORIGIN, + target.sideHit != null ? target.sideHit : EnumFacing.UP, worldObj.rand, manager); + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean addDestroyEffects(World world, BlockPos pos, ParticleManager manager) { + int count = 14 + world.rand.nextInt(10); + for(int i = 0; i < count; i++) { + addBlockHitEffects(world, pos, EnumFacing.UP, world.rand, manager); + } + return true; + } + + @SideOnly(Side.CLIENT) + public void addBlockHitEffects(World worldObj, BlockPos pos, EnumFacing side, Random rand, ParticleManager manager) + { + IBlockState iblockstate = worldObj.getBlockState(pos); + + if (iblockstate.getRenderType() != EnumBlockRenderType.INVISIBLE) { + int i = pos.getX(); + int j = pos.getY(); + int k = pos.getZ(); + float f = 0.1F; + AxisAlignedBB axisalignedbb = iblockstate.getBoundingBox(worldObj, pos); + double d0 = (double) i + rand.nextDouble() * (axisalignedbb.maxX - axisalignedbb.minX - 0.20000000298023224D) + 0.10000000149011612D + axisalignedbb.minX; + double d1 = (double) j + rand.nextDouble() * (axisalignedbb.maxY - axisalignedbb.minY - 0.20000000298023224D) + 0.10000000149011612D + axisalignedbb.minY; + double d2 = (double) k + rand.nextDouble() * (axisalignedbb.maxZ - axisalignedbb.minZ - 0.20000000298023224D) + 0.10000000149011612D + axisalignedbb.minZ; + + if (side == EnumFacing.DOWN) { + d1 = (double) j + axisalignedbb.minY - 0.10000000149011612D; + } + + if (side == EnumFacing.UP) { + d1 = (double) j + axisalignedbb.maxY + 0.10000000149011612D; + } + + if (side == EnumFacing.NORTH) { + d2 = (double) k + axisalignedbb.minZ - 0.10000000149011612D; + } + + if (side == EnumFacing.SOUTH) { + d2 = (double) k + axisalignedbb.maxZ + 0.10000000149011612D; + } + + if (side == EnumFacing.WEST) { + d0 = (double) i + axisalignedbb.minX - 0.10000000149011612D; + } + + if (side == EnumFacing.EAST) { + d0 = (double) i + axisalignedbb.maxX + 0.10000000149011612D; + } + + + TextureAtlasSprite sprite = getParticleSprite(worldObj, pos, side); + if (sprite != null) { + manager.addEffect((new DigIconParticle(worldObj, d0, d1, d2, 0.0D, 0.0D, 0.0D, sprite)).multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); + } + } + } + + @SideOnly(Side.CLIENT) + public TextureAtlasSprite getParticleSprite(World worldObj, BlockPos aPos, EnumFacing side) { + return getWorldIcon(worldObj, aPos, worldObj.getBlockState(aPos), side); + } + @SideOnly(Side.CLIENT) public void registerIcons(TextureMap textureMap) {} @@ -71,9 +154,8 @@ public abstract class GT_Generic_Block extends Block { this.maxZ = maxZ; } - public void setBlockBoundsForItemRender() { - setBlockBounds(0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f); - } + public void setBlockBoundsForItemRender() {} + public void setBlockBoundsBasedOnState(IBlockAccess world, BlockPos pos, IBlockState state) {} @Override protected BlockStateContainer createBlockState() { diff --git a/src/main/java/gregtech/api/objects/GT_RenderedTexture.java b/src/main/java/gregtech/api/objects/GT_RenderedTexture.java index 31d6f99a..612a24c8 100644 --- a/src/main/java/gregtech/api/objects/GT_RenderedTexture.java +++ b/src/main/java/gregtech/api/objects/GT_RenderedTexture.java @@ -13,8 +13,8 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class GT_RenderedTexture implements ITexture, IColorModulationContainer { - private final IIconContainer mIconContainer; - private final boolean mAllowAlpha; + public final IIconContainer mIconContainer; + public final boolean mAllowAlpha; /** * DO NOT MANIPULATE THE VALUES INSIDE THIS ARRAY!!! *
diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java index 457e91e1..2186063f 100644 --- a/src/main/java/gregtech/common/GT_Client.java +++ b/src/main/java/gregtech/common/GT_Client.java @@ -244,12 +244,6 @@ public class GT_Client extends GT_Proxy } } - @SubscribeEvent - public void receiveRenderEvent(net.minecraftforge.client.event.RenderPlayerEvent.Pre aEvent) { - if (GT_Utility.getFullInvisibility(aEvent.getEntityPlayer())) { - aEvent.setCanceled(true); - } - } @SubscribeEvent public void onClientTickEvent(net.minecraftforge.fml.common.gameevent.TickEvent.ClientTickEvent aEvent) { diff --git a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java index b4038818..7b1d7c13 100644 --- a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java +++ b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_Layer.java @@ -3,13 +3,12 @@ package gregtech.common; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.world.GT_Worldgen; -import gregtech.common.blocks.rework.GT_Block_GeneratedOres; +import gregtech.common.blocks.GT_Block_GeneratedOres; import gregtech.loaders.misc.GT_Achievements; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; import net.minecraft.world.chunk.IChunkProvider; -import org.apache.commons.lang3.time.StopWatch; import java.util.ArrayList; import java.util.Random; diff --git a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_SmallPieces.java b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_SmallPieces.java index a2a9b3f6..4afa5ea7 100644 --- a/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_SmallPieces.java +++ b/src/main/java/gregtech/common/GT_Worldgen_GT_Ore_SmallPieces.java @@ -3,7 +3,7 @@ package gregtech.common; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.world.GT_Worldgen; -import gregtech.common.blocks.rework.GT_Block_GeneratedOres; +import gregtech.common.blocks.GT_Block_GeneratedOres; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkGenerator; diff --git a/src/main/java/gregtech/common/GT_Worldgen_Stone.java b/src/main/java/gregtech/common/GT_Worldgen_Stone.java index 6b377cd8..c780f0f7 100644 --- a/src/main/java/gregtech/common/GT_Worldgen_Stone.java +++ b/src/main/java/gregtech/common/GT_Worldgen_Stone.java @@ -1,12 +1,10 @@ package gregtech.common; -import gregtech.api.GregTech_API; import gregtech.api.world.GT_Worldgen_Ore; import gregtech.api.world.GT_Worldgen_Constants; -import gregtech.common.blocks.rework.GT_Block_GeneratedOres; +import gregtech.common.blocks.GT_Block_GeneratedOres; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; diff --git a/src/main/java/gregtech/common/GT_Worldgenerator.java b/src/main/java/gregtech/common/GT_Worldgenerator.java index 3cb37533..a2a53e14 100644 --- a/src/main/java/gregtech/common/GT_Worldgenerator.java +++ b/src/main/java/gregtech/common/GT_Worldgenerator.java @@ -4,7 +4,7 @@ import gregtech.api.GregTech_API; import gregtech.api.objects.XSTR; import gregtech.api.util.GT_Log; import gregtech.api.world.GT_Worldgen; -import gregtech.common.blocks.rework.GT_Block_GeneratedOres; +import gregtech.common.blocks.GT_Block_GeneratedOres; import net.minecraft.init.Biomes; import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; diff --git a/src/main/java/gregtech/common/blocks/rework/GT_Block_GeneratedOres.java b/src/main/java/gregtech/common/blocks/GT_Block_GeneratedOres.java similarity index 91% rename from src/main/java/gregtech/common/blocks/rework/GT_Block_GeneratedOres.java rename to src/main/java/gregtech/common/blocks/GT_Block_GeneratedOres.java index 4aef7a5a..cef32f1d 100644 --- a/src/main/java/gregtech/common/blocks/rework/GT_Block_GeneratedOres.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_GeneratedOres.java @@ -1,4 +1,4 @@ -package gregtech.common.blocks.rework; +package gregtech.common.blocks; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; @@ -13,6 +13,7 @@ import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -21,10 +22,13 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.EnumBlockRenderType; +import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.ArrayList; import java.util.List; @@ -158,19 +162,22 @@ public class GT_Block_GeneratedOres extends GT_Generic_Block { return false; //never allow silk touch } + @Override + @SideOnly(Side.CLIENT) + public TextureAtlasSprite getParticleSprite(World worldObj, BlockPos aPos, EnumFacing side) { + return StoneTypes.mTypes[worldObj.getBlockState(aPos).getValue(METADATA) % MATERIALS_META_OFFSET].mIconContainer.getIcon(); + } + @Override public List