Created initial AlchemyArray block which will be used in crafting. SightSigil array is used for testing purposes for rendering. Packets and changing the shown image need to be completed.
This commit is contained in:
parent
cce3d6b79a
commit
073830a785
14 changed files with 203 additions and 4 deletions
|
@ -0,0 +1,101 @@
|
|||
package WayofTime.bloodmagic.api.alchemyCrafting;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.WorldRenderer;
|
||||
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class AlchemyCircleRenderer {
|
||||
|
||||
public AlchemyCircleRenderer() {
|
||||
|
||||
}
|
||||
|
||||
public void renderAt(TileEntity tile, double x, double y, double z) {
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
WorldRenderer wr = tessellator.getWorldRenderer();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
// float rot = (float)(this.worldObj.provider.getWorldTime() % (360 /
|
||||
// this.rotationspeed) * this.rotationspeed) + this.rotationspeed * f;
|
||||
float rot = 0;
|
||||
|
||||
float size = 1.0F;
|
||||
|
||||
// Bind the texture to the circle
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SightSigil.png"));
|
||||
|
||||
GL11.glTexParameterf(3553, 10242, 10497.0F);
|
||||
GL11.glTexParameterf(3553, 10243, 10497.0F);
|
||||
|
||||
GL11.glDisable(2884);
|
||||
|
||||
GL11.glEnable(3042);
|
||||
GL11.glBlendFunc(770, 1);
|
||||
|
||||
GL11.glTranslated(x, y, z);
|
||||
|
||||
EnumFacing sideHit = EnumFacing.UP; // Specify which face this "circle"
|
||||
// is located on
|
||||
GL11.glTranslatef(sideHit.getFrontOffsetX() * -0.9f, sideHit.getFrontOffsetY() * -0.9f, sideHit.getFrontOffsetZ() * -0.9f);
|
||||
|
||||
switch (sideHit) {
|
||||
case DOWN:
|
||||
GL11.glTranslatef(0, 0, 1);
|
||||
GL11.glRotatef(-90.0f, 1, 0, 0);
|
||||
break;
|
||||
case EAST:
|
||||
GL11.glRotatef(-90.0f, 0, 1, 0);
|
||||
GL11.glTranslatef(0, 0, -1);
|
||||
break;
|
||||
case NORTH:
|
||||
break;
|
||||
case SOUTH:
|
||||
GL11.glRotatef(180.0f, 0, 1, 0);
|
||||
GL11.glTranslatef(-1, 0, -1);
|
||||
break;
|
||||
case UP:
|
||||
GL11.glTranslatef(0, 1, 0);
|
||||
GL11.glRotatef(90.0f, 1, 0, 0);
|
||||
break;
|
||||
case WEST:
|
||||
GL11.glTranslatef(0, 0, 1);
|
||||
GL11.glRotatef(90.0f, 0, 1, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(0.5f, 0.5f, 0);
|
||||
GL11.glRotatef(rot, 0, 0, 1);
|
||||
double var31 = 0.0D;
|
||||
double var33 = 1.0D;
|
||||
double var35 = 0;
|
||||
double var37 = 1;
|
||||
|
||||
// GL11.glRotatef(60.0F, 0.0F, 1.0F, 0.0F);
|
||||
wr.begin(7, DefaultVertexFormats.POSITION_TEX);
|
||||
// wr.setBrightness(200);
|
||||
// wr.putColorRGB_F(1, 1, 1, 1);
|
||||
// wr.putColorMultiplier(1, 1, 1, 1);
|
||||
wr.pos(0.5, 0.5, 0.0D).tex(var33, var37).endVertex();
|
||||
wr.pos(0.5, -0.5, 0.0D).tex(var33, var35).endVertex();
|
||||
wr.pos(-0.5, -0.5, 0.0D).tex(var31, var35).endVertex();
|
||||
wr.pos(-0.5, 0.5, 0.0D).tex(var31, var37).endVertex();
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glDisable(3042);
|
||||
GL11.glEnable(2884);
|
||||
// GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
package WayofTime.bloodmagic.block;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.util.EnumWorldBlockLayer;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.tile.TileAlchemyArray;
|
||||
|
||||
public class BlockAlchemyArray extends BlockContainer {
|
||||
|
||||
public BlockAlchemyArray() {
|
||||
super(Material.cloth);
|
||||
|
||||
setUnlocalizedName(Constants.Mod.MODID + ".alchemyArray");
|
||||
setCreativeTab(BloodMagic.tabBloodMagic);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpaqueCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public EnumWorldBlockLayer getBlockLayer() {
|
||||
return EnumWorldBlockLayer.CUTOUT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFullCube() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCollisionBoxesToList(World worldIn, BlockPos pos, IBlockState state, AxisAlignedBB mask, List list, Entity collidingEntity) {
|
||||
this.setBlockBounds(0, 0, 0, 1, 0.1f, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(Random random) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World worldIn, int meta) {
|
||||
return new TileAlchemyArray();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
package WayofTime.bloodmagic.client.render;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer;
|
||||
import WayofTime.bloodmagic.tile.TileAlchemyArray;
|
||||
|
||||
public class RenderAlchemyArray extends TileEntitySpecialRenderer
|
||||
{
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float partialTicks, int destroyStage)
|
||||
{
|
||||
if (tileEntity instanceof TileAlchemyArray)
|
||||
{
|
||||
AlchemyCircleRenderer renderer = new AlchemyCircleRenderer(); //Temporary renderer for testing
|
||||
renderer.renderAt(tileEntity, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,12 +1,15 @@
|
|||
package WayofTime.bloodmagic.proxy;
|
||||
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||
import WayofTime.bloodmagic.registry.ModItems;
|
||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.client.model.obj.OBJLoader;
|
||||
import net.minecraftforge.fml.client.registry.ClientRegistry;
|
||||
import WayofTime.bloodmagic.api.Constants;
|
||||
import WayofTime.bloodmagic.client.render.RenderAlchemyArray;
|
||||
import WayofTime.bloodmagic.registry.ModBlocks;
|
||||
import WayofTime.bloodmagic.registry.ModItems;
|
||||
import WayofTime.bloodmagic.tile.TileAlchemyArray;
|
||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
||||
|
||||
public class ClientProxy extends CommonProxy {
|
||||
|
||||
|
@ -17,6 +20,7 @@ public class ClientProxy extends CommonProxy {
|
|||
|
||||
OBJLoader.instance.addDomain(Constants.Mod.MODID);
|
||||
ModelLoader.setCustomModelResourceLocation(InventoryRenderHelper.getItemFromBlock(ModBlocks.altar), 0, new ModelResourceLocation(Constants.Mod.DOMAIN + "BlockAltar", "inventory"));
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileAlchemyArray.class, new RenderAlchemyArray());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,6 +24,7 @@ public class ModBlocks {
|
|||
public static Block testSpellBlock;
|
||||
public static Block pedestal;
|
||||
public static Block teleposer;
|
||||
public static Block alchemyArray;
|
||||
|
||||
public static Block lifeEssence;
|
||||
|
||||
|
@ -42,6 +43,7 @@ public class ModBlocks {
|
|||
testSpellBlock = registerBlock(new BlockTestSpellBlock());
|
||||
pedestal = registerBlock(new BlockPedestal(), ItemBlockPedestal.class);
|
||||
teleposer = registerBlock(new BlockTeleposer());
|
||||
alchemyArray = registerBlock(new BlockAlchemyArray());
|
||||
crystal = registerBlock(new BlockCrystal(), ItemBlockCrystal.class);
|
||||
bloodStoneBrick = registerBlock(new BlockBloodStoneBrick(), ItemBlockBloodStoneBrick.class);
|
||||
|
||||
|
@ -86,6 +88,7 @@ public class ModBlocks {
|
|||
renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(pedestal), 0);
|
||||
renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(pedestal), 1);
|
||||
renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(teleposer));
|
||||
renderHelper.itemRender(InventoryRenderHelper.getItemFromBlock(alchemyArray));
|
||||
}
|
||||
|
||||
private static Block registerBlock(Block block, Class<? extends ItemBlock> itemBlock, String name) {
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package WayofTime.bloodmagic.tile;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class TileAlchemyArray extends TileEntity{
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue