-
Posts
440 -
Joined
-
Last visited
Everything posted by Flenix
-
Yup that fixed it! 1 down, 2 to go. Thanks! I've added you to my credits list for when it's finally released as a help
-
Can you post the entire model file?
-
http://pastebin.com/zBASdNX1 I only removed the if's and also changed return null; to return id; Strangely, the latter thing made two out of 3 chests work. I've not changed anything in the chest files, but the three are all identical bar the names etc and their opengui ID's... It's the Silvanite Chest which isn't working now, with a crash: Again it's referencing the GuiScreen thing, but I fixed it earlier and I can't see anything else... player.openGui(Remula.instance, 2, world, x, y, z); return true; } is the line from the stacktrace.
-
Actually, I got the idea for the if statements from there to begin with. When you posted the other link earlier, I went to look at your GuiHandler then to see if I could see anything useful. I noticed the if statements in the client stuff, so I thought I'd give it a try... Removed the if statements made no difference, so I agree they were useless but removing them didn't help either...
-
Hey guys. So, a couple of nights ago I tried to compile my mod for the first time so I could send it to some friends for bug hunting. Now, I've compiled smaller mods before and they worked fine, but this mod is substantionally bigger than those ones, and I encountered a strange bug. If I place the class files (in their correct folder structure) into my /mods folder, WITHOUT zipping it up, everything works fine. If I zip it up, everything works fine, but the textures don't load. I don't get a classnotfound and the mod itself runs, so the file structure didn't change. When I have it zipped, if I add a texture pack with my unzipped mod in (with classes removed, so just the images), the textures work as they are loaded from the pack. But, that's too much for standard players to install in the future, I want it to just be a zip like everyone elses. Can anyone think of what's causing the issue? I know the textures are in the right place, because it works fine when it's unzipped. I'm using 1.4.7, I don't know how relevant that is right now.
-
How to give a custom entity walking animation?
Flenix replied to AssassinHero's topic in Modder Support
by "Freaks out", do you mean they move really fast or go the wrong way? If too fast, change the 0.6662F for a lower float; that affects the speed. If it's the wrong way, change the X for Y or Z. Feet not moving, you'll need to add rotation code for them too if they're a seperate shape. Each shape on its own can be rotated, they don't pull other parts with them. It IS possible to do that (The Ender Dragon does it with it's wings), but I don't know how... I really want to know how though I can tell you now though that if you add rotation code for the feet, it still wont work, because of the same thing as head: Head detaching from body will be because your rotation point is in the wrong place. In Techne, the big blue ball you see is the rotation point. On the left, you use the Offset parameters to move that point around. So, the ball for a head should be on the neck, and the offset positions it. Same goes with the foot; You would need the offset position to be in the same place as it is for the leg, otherwise the leg and foot wont move in sync. What I do when I model in techne, is I only use two or 3 "positions" and everything is placed using offset. I have one point for the body, which all body parts use, one for the head which all head parts use and one each for any limb. If you're confused by that, take a look at this tcn I made for my mod the other day. The wings each have their own rotation points, the head (which is about 8 parts) all share one, and the body has it's own one. The tail has one too, I was going to animate that but decided against it. http://www.sendspace.com/file/0lpejm Sorry that post is a bit long. TL;DR? You need to set up rotation points in techne -
Found it; I'd accidentally put the containers in the client side instead of the GUIs. No errors again now, but I can still only open one of the three chests. Here's the relevant code currently: [spoiler=GuiHandler] package co.uk.silvania.Remula.tileentity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; public class GuiHandler implements IGuiHandler { public GuiHandler() { } @Override public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { switch(id) { case 0: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityRemulaChest) { if(id == 0) return new ContainerRemulaChest(player.inventory, (TileEntityRemulaChest) tileEntity); } return null; } case 1: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntitySilvaniteChest) { if(id == 2) return new ContainerSilvaniteChest(player.inventory, (TileEntitySilvaniteChest) tileEntity); } return null; } case 2: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityMerciliteChest) { if(id == 1) return new ContainerMerciliteChest(player.inventory, (TileEntityMerciliteChest) tileEntity); } return null; } } return null; } @Override public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) { switch(id) { case 0: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityRemulaChest) { if(id == 0) return new RemulaGuiChest(player.inventory, (TileEntityRemulaChest) tileEntity); } } break; case 1: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntitySilvaniteChest) { if(id == 2) return new SilvaniteGuiChest(player.inventory, (TileEntitySilvaniteChest) tileEntity); } } break; case 2: { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity instanceof TileEntityMerciliteChest) { if(id == 1) return new MerciliteGuiChest(player.inventory, (TileEntityMerciliteChest) tileEntity); } } break; } return null; } } [spoiler=SilvaniteChest] package co.uk.silvania.Remula.tileentity; import java.util.Random; import co.uk.silvania.Remula.CommonProxy; import co.uk.silvania.Remula.Remula; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class SilvaniteChest extends BlockContainer { public SilvaniteChest (int id) { super(id, Material.iron); setHardness(2.0F); setResistance(5.0F); setCreativeTab(Remula.tabRemula); this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float j, float k, float l) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity == null || player.isSneaking()) { return false; } player.openGui(Remula.instance, 2, world, x, y, z); return true; } @Override public void breakBlock(World world, int x, int y, int z, int par5, int par6) { dropItems(world, x, y, z); super.breakBlock(world, x, y, z, par5, par6); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return 22; } public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving) { int var6 = par1World.getBlockId(par2, par3, par4 - 1); int var7 = par1World.getBlockId(par2, par3, par4 + 1); int var8 = par1World.getBlockId(par2 - 1, par3, par4); int var9 = par1World.getBlockId(par2 + 1, par3, par4); byte var10 = 0; int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; if (var11 == 0) { var10 = 2; } if (var11 == 1) { var10 = 5; } if (var11 == 2) { var10 = 3; } if (var11 == 3) { var10 = 4; } if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } else { if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5)) { if (var6 == this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10); } else { par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3)) { if (var8 == this.blockID) { par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10); } else { par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } } } private void dropItems(World world, int x, int y, int z){ Random rand = new Random(); TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (!(tileEntity instanceof IInventory)) { return; } IInventory inventory = (IInventory) tileEntity; for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack item = inventory.getStackInSlot(i); if (item != null && item.stackSize > 0) { float rx = rand.nextFloat() * 0.8F + 0.1F; float ry = rand.nextFloat() * 0.8F + 0.1F; float rz = rand.nextFloat() * 0.8F + 0.1F; EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.itemID, item.stackSize, item.getItemDamage())); if (item.hasTagCompound()) { entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); } float factor = 0.05F; entityItem.motionX = rand.nextGaussian() * factor; entityItem.motionY = rand.nextGaussian() * factor + 0.2F; entityItem.motionZ = rand.nextGaussian() * factor; world.spawnEntityInWorld(entityItem); item.stackSize = 0; } } } @Override public TileEntity createNewTileEntity(World world) { return new TileEntitySilvaniteChest(); } } [spoiler=MerciliteChest] package co.uk.silvania.Remula.tileentity; import java.util.Random; import co.uk.silvania.Remula.CommonProxy; import co.uk.silvania.Remula.Remula; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class MerciliteChest extends BlockContainer { public MerciliteChest (int id) { super(id, Material.iron); setHardness(2.0F); setResistance(5.0F); setCreativeTab(Remula.tabRemula); this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F); this.currentTexture = "/co/uk/silvania/Remula/resources/SilvaniteChest1.png"; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float j, float k, float l) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity == null || player.isSneaking()) { return false; } player.openGui(Remula.instance, 1, world, x, y, z); return true; } @Override public void breakBlock(World world, int x, int y, int z, int par5, int par6) { dropItems(world, x, y, z); super.breakBlock(world, x, y, z, par5, par6); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return 22; } public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving) { int var6 = par1World.getBlockId(par2, par3, par4 - 1); int var7 = par1World.getBlockId(par2, par3, par4 + 1); int var8 = par1World.getBlockId(par2 - 1, par3, par4); int var9 = par1World.getBlockId(par2 + 1, par3, par4); byte var10 = 0; int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; if (var11 == 0) { var10 = 2; } if (var11 == 1) { var10 = 5; } if (var11 == 2) { var10 = 3; } if (var11 == 3) { var10 = 4; } if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } else { if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5)) { if (var6 == this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10); } else { par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3)) { if (var8 == this.blockID) { par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10); } else { par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } } } private void dropItems(World world, int x, int y, int z){ Random rand = new Random(); TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (!(tileEntity instanceof IInventory)) { return; } IInventory inventory = (IInventory) tileEntity; for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack item = inventory.getStackInSlot(i); if (item != null && item.stackSize > 0) { float rx = rand.nextFloat() * 0.8F + 0.1F; float ry = rand.nextFloat() * 0.8F + 0.1F; float rz = rand.nextFloat() * 0.8F + 0.1F; EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.itemID, item.stackSize, item.getItemDamage())); if (item.hasTagCompound()) { entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); } float factor = 0.05F; entityItem.motionX = rand.nextGaussian() * factor; entityItem.motionY = rand.nextGaussian() * factor + 0.2F; entityItem.motionZ = rand.nextGaussian() * factor; world.spawnEntityInWorld(entityItem); item.stackSize = 0; } } } @Override public TileEntity createNewTileEntity(World world) { return new TileEntityMerciliteChest(); } } [spoiler=RemulaChest] package co.uk.silvania.Remula.tileentity; import java.util.Random; import co.uk.silvania.Remula.CommonProxy; import co.uk.silvania.Remula.Remula; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; public class RemulaChest extends BlockContainer { public RemulaChest (int id) { super(id, Material.iron); setHardness(2.0F); setResistance(5.0F); setCreativeTab(Remula.tabRemula); this.setBlockBounds(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float j, float k, float l) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity == null || player.isSneaking()) { return false; } player.openGui(Remula.instance, 0, world, x, y, z); return true; } @Override public void breakBlock(World world, int x, int y, int z, int par5, int par6) { dropItems(world, x, y, z); super.breakBlock(world, x, y, z, par5, par6); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } public int getRenderType() { return 22; } public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving) { int var6 = par1World.getBlockId(par2, par3, par4 - 1); int var7 = par1World.getBlockId(par2, par3, par4 + 1); int var8 = par1World.getBlockId(par2 - 1, par3, par4); int var9 = par1World.getBlockId(par2 + 1, par3, par4); byte var10 = 0; int var11 = MathHelper.floor_double((double)(par5EntityLiving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; if (var11 == 0) { var10 = 2; } if (var11 == 1) { var10 = 5; } if (var11 == 2) { var10 = 3; } if (var11 == 3) { var10 = 4; } if (var6 != this.blockID && var7 != this.blockID && var8 != this.blockID && var9 != this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } else { if ((var6 == this.blockID || var7 == this.blockID) && (var10 == 4 || var10 == 5)) { if (var6 == this.blockID) { par1World.setBlockMetadataWithNotify(par2, par3, par4 - 1, var10); } else { par1World.setBlockMetadataWithNotify(par2, par3, par4 + 1, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } if ((var8 == this.blockID || var9 == this.blockID) && (var10 == 2 || var10 == 3)) { if (var8 == this.blockID) { par1World.setBlockMetadataWithNotify(par2 - 1, par3, par4, var10); } else { par1World.setBlockMetadataWithNotify(par2 + 1, par3, par4, var10); } par1World.setBlockMetadataWithNotify(par2, par3, par4, var10); } } } private void dropItems(World world, int x, int y, int z){ Random rand = new Random(); TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (!(tileEntity instanceof IInventory)) { return; } IInventory inventory = (IInventory) tileEntity; for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack item = inventory.getStackInSlot(i); if (item != null && item.stackSize > 0) { float rx = rand.nextFloat() * 0.8F + 0.1F; float ry = rand.nextFloat() * 0.8F + 0.1F; float rz = rand.nextFloat() * 0.8F + 0.1F; EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.itemID, item.stackSize, item.getItemDamage())); if (item.hasTagCompound()) { entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); } float factor = 0.05F; entityItem.motionX = rand.nextGaussian() * factor; entityItem.motionY = rand.nextGaussian() * factor + 0.2F; entityItem.motionZ = rand.nextGaussian() * factor; world.spawnEntityInWorld(entityItem); item.stackSize = 0; } } } @Override public TileEntity createNewTileEntity(World world) { return new TileEntityRemulaChest(); } } [spoiler=parts of my mod file] @Instance("Remula") public static Remula instance; public static GuiHandler remulaGuiHandler = new GuiHandler(); @PreInit public void preInit(FMLPreInitializationEvent event) { NetworkRegistry.instance().registerGuiHandler(this, remulaGuiHandler); } @Init public void load(FMLInitializationEvent event) { proxy.registerRenderThings(); proxy.init(); NetworkRegistry.instance().registerGuiHandler(this, new GuiHandler());
-
How to give a custom entity walking animation?
Flenix replied to AssassinHero's topic in Modder Support
In your ModelName file, go down to public void SetRotationAngles. Assuming you made your model in techne (so your floats are f, f1, f2 etc): this.head.rotateAngleX = f4 / (180F / (float)Math.PI); this.head.rotateAngleY = f3 / (180F / (float)Math.PI); this.leg1.rotateAngleX = MathHelper.cos(f * 0.6662F) * 1.4F * f1; this.leg2.rotateAngleX = MathHelper.cos(f * 0.6662F + (float)Math.PI) * 1.4F * f1; Rename head to your mobs head shape name, and leg1/leg2 to the legs. The Math.PI basically just inverts it, so the legs will alternate in movement. It's useful to know that if you change the X to Y or Z that changes which axis it rotates on. Just something you might need in the future. -
You mean it doesn't have the obsidian layer? Make sure you're actually in the biome. You probably wont spawn in it, you'll have to go and find it. An easy way to help you find it is to add this to the bottom of your @Init:
-
the second parameter is the GuiID, which you can use in your GuiHandler to specify which GUI / Container will open. I've experimented for the past 30 mins or so with this, even tried using your GuiHandler (edited for my things); Everything I try throws the same error for right-clicking the Remula chest and still no result for the other two: 2013-05-16 15:21:43 [iNFO] [sTDERR] java.lang.ClassCastException: co.uk.silvania.Remula.tileentity.ContainerRemulaChest cannot be cast to net.minecraft.client.gui.GuiScreen 2013-05-16 15:21:43 [iNFO] [sTDERR] at cpw.mods.fml.client.FMLClientHandler.showGuiScreen(FMLClientHandler.java:321) 2013-05-16 15:21:43 [iNFO] [sTDERR] at cpw.mods.fml.common.FMLCommonHandler.showGuiScreen(FMLCommonHandler.java:335) 2013-05-16 15:21:43 [iNFO] [sTDERR] at cpw.mods.fml.common.network.NetworkRegistry.openLocalGui(NetworkRegistry.java:316) 2013-05-16 15:21:43 [iNFO] [sTDERR] at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:339) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2304) 2013-05-16 15:21:43 [iNFO] [sTDERR] at co.uk.silvania.Remula.tileentity.RemulaChest.onBlockActivated(RemulaChest.java:41) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.client.multiplayer.PlayerControllerMP.onPlayerRightClick(PlayerControllerMP.java:358) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.clickMouse(Minecraft.java:1329) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.runTick(Minecraft.java:1812) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:848) 2013-05-16 15:21:43 [iNFO] [sTDERR] at net.minecraft.client.Minecraft.run(Minecraft.java:773) 2013-05-16 15:21:43 [iNFO] [sTDERR] at java.lang.Thread.run(Unknown Source) I can't seem to find any reference to GuiScreen in my code, so I don't know what's causing that. On a plus note; thanks to that turorial I thought I needed a GuiHandler for each GUI- at least now I know I don't need those
-
How can i make a metadata ore drop a specific item instead of itsself
Flenix replied to Dus998's topic in Modder Support
I think he means how does he specify which of the subblocks drops what item. I think that because I want to know this too... It'd certainly save on ID's! If you wanna specify which metadata should be dropped, use the damageDropped method. Lets say for example, I wanted to make a custom wool set that dropped a custom dye. The wools are all subblocks (500:1, 500:2 etc) How would I specify that MyWoolRed drops red dye, whilst MyWoolBlue drops blue dye? (I assume this is what the OP meant. He's not replied since the post so just guessing; but it's something I want to know ) -
ok; now the Remula chest will open but the other two still don't. I don't have any errors either, just nothing happens when I right-click.
-
It's in the block class (SilvaniteChest, RemulaChest or MerciliteChest) @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float j, float k, float l) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if (tileEntity == null || player.isSneaking()) { return false; } player.openGui(Remula.remulaGuiHandler, 0, world, x, y, z); return true; } To be fair, it's code I got from a tutorial which has since proved to be less than helpful, so I wouldn't be surprised if something is wrong in there.
-
How can i make a metadata ore drop a specific item instead of itsself
Flenix replied to Dus998's topic in Modder Support
I think he means how does he specify which of the subblocks drops what item. I think that because I want to know this too... It'd certainly save on ID's! -
Gonna throw a casual bump onto this; it's a bug that's really holding my mod back at the moment.
-
Yeah, I remembered last night that bats exist It flies now, but I want it to be all majestic and graceful, at the moment it flys very randomly and keeps spinning around I think it's just a case of tinkering now though.
-
That's not flying, it's just falling slower. I mean actual flight, like the ender dragon- but the ender dragon's code has a hell of a lot of stuff to sift through, so I thought I'd see if anyone else knew a simple method before I tried that.
-
Multiple things I wish to know to simplify my life
Flenix replied to Chainmanner's topic in Modder Support
When you recompile your code, there's another batch file called "reob" or something- That reobfuscates it I always thought that was required to make it run to be honest -
I don't even have a custom BiomeGenBase- I didn't know we needed one? Anyway, to remove your custom biome from overworld, add to your @Init: GameRegistry.removeBiome(yourBiomeName); And to remove all vanilla biomes from your dimension: Did you manage to get multiple custom biomes in your dimension? If so, can I see your code, I haven't managed to get that yet either, but I put it on hold as the biome decorator is more important to me (I want ores, flowers, long grass etc)
-
Hey, How would I go about making a mob of mine fly? I'm trying to make a large bird. Ideally, I'd love it if it could land too (at which point it'd use feet to move and its wings would stay closed)- but flying is the important part. Just a push in the right direction would be nice, what kind of AI tasks do I need etc?
-
Sorry, I still don't quite follow. Which lines am I putting in which classes? Any chance you can show me an example? (psuedocode is fine)
-
How exactly do I call my custom decorator though? I don't see anywhere that... "asks" for it?
-
Thanks but I've already got all that I mastered Dimensions about a week ago, just got my biome working nicely in it and all I needed was the decorator. Thanks though
-
That's the wrong way around though. The method there is in the wolf, not the sheep; he wants to make the vanilla thing (wolf as example) attack his mod mobs I don't know how to do it but I am curious, it's something I want too (Off-topic; will the NPCs be scriptable at all? (like Citizens for bukkit))
-
Let's get the ball rolling; can we see the code?