Okay, the problem is your gui handler, if you look at my crafting table tut you will see how to setup a gui handler for multiple guis. Also the int in the furnace is the texture and the table one is for the gui, they both have 2 yes, but the block.java for them both is also different. In the furnace the gui id is in the body of the onBlockActivated method, the table is in the constructor. And since a table has no tile entity some things are handled by the container and the guitable. Also I am doing these tuts in series for multiple guis because I am making them as I go in my mod that I am currently working on. I have custom table, 2 furnaces, 1 anvil, 1 enchantment table, and 1 chest. I am aslo going to add a few other things that may require guis but havent decided yet. Also I have some other cool things I am working on too and when the bugs get worked out for them I will post them as well, one of them is a biome decorator. I have been working weekends now too, so my time friday through tuesday is limited.
Thanks goes to nicodemuus as usual for filling in the gap when I am absent from the forum...kudos to you my friend
Its my pleasure but I would have to say that the thanks goes to you. Ive spent many hours scouring google for good tutorials on this subject and havent found any until yours, so its nice having a place to come to talk with others about it and trying to help solve problems. So again hats off to you bro.
Real quick, i may have solved it, but now its saying my mod is not a network mod, as in
2013-01-20 00:25:11 [WARNING] [ForgeModLoader] A mod tried to open a gui on the server without being a NetworkMod
Anyone know how to Networkize a mod?
This means that your instance in your mod file doesn't match your mod ID, I have had this same problem before and it is very frustrating to say the lease...but I would check to make sure that in your mod class the @Instance YourMod matches your modID YourMod then try running it again.
Its my pleasure but I would have to say that the thanks goes to you. Ive spent many hours scouring google for good tutorials on this subject and havent found any until yours, so its nice having a place to come to talk with others about it and trying to help solve problems. So again hats off to you bro.
This was my intention, I too have searched and asked for help in the dev and plowed through many pages in the forge forums trying to find answers. Then I just said whatever and tried to build my own furnace from scratch using the vanilla code, and thanks to members like jcm2606 and Darkhax and a small few others I was able to get a working furnace. Thats when I did the first GUI tut, and went from there. My upcoming mod... More Than Just Trees... will be using all these tuts I am creating. I needed a crafting table, and 2 furnaces and an enchantment table, but I am also doing an anvil and a chest because others may want to see those too, though they should be pretty easy to figure out using knowledge from the furnace and crafting table. And if anyone does a mod using more than one GUI the one from the crafting table tut will be a big help, just add more case points to add more GUI's. And since I cant be on all the time, it nice to have others such as yourself to help out, it doesn't go unnoticed and it really is appreciated.
I made a carbon copy of your furnace tut and it doesn't seem to want to work:
java.lang.IllegalArgumentException: Can not set tutorials.GuiHandlerExtruder field tutorials.Trees.guiHandlerExtruder to tutorials.Trees
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.parseSimpleFieldAnnotation(FMLModContainer.java:398)
at cpw.mods.fml.common.FMLModContainer.processFieldAnnotations(FMLModContainer.java:331)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:83)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:473)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:159)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:406)
at net.minecraft.client.MinecraftAppletImpl.startGame(MinecraftAppletImpl.java:47)
at net.minecraft.client.Minecraft.run(Minecraft.java:740)
at java.lang.Thread.run(Unknown Source)
My code (GUI):
package tutorials;
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 GuiHandlerExtruder implements IGuiHandler
{
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
// This gets the TileEntity the player is currently activating
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
// This checks if the TileEntity is the TileTutorial
if(tile_entity instanceof TileEntityExtruder)
{
// If it is it returns a new ContainerTutorial instance
return new ContainerExtruder(player.inventory, (TileEntityExtruder) tile_entity);
}
// Returns null if not
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
// This gets the TIleEntity the player is currently activating
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
// This checks if the TileEntity is the TileTutorial
if(tile_entity instanceof TileEntityExtruder)
{
// If it is it returns a new GuiTutorial instance
return new GuiExtruder(player.inventory, (TileEntityExtruder) tile_entity);
}
// Returns null if not
return null;
}
}
Rollback Post to RevisionRollBack
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
package lone.turtle.mod.blocks;
import lone.turtle.mod.GUIS.GuiLoom;
import lone.turtle.mod.GUIS.GuiTest1;
import lone.turtle.mod.common.TLTmain;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.src.ModLoader;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class BlockLoom extends Block{
public BlockLoom(int par1, int par2, int i)
{
super(par1, par2, Material.circuits);
this.setCreativeTab(TLTmain.tabTLTBlocks);
}
public String getTextureFile()
{
return "/lone/turtle/mod/textures/terrains.png";
}
public int getBlockTextureFromSide(int side)
{
switch(side)
{
case 0:
return 244;
case 1:
return 243;
case 2:
return 240;
case 3:
return 240;
case 4:
return 241;
case 5:
return 242;
default : return 0;
}
}
public boolean onBlockActivated(World var1, int var2, int var3, int var4, EntityPlayer player, int var6, float var7, float var8, float var9)
{
if (!player.isSneaking())
{
player.openGui(TLTmain.instance, 1, var1, var2, var3, var4);
return true;
}
else
{
return false;
}
}
}
Okay for the texture problem, I would recommend using this in the super constructor just before the tab...blockIndexInTexture I believe it is and use you texture id there, that should help your problem along, as with guis you have to have an id. If you are unsure how to use this method check in the vanilla code at some of the blocks, it will be in there.
I made a carbon copy of your furnace tut and it doesn't seem to want to work:
java.lang.IllegalArgumentException: Can not set tutorials.GuiHandlerExtruder field tutorials.Trees.guiHandlerExtruder to tutorials.Trees
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at cpw.mods.fml.common.FMLModContainer.parseSimpleFieldAnnotation(FMLModContainer.java:398)
at cpw.mods.fml.common.FMLModContainer.processFieldAnnotations(FMLModContainer.java:331)
at cpw.mods.fml.common.FMLModContainer.constructMod(FMLModContainer.java:452)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:69)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:317)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:300)
at com.google.common.eventbus.EventBus.post(EventBus.java:268)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:83)
at cpw.mods.fml.common.Loader.loadMods(Loader.java:473)
at cpw.mods.fml.client.FMLClientHandler.beginMinecraftLoading(FMLClientHandler.java:159)
at net.minecraft.client.Minecraft.startGame(Minecraft.java:406)
at net.minecraft.client.MinecraftAppletImpl.startGame(MinecraftAppletImpl.java:47)
at net.minecraft.client.Minecraft.run(Minecraft.java:740)
at java.lang.Thread.run(Unknown Source)
My code (GUI):
package tutorials;
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 GuiHandlerExtruder implements IGuiHandler
{
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
// This gets the TileEntity the player is currently activating
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
// This checks if the TileEntity is the TileTutorial
if(tile_entity instanceof TileEntityExtruder)
{
// If it is it returns a new ContainerTutorial instance
return new ContainerExtruder(player.inventory, (TileEntityExtruder) tile_entity);
}
// Returns null if not
return null;
}
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z)
{
// This gets the TIleEntity the player is currently activating
TileEntity tile_entity = world.getBlockTileEntity(x, y, z);
// This checks if the TileEntity is the TileTutorial
if(tile_entity instanceof TileEntityExtruder)
{
// If it is it returns a new GuiTutorial instance
return new GuiExtruder(player.inventory, (TileEntityExtruder) tile_entity);
}
// Returns null if not
return null;
}
}
If you made an exact copy of it, did you name your block in the mod class extruder? Also as a suggestion I had made in the original post, gather the source files, and change the necessary things there, like just rename the general classes and create a new block. In your mod class call it custom furnace or whatever you want and make one for on and one for off, though both should be = new BlockCustomFurnace(block id, gui id) and so on. You may need to do this, sorry if its a set back and also I changed my Gui Handler, if you look at my crafting table tut, you will notice it is now setup to handle all your guis...
Well, it should be working fine, but there seems to be an issue on this line:
private GuiHandlerTrees guiHandlerExtruder = new GuiHandlerTrees();
So I'm assuming I have a flaw in my GuiHandler, but no eclipse errors whatsoever.
I used your code from the crafting bench GuiHandler and just got rid of the table references. Shouldn't it work?
Rollback Post to RevisionRollBack
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
Fixed my problem with the multiple furnaces, took me forever but its done. But i have a question and I figured i might as well ask it here.
Whenever somebody disconnects from the server i'm running (with the mod installed on client and server), we get errors when we attempt to reconnect. Minecraft displays the text weird, but from what we can see of it, its two lines long and its something to do with World ID Mismatch 100 and World ID Mismatch 115, this also occurs on singleplayer sometimes. Anyone know what the issue is?
That I am not sure, may have something to do with my code, but I have not tested or tried server with it. I am not even sure how to do packethandlers yet, and have seen they are sort of required but not necessary for the mod to work on server, I do know this doesn't have to be installed on server if both or all clients connecting have the mod. Perhaps someone else knows.
Side note...re posting the tutorials for furnace and crafting table, furnace should be up tonight, trying to make it easier to understand. Adding only the furnace class code and the changes that need to be made so its easier to understand and know how, where, and why to make the necessary changes. Thank you for your understanding...
Hmm... Have you tried the new tut? The itemID's give me errors (I have to replace with shiftedIndex) and super.detectAndSendChanges(); in the container? You also never explain the proxy, which is where I get errors. Have you successfully made a furnace using it?
EDIT: It works! The only problem is that the cook bar doesn't show up (the little arrow that fills up)
DUAL EDIT: It only updates when I open and close the GUI?
Rollback Post to RevisionRollBack
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
Any ideas about the arrow? The arrow doesn't render unless I close and open the GUI, then it just stays there until I do it again, it doesn't animate. The fire won't show up until I close and reopen, but it is animated.
Rollback Post to RevisionRollBack
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
public class MagicCraftingTableGui extends GuiContainer
{
public MagicCraftingTableGui(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
super(new ContainerWorkbench(par1InventoryPlayer, par2World, par3, par4, par5));
}
/**
* Draw the foreground layer for the GuiContainer (everything in front of the items)
*/
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
this.fontRenderer.drawString(StatCollector.translateToLocal("container.crafting"), 28, 6, 4210752);
this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}
/**
* Draw the background layer for the GuiContainer (everything behind the items)
*/
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = this.mc.renderEngine.getTexture("/gui/crafting.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.renderEngine.bindTexture(var4);
int var5 = (this.width - this.xSize) / 2;
int var6 = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
}
}
/[CODE]
Hmm... Have you tried the new tut? The itemID's give me errors (I have to replace with shiftedIndex) and super.detectAndSendChanges(); in the container? You also never explain the proxy, which is where I get errors. Have you successfully made a furnace using it?
EDIT: It works! The only problem is that the cook bar doesn't show up (the little arrow that fills up)
DUAL EDIT: It only updates when I open and close the GUI?
Yes I have tried the new tut, I have 2 furnaces in my mod that both work using this revised version. I haven't explained the proxy because this mod does not use the proxy at all, just the registering of the tile entity in the mod class and a gui handler. I do not use proxies to extend the handler for this, because creating a GUI Handler will allow you an easier time to add more than one gui container to your mod. I have 6 all together in my mod... 2 Furnaces, 1 Crafting Table, 1 Chest, 1 Enchantment Table and 1 Anvil, they all work fine and if you had read the top of the page it says
Furnace Forge 1.4.7
@ASB2
I am really not understanding your problems at all, are you using MC version 1.4.7, and also could you use code brackets to make it easier to read your post...the little blue arrows under the smiley face... as for the gui handler if you are using or read my gui handler for the crafting table you would notice the case 1<< this is for registering the table in the gui handler.
@Nicodemuus
Yes some sound stuff, not that good though, just sound effects on blocks, I used lockandload's tutorial for this and darkhax too. What are you having trouble with?
Anyone know how to Networkize a mod?
Thanks goes to nicodemuus as usual for filling in the gap when I am absent from the forum...kudos to you my friend
Find out how I generate....coolAlias...world structure generation and rotation tool...
This means that your instance in your mod file doesn't match your mod ID, I have had this same problem before and it is very frustrating to say the lease...but I would check to make sure that in your mod class the @Instance YourMod matches your modID YourMod then try running it again.
This was my intention, I too have searched and asked for help in the dev and plowed through many pages in the forge forums trying to find answers. Then I just said whatever and tried to build my own furnace from scratch using the vanilla code, and thanks to members like jcm2606 and Darkhax and a small few others I was able to get a working furnace. Thats when I did the first GUI tut, and went from there. My upcoming mod... More Than Just Trees... will be using all these tuts I am creating. I needed a crafting table, and 2 furnaces and an enchantment table, but I am also doing an anvil and a chest because others may want to see those too, though they should be pretty easy to figure out using knowledge from the furnace and crafting table. And if anyone does a mod using more than one GUI the one from the crafting table tut will be a big help, just add more case points to add more GUI's. And since I cant be on all the time, it nice to have others such as yourself to help out, it doesn't go unnoticed and it really is appreciated.
Find out how I generate....coolAlias...world structure generation and rotation tool...
Find out how I generate....coolAlias...world structure generation and rotation tool...
My code (GUI):
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
Okay for the texture problem, I would recommend using this in the super constructor just before the tab...blockIndexInTexture I believe it is and use you texture id there, that should help your problem along, as with guis you have to have an id. If you are unsure how to use this method check in the vanilla code at some of the blocks, it will be in there.
If you made an exact copy of it, did you name your block in the mod class extruder? Also as a suggestion I had made in the original post, gather the source files, and change the necessary things there, like just rename the general classes and create a new block. In your mod class call it custom furnace or whatever you want and make one for on and one for off, though both should be = new BlockCustomFurnace(block id, gui id) and so on. You may need to do this, sorry if its a set back and also I changed my Gui Handler, if you look at my crafting table tut, you will notice it is now setup to handle all your guis...
Find out how I generate....coolAlias...world structure generation and rotation tool...
So I'm assuming I have a flaw in my GuiHandler, but no eclipse errors whatsoever.
I used your code from the crafting bench GuiHandler and just got rid of the table references. Shouldn't it work?
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
Whenever somebody disconnects from the server i'm running (with the mod installed on client and server), we get errors when we attempt to reconnect. Minecraft displays the text weird, but from what we can see of it, its two lines long and its something to do with World ID Mismatch 100 and World ID Mismatch 115, this also occurs on singleplayer sometimes. Anyone know what the issue is?
Side note...re posting the tutorials for furnace and crafting table, furnace should be up tonight, trying to make it easier to understand. Adding only the furnace class code and the changes that need to be made so its easier to understand and know how, where, and why to make the necessary changes. Thank you for your understanding...
Find out how I generate....coolAlias...world structure generation and rotation tool...
Find out how I generate....coolAlias...world structure generation and rotation tool...
EDIT: It works! The only problem is that the cook bar doesn't show up (the little arrow that fills up)
DUAL EDIT: It only updates when I open and close the GUI?
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
Also micro have you messed around with sounds at all? Or anyone reading this for that matter.
I mod things. Check me out on twitter or on Espernet IRC at #TheSteamTank
private List recipes = new ArrayList();
Collections.sort(this.recipes, new MagicCraftingTableRecipeSorter(this));
this.recipes.add(var17);
this.recipes.add(new ShapelessRecipes(par1ItemStack, var3));
for (var6 = 0; var6 < this.recipes.size(); ++var6)
{
IRecipe var12 = (IRecipe)this.recipes.get(var6);
I also get an error when trying to add my gui to the network registry
public class MyTools {
private MagicCraftingTableGui MagicCraftingTableGui = new MagicCraftingTableGui();
@Init
public void load(FMLInitializationEvent event) {
NetworkRegistry.instance().registerGuiHandler(this, MagicCraftingTableGui);
[CODE]/package MyTools;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ContainerWorkbench;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
public class MagicCraftingTableGui extends GuiContainer
{
public MagicCraftingTableGui(InventoryPlayer par1InventoryPlayer, World par2World, int par3, int par4, int par5)
{
super(new ContainerWorkbench(par1InventoryPlayer, par2World, par3, par4, par5));
}
/**
* Draw the foreground layer for the GuiContainer (everything in front of the items)
*/
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
this.fontRenderer.drawString(StatCollector.translateToLocal("container.crafting"), 28, 6, 4210752);
this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
}
/**
* Draw the background layer for the GuiContainer (everything behind the items)
*/
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = this.mc.renderEngine.getTexture("/gui/crafting.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.renderEngine.bindTexture(var4);
int var5 = (this.width - this.xSize) / 2;
int var6 = (this.height - this.ySize) / 2;
this.drawTexturedModalRect(var5, var6, 0, 0, this.xSize, this.ySize);
}
}
/[CODE]
http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/2203127-1-7-10-gear-utilities#c8
Yes I have tried the new tut, I have 2 furnaces in my mod that both work using this revised version. I haven't explained the proxy because this mod does not use the proxy at all, just the registering of the tile entity in the mod class and a gui handler. I do not use proxies to extend the handler for this, because creating a GUI Handler will allow you an easier time to add more than one gui container to your mod. I have 6 all together in my mod... 2 Furnaces, 1 Crafting Table, 1 Chest, 1 Enchantment Table and 1 Anvil, they all work fine and if you had read the top of the page it says
Furnace Forge 1.4.7
@ASB2
I am really not understanding your problems at all, are you using MC version 1.4.7, and also could you use code brackets to make it easier to read your post...the little blue arrows under the smiley face... as for the gui handler if you are using or read my gui handler for the crafting table you would notice the case 1<< this is for registering the table in the gui handler.
@Nicodemuus
Yes some sound stuff, not that good though, just sound effects on blocks, I used lockandload's tutorial for this and darkhax too. What are you having trouble with?
Find out how I generate....coolAlias...world structure generation and rotation tool...