This commit is contained in:
Dragon2488 2016-12-17 23:56:09 +07:00
parent 0a78b7c508
commit 2dc3925c62
18 changed files with 168 additions and 53 deletions

View file

@ -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

Binary file not shown.

Binary file not shown.

View file

@ -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;
}
}

View file

@ -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() {

View file

@ -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!!!
* <p/>

View file

@ -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) {

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) {
ArrayList<ItemStack> rList = new ArrayList<>();
int aMetaData = state.getValue(METADATA);
if (aMetaData <= 0) {
rList.add(new ItemStack(Blocks.COBBLESTONE, 1, 0));
return rList;
}
if (!mSmall) {
rList.add(new ItemStack(this, 1, aMetaData));
return rList;
}
Materials aMaterial = GregTech_API.sGeneratedMaterials[(aMetaData % 1000)];
Materials aMaterial = mMaterials[aMetaData / MATERIALS_META_OFFSET];
Materials aBaseMaterial = StoneTypes.mTypes[aMetaData % MATERIALS_META_OFFSET].stoneMaterial;
if (aMaterial != null) {
Random tRandom = new Random(pos.hashCode());
ArrayList<ItemStack> tSelector = new ArrayList<>();
@ -217,9 +224,13 @@ public class GT_Block_GeneratedOres extends GT_Generic_Block {
tSelector.add(tStack);
}
}
if (tSelector.size() > 0) {
rList.add(GT_Utility.copyAmount(1L, tSelector.get(tRandom.nextInt(tSelector.size()))));
tStack = GT_OreDictUnificator.get(OrePrefixes.dustImpure, aBaseMaterial, 1L);
if(tStack != null && tRandom.nextInt(4) == 0) {
rList.add(tStack);
}
rList.add(GT_Utility.copyAmount(1L, tSelector.get(tRandom.nextInt(tSelector.size()))));
}
return rList;
}

View file

@ -2,13 +2,16 @@ package gregtech.common.blocks;
import gregtech.api.GregTech_API;
import gregtech.api.interfaces.IDebugableBlock;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.interfaces.tileentity.ITexturedTileEntity;
import gregtech.api.items.GT_Generic_Block;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.BaseMetaTileEntity;
import gregtech.api.metatileentity.BaseTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility;
@ -16,6 +19,7 @@ import gregtech.common.render.GT_Renderer_Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
@ -274,6 +278,8 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
return false;
}
@Override
public void onBlockClicked(World worldIn, BlockPos pos, EntityPlayer playerIn) {
IGregTechTileEntity gregTechTileEntity = getGregTile(worldIn, pos);
@ -282,6 +288,19 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
}
}
@Override
@SideOnly(Side.CLIENT)
public TextureAtlasSprite getParticleSprite(World worldObj, BlockPos aPos, EnumFacing side) {
TileEntity tileEntity = worldObj.getTileEntity(aPos);
if(tileEntity instanceof ITexturedTileEntity) {
ITexture[] textures = ((ITexturedTileEntity) tileEntity).getTexture(this, (byte) 1);
if(textures.length > 0 && textures[0].isValidTexture() && textures[0] instanceof GT_RenderedTexture) {
return ((GT_RenderedTexture) textures[0]).mIconContainer.getIcon();
}
}
return null;
}
@Override
public void onBlockExploded(World world, BlockPos pos, Explosion explosion) {
IGregTechTileEntity gregTechTileEntity = getGregTile(world, pos);

View file

@ -1,4 +1,4 @@
package gregtech.common.blocks.rework;
package gregtech.common.blocks;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;

View file

@ -327,7 +327,6 @@ public class ItemRenderer implements IItemRenderer, IStackPerspectiveAwareModel
return ItemOverrideList.NONE;
}
@Override
public Pair<? extends IBakedModel, Matrix4f> handlePerspective(ItemStack stack, ItemCameraTransforms.TransformType cameraTransformType) {
Matrix4f mat = new Matrix4f();

View file

@ -5,15 +5,18 @@ import codechicken.lib.render.block.ICCBlockRenderer;
import gregtech.api.enums.Materials;
import gregtech.api.enums.StoneTypes;
import gregtech.api.enums.TextureSet;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.items.GT_Generic_Block;
import gregtech.common.blocks.rework.GT_Block_GeneratedOres;
import gregtech.common.blocks.GT_Block_GeneratedOres;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumBlockRenderType;
@ -39,7 +42,10 @@ public class RenderBlocks implements ICCBlockRenderer {
}
@Override
public void handleRenderBlockDamage(IBlockAccess world, BlockPos pos, IBlockState state, TextureAtlasSprite sprite, VertexBuffer buffer) {}
public void handleRenderBlockDamage(IBlockAccess world, BlockPos pos, IBlockState state, TextureAtlasSprite sprite, VertexBuffer buffer) {
IBlockState stone = Blocks.STONE.getDefaultState();
Minecraft.getMinecraft().getBlockRendererDispatcher().renderBlockDamage(stone, pos, sprite, world);
}
@Override
public boolean renderBlock(IBlockAccess world, BlockPos pos, IBlockState state, VertexBuffer buffer) {
@ -47,7 +53,10 @@ public class RenderBlocks implements ICCBlockRenderer {
double y = pos.getY();
double z = pos.getZ();
GT_Generic_Block aOres = (GT_Generic_Block) state.getBlock();
aOres.setBlockBoundsBasedOnState(world, pos, state);
setRenderBoundsFromBlock1(aOres);
int lightmap;
int color;
@ -176,6 +185,9 @@ public class RenderBlocks implements ICCBlockRenderer {
VertexBuffer buf = tes.getBuffer();
GT_Generic_Block aBlock = (GT_Generic_Block) ((ItemBlock) itemStack.getItem()).block;
aBlock.setBlockBoundsForItemRender();
setRenderBoundsFromBlock1(aBlock);
TextureAtlasSprite sprite;
buf.begin(GL11.GL_QUADS, DefaultVertexFormats.ITEM);
@ -399,8 +411,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();
@ -421,8 +433,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();
@ -442,8 +454,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();
@ -463,8 +475,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();
@ -484,8 +496,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();
@ -504,8 +516,8 @@ public class RenderBlocks implements ICCBlockRenderer {
float b = ((color) & 0xFF) / 255.0f;
float a = ((color >> 24) & 0xFF) / 255.0f;
int light1 = lightmap >> 16 & 65535;
int light2 = lightmap & 65535;
int light1 = Math.max(0, (lightmap >> 16 & 65535) - 26);
int light2 = Math.max(0, (lightmap & 65535) - 26);
double minU = sprite.getMinU();
double minV = sprite.getMinV();

View file

@ -12,7 +12,7 @@ import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
import gregtech.common.blocks.*;
import gregtech.common.blocks.rework.GT_Block_GeneratedOres;
import gregtech.common.blocks.GT_Block_GeneratedOres;
import gregtech.common.items.*;
import gregtech.common.items.armor.ElectricModularArmor1;
import gregtech.common.items.armor.ModularArmor_Item;
@ -28,7 +28,6 @@ import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.event.FMLInterModComms;
import net.minecraftforge.fml.common.registry.GameRegistry;