Jump to content

makeo

Members
  • Posts

    2
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

makeo's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Hey there, Ok I'm posting this here bacause I don't have the knowledge to use github pull req. I'd like to add a CanEntityDestroyBlockEvent that is like an event based version of the block.canEntityDestroy. Reason for this is that there is currently no good way to e.g. cancel/allow the destruction from the EnderDragon. Here is my example how to implement that: The event itself: package net.minecraftforge.event.entity; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.world.BlockEvent; public class CanEntityDestroyBlockEvent extends BlockEvent { public final Entity entity; public Result canDestroy = Result.DEFAULT; public CanEntityDestroyBlockEvent(World world, BlockPos pos, IBlockState state, Entity entity) { super(world, pos, state); this.entity = entity; } } The additional method for the world class: public boolean canEntityDestroyBlock(BlockPos pos, IBlockState state, Entity entity) { CanEntityDestroyBlockEvent event = new CanEntityDestroyBlockEvent(this, pos, state, entity); MinecraftForge.EVENT_BUS.post(event); switch (event.canDestroy) { case ALLOW: return true; case DENY: return false; default: return state.getBlock().canEntityDestroy(this, pos, entity); } } The method block.canEntityDestroy is only used by EntityDragon and EntityWither so we have to change them too: EntityDragon: method destroyBlocksInAABB and modify line 527 to: if (worldObj.canEntityDestroyBlock(new BlockPos(k1, l1, i2), this) && this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing")) EntityWither: method updateAITasks and modify line 375 to: if (!block.isAir(worldObj, new BlockPos(j2, k, l)) && worldObj.canEntityDestroyBlock(new BlockPos(j2, k, l), this)) Feel free to use and edit my idea or just deny it
  2. Hey there, I just tried to use the Tessellator in a TileEntitySpecialRenderer and everytime I try to render something the texture is just too dark. Here is my small testing TESR (This just draws the top side of a block): @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float p_147500_8_) { GL11.glPushMatrix(); GL11.glTranslated(x, y, z); bindTexture(TextureMap.locationBlocksTexture); RenderBlocks render = new RenderBlocks(tile.getWorldObj()); Tessellator t = Tessellator.instance; t.startDrawingQuads(); //makes no difference //GL11.glEnable(GL11.GL_BLEND); //GL11.glEnable(GL11.GL_LIGHTING); //t.setBrightness(tile.getBlockType().getMixedBrightnessForBlock(tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord)); //t.setColorOpaque_F(1.0F, 1.0F, 1.0F); //Just for testing purpose IIcon icon = Blocks.glass.getBlockTextureFromSide(0); float u = icon.getMinU(); float v = icon.getMinV(); float U = icon.getMaxU(); float V = icon.getMaxV(); t.addVertexWithUV(0, 1, 1, u, v); t.addVertexWithUV(1, 1, 1, u, V); t.addVertexWithUV(1, 1, 0, U, V); t.addVertexWithUV(0, 1, 0, U, v); t.draw(); GL11.glPopMatrix(); } And my block: public class BlockTest extends Block { public BlockTest() { super(Material.glass); setCreativeTab(CreativeTabs.tabFood); } @Override public TileEntity createTileEntity(World world, int metadata) { return new TileTest(); } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override public int getRenderType() { return -1; } @Override public boolean hasTileEntity(int metadata) { return true; } } and the ingame result (my BlockTest and a vanilla glass block for comparison): Thanks for helping me Edit: I found the solution myslef. I had to use t.setNormal(0, 1, 0) to enable light
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.