
blued00r
Members-
Posts
33 -
Joined
-
Last visited
Converted
-
Gender
Undisclosed
-
Personal Text
Minecraft modding = Fun time
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
blued00r's Achievements

Tree Puncher (2/8)
1
Reputation
-
Hello, I need to animate the my block's texture but your link do not work. please help Yeah, because the mod was renamed. If you bothered to look what it was renamed to, you would be able to find it, but I'll give it to you anyway, https://github.com/aidancbrady/Mekanism
-
/** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3) { if (var3 instanceof EntityPlayerMP) { WorldServer worldserver = (WorldServer)var2; EntityPlayerMP var4 = (EntityPlayerMP)var3; if (var3.ridingEntity == null && var3.riddenByEntity == null && var3 instanceof EntityPlayer && var4.dimension != 0) { var4.mcServer.getConfigurationManager().transferPlayerToDimension(var4, 0, new CustomTeleporter(worldserver)); } } return var1; } That might help you.
-
Its not difficult at all, if you look at how the original workbench works you should be able to find out how to do it, if you need help i can point you farther in the direction you need help in.
-
Look inside ContainerWorkbench, in the onCraftMatrixChanged function.
-
Ever thought of looking into the crafting bench code itself?
-
If you post your portal, Teleporter, and ChunkProvider code i can help you.
-
Well, I was updating DivineRPG and came to a little hitch in the road, my teleporters are now broken. They transfer me to and from dimensions, through, the portals are not made. Is there any reason why this would be happening? TeleportTwilight package xolova.blued00r.divinerpg.misc; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Random; import net.minecraft.src.Block; import net.minecraft.src.ChunkCoordIntPair; import net.minecraft.src.Direction; import net.minecraft.src.Entity; import net.minecraft.src.LongHashMap; import net.minecraft.src.MathHelper; import net.minecraft.src.PortalPosition; import net.minecraft.src.Teleporter; import net.minecraft.src.World; import net.minecraft.src.WorldServer; import xolova.blued00r.divinerpg.DivineRPG; public class TeleporterTwilight extends Teleporter { private final WorldServer field_85192_a; private final LongHashMap field_85191_c = new LongHashMap(); private final List field_85190_d = new ArrayList(); public TeleporterTwilight(WorldServer par1WorldServer) { super(par1WorldServer); this.field_85192_a = par1WorldServer; } private Random random = new Random(); /** * Place an entity in a nearby portal, creating one if necessary. */ @Override public void placeInPortal(Entity par1Entity, double par2, double par4, double par6, float par8) { if (this.field_85192_a.provider.dimensionId != 1) { if (!this.placeInExistingPortal(par1Entity, par2, par4, par6, par8)) { this.func_85188_a(par1Entity); this.placeInExistingPortal(par1Entity, par2, par4, par6, par8); } } else { int var9 = MathHelper.floor_double(par1Entity.posX); int var10 = MathHelper.floor_double(par1Entity.posY) - 1; int var11 = MathHelper.floor_double(par1Entity.posZ); byte var12 = 1; byte var13 = 0; for (int var14 = -2; var14 <= 2; ++var14) { for (int var15 = -2; var15 <= 2; ++var15) { for (int var16 = -1; var16 < 3; ++var16) { int var17 = var9 + var15 * var12 + var14 * var13; int var18 = var10 + var16; int var19 = var11 + var15 * var13 - var14 * var12; boolean var20 = var16 < 0; this.field_85192_a.setBlockWithNotify(var17, var18, var19, DivineRPG.divineRock.blockID); } } } par1Entity.setLocationAndAngles((double)var9, (double)var10, (double)var11, par1Entity.rotationYaw, 0.0F); par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; } } /** * Place an entity in a nearby portal which already exists. */ @Override public boolean placeInExistingPortal(Entity par1Entity, double par2, double par4, double par6, float par8) { short var9 = 128; double var10 = -1.0D; int var12 = 0; int var13 = 0; int var14 = 0; int var15 = MathHelper.floor_double(par1Entity.posX); int var16 = MathHelper.floor_double(par1Entity.posZ); long var17 = ChunkCoordIntPair.chunkXZ2Int(var15, var16); boolean var19 = true; double var27; int var48; if (this.field_85191_c.containsItem(var17)) { PortalPosition var20 = (PortalPosition)this.field_85191_c.getValueByKey(var17); var10 = 0.0D; var12 = var20.posX; var13 = var20.posY; var14 = var20.posZ; var20.field_85087_d = this.field_85192_a.getTotalWorldTime(); var19 = false; } else { for (var48 = var15 - var9; var48 <= var15 + var9; ++var48) { double var21 = (double)var48 + 0.5D - par1Entity.posX; for (int var23 = var16 - var9; var23 <= var16 + var9; ++var23) { double var24 = (double)var23 + 0.5D - par1Entity.posZ; for (int var26 = this.field_85192_a.getActualHeight() - 1; var26 >= 0; --var26) { if (this.field_85192_a.getBlockId(var48, var26, var23) == DivineRPG.twilightPortal.blockID) { while (this.field_85192_a.getBlockId(var48, var26 - 1, var23) == DivineRPG.twilightPortal.blockID) { --var26; } var27 = (double)var26 + 0.5D - par1Entity.posY; double var29 = var21 * var21 + var27 * var27 + var24 * var24; if (var10 < 0.0D || var29 < var10) { var10 = var29; var12 = var48; var13 = var26; var14 = var23; } } } } } } if (var10 >= 0.0D) { if (var19) { this.field_85191_c.add(var17, new PortalPosition(this, var12, var13, var14, this.field_85192_a.getTotalWorldTime())); this.field_85190_d.add(Long.valueOf(var17)); } double var49 = (double)var12 + 0.5D; double var25 = (double)var13 + 0.5D; var27 = (double)var14 + 0.5D; int var50 = -1; if (this.field_85192_a.getBlockId(var12 - 1, var13, var14) == DivineRPG.twilightPortal.blockID) { var50 = 2; } if (this.field_85192_a.getBlockId(var12 + 1, var13, var14) == DivineRPG.twilightPortal.blockID) { var50 = 0; } if (this.field_85192_a.getBlockId(var12, var13, var14 - 1) == DivineRPG.twilightPortal.blockID) { var50 = 3; } if (this.field_85192_a.getBlockId(var12, var13, var14 + 1) == DivineRPG.twilightPortal.blockID) { var50 = 1; } int var30 = par1Entity.func_82148_at(); if (var50 > -1) { int var31 = Direction.field_71578_g[var50]; int var32 = Direction.offsetX[var50]; int var33 = Direction.offsetZ[var50]; int var34 = Direction.offsetX[var31]; int var35 = Direction.offsetZ[var31]; boolean var36 = !this.field_85192_a.isAirBlock(var12 + var32 + var34, var13, var14 + var33 + var35) || !this.field_85192_a.isAirBlock(var12 + var32 + var34, var13 + 1, var14 + var33 + var35); boolean var37 = !this.field_85192_a.isAirBlock(var12 + var32, var13, var14 + var33) || !this.field_85192_a.isAirBlock(var12 + var32, var13 + 1, var14 + var33); if (var36 && var37) { var50 = Direction.footInvisibleFaceRemap[var50]; var31 = Direction.footInvisibleFaceRemap[var31]; var32 = Direction.offsetX[var50]; var33 = Direction.offsetZ[var50]; var34 = Direction.offsetX[var31]; var35 = Direction.offsetZ[var31]; var48 = var12 - var34; var49 -= (double)var34; int var22 = var14 - var35; var27 -= (double)var35; var36 = !this.field_85192_a.isAirBlock(var48 + var32 + var34, var13, var22 + var33 + var35) || !this.field_85192_a.isAirBlock(var48 + var32 + var34, var13 + 1, var22 + var33 + var35); var37 = !this.field_85192_a.isAirBlock(var48 + var32, var13, var22 + var33) || !this.field_85192_a.isAirBlock(var48 + var32, var13 + 1, var22 + var33); } float var38 = 0.5F; float var39 = 0.5F; if (!var36 && var37) { var38 = 1.0F; } else if (var36 && !var37) { var38 = 0.0F; } else if (var36 && var37) { var39 = 0.0F; } var49 += (double)((float)var34 * var38 + var39 * (float)var32); var27 += (double)((float)var35 * var38 + var39 * (float)var33); float var40 = 0.0F; float var41 = 0.0F; float var42 = 0.0F; float var43 = 0.0F; if (var50 == var30) { var40 = 1.0F; var41 = 1.0F; } else if (var50 == Direction.footInvisibleFaceRemap[var30]) { var40 = -1.0F; var41 = -1.0F; } else if (var50 == Direction.enderEyeMetaToDirection[var30]) { var42 = 1.0F; var43 = -1.0F; } else { var42 = -1.0F; var43 = 1.0F; } double var44 = par1Entity.motionX; double var46 = par1Entity.motionZ; par1Entity.motionX = var44 * (double)var40 + var46 * (double)var43; par1Entity.motionZ = var44 * (double)var42 + var46 * (double)var41; par1Entity.rotationYaw = par8 - (float)(var30 * 90) + (float)(var50 * 90); } else { par1Entity.motionX = par1Entity.motionY = par1Entity.motionZ = 0.0D; } par1Entity.setLocationAndAngles(var49, var25, var27, par1Entity.rotationYaw, par1Entity.rotationPitch); return true; } else { return false; } } @Override public boolean func_85188_a(Entity par1Entity) { byte var2 = 16; double var3 = -1.0D; int var5 = MathHelper.floor_double(par1Entity.posX); int var6 = MathHelper.floor_double(par1Entity.posY); int var7 = MathHelper.floor_double(par1Entity.posZ); int var8 = var5; int var9 = var6; int var10 = var7; int var11 = 0; int var12 = this.random.nextInt(4); int var13; double var14; double var17; int var16; int var19; int var21; int var20; int var23; int var22; int var25; int var24; int var27; int var26; double var31; double var32; for (var13 = var5 - var2; var13 <= var5 + var2; ++var13) { var14 = (double)var13 + 0.5D - par1Entity.posX; for (var16 = var7 - var2; var16 <= var7 + var2; ++var16) { var17 = (double)var16 + 0.5D - par1Entity.posZ; label274: for (var19 = this.field_85192_a.getActualHeight() - 1; var19 >= 0; --var19) { if (this.field_85192_a.isAirBlock(var13, var19, var16)) { while (var19 > 0 && this.field_85192_a.isAirBlock(var13, var19 - 1, var16)) { --var19; } for (var20 = var12; var20 < var12 + 4; ++var20) { var21 = var20 % 2; var22 = 1 - var21; if (var20 % 4 >= 2) { var21 = -var21; var22 = -var22; } for (var23 = 0; var23 < 3; ++var23) { for (var24 = 0; var24 < 4; ++var24) { for (var25 = -1; var25 < 4; ++var25) { var26 = var13 + (var24 - 1) * var21 + var23 * var22; var27 = var19 + var25; int var28 = var16 + (var24 - 1) * var22 - var23 * var21; if (var25 < 0 && !this.field_85192_a.getBlockMaterial(var26, var27, var28).isSolid() || var25 >= 0 && !this.field_85192_a.isAirBlock(var26, var27, var28)) { continue label274; } } } } var32 = (double)var19 + 0.5D - par1Entity.posY; var31 = var14 * var14 + var32 * var32 + var17 * var17; if (var3 < 0.0D || var31 < var3) { var3 = var31; var8 = var13; var9 = var19; var10 = var16; var11 = var20 % 4; } } } } } } if (var3 < 0.0D) { for (var13 = var5 - var2; var13 <= var5 + var2; ++var13) { var14 = (double)var13 + 0.5D - par1Entity.posX; for (var16 = var7 - var2; var16 <= var7 + var2; ++var16) { var17 = (double)var16 + 0.5D - par1Entity.posZ; label222: for (var19 = this.field_85192_a.getActualHeight() - 1; var19 >= 0; --var19) { if (this.field_85192_a.isAirBlock(var13, var19, var16)) { while (var19 > 0 && this.field_85192_a.isAirBlock(var13, var19 - 1, var16)) { --var19; } for (var20 = var12; var20 < var12 + 2; ++var20) { var21 = var20 % 2; var22 = 1 - var21; for (var23 = 0; var23 < 4; ++var23) { for (var24 = -1; var24 < 4; ++var24) { var25 = var13 + (var23 - 1) * var21; var26 = var19 + var24; var27 = var16 + (var23 - 1) * var22; if (var24 < 0 && !this.field_85192_a.getBlockMaterial(var25, var26, var27).isSolid() || var24 >= 0 && !this.field_85192_a.isAirBlock(var25, var26, var27)) { continue label222; } } } var32 = (double)var19 + 0.5D - par1Entity.posY; var31 = var14 * var14 + var32 * var32 + var17 * var17; if (var3 < 0.0D || var31 < var3) { var3 = var31; var8 = var13; var9 = var19; var10 = var16; var11 = var20 % 2; } } } } } } } int var29 = var8; int var15 = var9; var16 = var10; int var30 = var11 % 2; int var18 = 1 - var30; if (var11 % 4 >= 2) { var30 = -var30; var18 = -var18; } boolean var33; if (var3 < 0.0D) { if (var9 < 70) { var9 = 70; } if (var9 > this.field_85192_a.getActualHeight() - 10) { var9 = this.field_85192_a.getActualHeight() - 10; } var15 = var9; for (var19 = -1; var19 <= 1; ++var19) { for (var20 = 1; var20 < 3; ++var20) { for (var21 = -1; var21 < 3; ++var21) { var22 = var29 + (var20 - 1) * var30 + var19 * var18; var23 = var15 + var21; var24 = var16 + (var20 - 1) * var18 - var19 * var30; var33 = var21 < 0; this.field_85192_a.setBlockWithNotify(var22, var23, var24, DivineRPG.divineRock.blockID); } } } } for (var19 = 0; var19 < 4; ++var19) { this.field_85192_a.editingBlocks = true; for (var20 = 0; var20 < 4; ++var20) { for (var21 = -1; var21 < 4; ++var21) { var22 = var29 + (var20 - 1) * var30; var23 = var15 + var21; var24 = var16 + (var20 - 1) * var18; var33 = var20 == 0 || var20 == 3 || var21 == -1 || var21 == 3; this.field_85192_a.setBlockWithNotify(var22, var23, var24, var33 ? DivineRPG.divineRock.blockID : DivineRPG.twilightPortal.blockID); } } this.field_85192_a.editingBlocks = false; for (var20 = 0; var20 < 4; ++var20) { for (var21 = -1; var21 < 4; ++var21) { var22 = var29 + (var20 - 1) * var30; var23 = var15 + var21; var24 = var16 + (var20 - 1) * var18; this.field_85192_a.notifyBlocksOfNeighborChange(var22, var23, var24, this.field_85192_a.getBlockId(var22, var23, var24)); } } } return true; } @Override public void func_85189_a(long par1) { if (par1 % 100L == 0L) { Iterator var3 = this.field_85190_d.iterator(); long var4 = par1 - 600L; while (var3.hasNext()) { Long var6 = (Long)var3.next(); PortalPosition var7 = (PortalPosition)this.field_85191_c.getValueByKey(var6.longValue()); if (var7 == null || var7.field_85087_d < var4) { var3.remove(); this.field_85191_c.remove(var6.longValue()); } } } } } BlockTwilightPortal package xolova.blued00r.divinerpg.blocks; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.Side; import cpw.mods.fml.common.asm.SideOnly; import java.util.Random; import net.minecraft.src.AxisAlignedBB; import net.minecraft.src.BlockBreakable; import net.minecraft.src.Entity; import net.minecraft.src.EntityPlayer; import net.minecraft.src.EntityPlayerMP; import net.minecraft.src.IBlockAccess; import net.minecraft.src.Material; import net.minecraft.src.World; import net.minecraft.src.WorldServer; import xolova.blued00r.divinerpg.DivineRPG; import xolova.blued00r.divinerpg.client.particles.EntityDravitePortalFX; import xolova.blued00r.divinerpg.misc.TeleporterTwilight; public class BlockTwilightPortal extends BlockBreakable { private int firetick; private int firemax = 1000; public BlockTwilightPortal(int var1, int var2) { super(var1, var2, Material.portal, false); this.firetick = this.firemax; } /** * Returns a bounding box from the pool of bounding boxes (this means this box can change after the pool has been * cleared to be reused) */ public AxisAlignedBB getCollisionBoundingBoxFromPool(World var1, int var2, int var3, int var4) { return null; } /** * Updates the blocks bounds based on its current state. Args: world, x, y, z */ public void setBlockBoundsBasedOnState(IBlockAccess var1, int var2, int var3, int var4) { float var5; float var6; if (var1.getBlockId(var2 - 1, var3, var4) != this.blockID && var1.getBlockId(var2 + 1, var3, var4) != this.blockID) { var5 = 0.125F; var6 = 0.5F; this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6); } else { var5 = 0.5F; var6 = 0.125F; this.setBlockBounds(0.5F - var5, 0.0F, 0.5F - var6, 0.5F + var5, 1.0F, 0.5F + var6); } } /** * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. */ public boolean isOpaqueCube() { return false; } /** * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) */ public boolean renderAsNormalBlock() { return false; } public boolean tryToCreatePortal(World var1, int var2, int var3, int var4) { byte var5 = 0; byte var6 = 0; if (var1.getBlockId(var2 - 1, var3, var4) == DivineRPG.divineRock.blockID || var1.getBlockId(var2 + 1, var3, var4) == DivineRPG.divineRock.blockID) { var5 = 1; } if (var1.getBlockId(var2, var3, var4 - 1) == DivineRPG.divineRock.blockID || var1.getBlockId(var2, var3, var4 + 1) == DivineRPG.divineRock.blockID) { var6 = 1; } if (var5 == var6) { return false; } else { if (var1.getBlockId(var2 - var5, var3, var4 - var6) == 0) { var2 -= var5; var4 -= var6; } int var7; int var8; for (var7 = -1; var7 <= 2; ++var7) { for (var8 = -1; var8 <= 3; ++var8) { boolean var9 = var7 == -1 || var7 == 2 || var8 == -1 || var8 == 3; if (var7 != -1 && var7 != 2 || var8 != -1 && var8 != 3) { int var10 = var1.getBlockId(var2 + var5 * var7, var3 + var8, var4 + var6 * var7); if (var9) { if (var10 != DivineRPG.divineRock.blockID) { return false; } } else if (var10 != 0 && var10 != DivineRPG.blueFire.blockID) { return false; } } } } var1.editingBlocks = true; for (var7 = 0; var7 < 2; ++var7) { for (var8 = 0; var8 < 3; ++var8) { var1.setBlockWithNotify(var2 + var5 * var7, var3 + var8, var4 + var6 * var7, DivineRPG.twilightPortal.blockID); } } var1.editingBlocks = false; return true; } } /** * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are * their own) Args: x, y, z, neighbor blockID */ public void onNeighborBlockChange(World var1, int var2, int var3, int var4, int var5) { byte var6 = 0; byte var7 = 1; if (var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID) { var6 = 1; var7 = 0; } int var8; for (var8 = var3; var1.getBlockId(var2, var8 - 1, var4) == this.blockID; --var8) { ; } if (var1.getBlockId(var2, var8 - 1, var4) != DivineRPG.divineRock.blockID) { var1.setBlockWithNotify(var2, var3, var4, 0); } else { int var9; for (var9 = 1; var9 < 4 && var1.getBlockId(var2, var8 + var9, var4) == this.blockID; ++var9) { ; } if (var9 == 3 && var1.getBlockId(var2, var8 + var9, var4) == DivineRPG.divineRock.blockID) { boolean var10 = var1.getBlockId(var2 - 1, var3, var4) == this.blockID || var1.getBlockId(var2 + 1, var3, var4) == this.blockID; boolean var11 = var1.getBlockId(var2, var3, var4 - 1) == this.blockID || var1.getBlockId(var2, var3, var4 + 1) == this.blockID; if (var10 && var11) { var1.setBlockWithNotify(var2, var3, var4, 0); } else if ((var1.getBlockId(var2 + var6, var3, var4 + var7) != DivineRPG.divineRock.blockID || var1.getBlockId(var2 - var6, var3, var4 - var7) != this.blockID) && (var1.getBlockId(var2 - var6, var3, var4 - var7) != DivineRPG.divineRock.blockID || var1.getBlockId(var2 + var6, var3, var4 + var7) != this.blockID)) { var1.setBlockWithNotify(var2, var3, var4, 0); } } else { var1.setBlockWithNotify(var2, var3, var4, 0); } } } /** * Returns true if the given side of this block type should be rendered, if the adjacent block is at the given * coordinates. Args: blockAccess, x, y, z, side */ public boolean shouldSideBeRendered(IBlockAccess var1, int var2, int var3, int var4, int var5) { if (var1.getBlockId(var2, var3, var4) == this.blockID) { return false; } else { boolean var6 = var1.getBlockId(var2 - 1, var3, var4) == this.blockID && var1.getBlockId(var2 - 2, var3, var4) != this.blockID; boolean var7 = var1.getBlockId(var2 + 1, var3, var4) == this.blockID && var1.getBlockId(var2 + 2, var3, var4) != this.blockID; boolean var8 = var1.getBlockId(var2, var3, var4 - 1) == this.blockID && var1.getBlockId(var2, var3, var4 - 2) != this.blockID; boolean var9 = var1.getBlockId(var2, var3, var4 + 1) == this.blockID && var1.getBlockId(var2, var3, var4 + 2) != this.blockID; boolean var10 = var6 || var7; boolean var11 = var8 || var9; return var10 && var5 == 4 ? true : (var10 && var5 == 5 ? true : (var11 && var5 == 2 ? true : var11 && var5 == 3)); } } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random var1) { return 0; } /** * Returns which pass should this block be rendered on. 0 for solids and 1 for alpha */ public int getRenderBlockPass() { return 1; } /** * Triggered whenever an entity collides with this block (enters into the block). Args: world, x, y, z, entity */ public void onEntityCollidedWithBlock(World var1, int var2, int var3, int var4, Entity var5) { if (!var1.isRemote) { if (this.firetick == this.firemax && this.firemax != 0) { if (var5 instanceof EntityPlayerMP) { WorldServer worldServer = (WorldServer)var1; EntityPlayerMP var6 = (EntityPlayerMP)var5; if (var5.ridingEntity == null && var5.riddenByEntity == null && var5 instanceof EntityPlayer) { if (var6.dimension != 5) { var6.mcServer.getConfigurationManager().transferPlayerToDimension(var6, DivineRPG.draviteID, new TeleporterTwilight(worldServer)); } else { var6.mcServer.getConfigurationManager().transferPlayerToDimension(var6, 0, new TeleporterTwilight(worldServer)); } } } this.firetick = 0; } else { ++this.firetick; } } } @SideOnly(Side.CLIENT) /** * A randomly called display update to be able to add particles or other items for display */ public void randomDisplayTick(World var1, int var2, int var3, int var4, Random var5) { if (var5.nextInt(100) == 0) { var1.playSoundEffect((double)var2 + 0.5D, (double)var3 + 0.5D, (double)var4 + 0.5D, "portal.portal", 0.5F, var5.nextFloat() * 0.4F + 0.8F); } for (int var6 = 0; var6 < 4; ++var6) { double var7 = (double)((float)var2 + var5.nextFloat()); double var9 = (double)((float)var3 + var5.nextFloat()); double var11 = (double)((float)var4 + var5.nextFloat()); double var13 = 0.0D; double var15 = 0.0D; double var17 = 0.0D; int var19 = var5.nextInt(2) * 2 - 1; var13 = ((double)var5.nextFloat() - 0.5D) * 0.5D; var15 = ((double)var5.nextFloat() - 0.5D) * 0.5D; var17 = ((double)var5.nextFloat() - 0.5D) * 0.5D; if (var1.getBlockId(var2 - 1, var3, var4) != this.blockID && var1.getBlockId(var2 + 1, var3, var4) != this.blockID) { var7 = (double)var2 + 0.5D + 0.25D * (double)var19; var13 = (double)(var5.nextFloat() * 2.0F * (float)var19); } else { var11 = (double)var4 + 0.5D + 0.25D * (double)var19; var17 = (double)(var5.nextFloat() * 2.0F * (float)var19); } EntityDravitePortalFX var20 = new EntityDravitePortalFX(var1, var7, var9, var11, var13, var15, var17); FMLClientHandler.instance().getClient().effectRenderer.addEffect(var20, var20); } } public String getTextureFile() { return "/Xolovon3.png"; } }
-
Did you look at normal particle code? They have icon index stuff in there to use a physical file in there
-
I created my own transfer code ill post it if you'd like with a little digging around you could have found it too
-
No, I didn't, I only used MinecraftForge for DivineRPG, and I have animated textures working just fine look at the ClientProxy, that's all the help I'm going to give you
-
Create a stagnant version of the block you want and the Animation gets overlayed so it overrides the normal texture, hope that helps. Used that for DivineRPG portal textures
-
If you know what your looking for and where it would be at in a mod, you'll find what you need in here Look at https://github.com/aidancbrady/Obsidian-Ingots good luck
-
Look at https://github.com/aidancbrady/Obsidian-Ingots If you know where to look you can find the answer for animated textures
-
I have done so and my biome still doesn't appear on gen