Jump to content

Gui


MrNice

Recommended Posts

Hey i cannot find anywhere help how to make own gui, where to put all sources to what files. Now i dont see before some time ago there was some packet handler at tutorial but now it is not, and or some implement in proxy.

What is all about.

For 5 day's i was searching some tutorials but all are with container and entities SHIT. I don wana have an entity, i wana make item that will set metadata for blocks in gui menu. All tutorials about gui were in  mod loader or outdated or shit entities none of them has reach my problem. I wana make own gui. ALso gui must work on serwer.

BTW how to make such a tab gui like in creative mode player has?

 

Also tutorial section in wiki should have a own tutorial about gui only, not containers.

 

Plz help.

Link to comment
Share on other sites

you have to make a tile-entity to call your proxy's which call your container and your gui as the container is what the server uses to detect all the changes in the gui well the gui renders on the player's client then you will need recipes class and buttons to detect the item in the slot then when the button to change the item is pressed you detect the item in the slot and change it to what you want. So you know gui's work on both servers and clients by using the container and gui system.

 

and here is a list of tutorials: http://lmgtfy.com/?q=minecraft+forge+gui+tutorial

 

also you could look at how the furnace does it duh.

Link to comment
Share on other sites

I already told it's not going to be entity i dont need such tingh even to deal with entitity. Only item that onuse popsgui and change metadatawithnotify. For second i was trying to make a gui by thoe tutorials but even eclise show me only error when trying to:

 

@Mod(modid="Testmod", name="Test_mod", version="0.0.0")

@NetworkMod(clientSideRequired=true, serverSideRequired=false,

clientPacketHandlerSpec =  @SidedPacketHandler(channels = {"TestMod" }, packetHandler = ClientPacketHandler.class),

serverPacketHandlerSpec =  @SidedPacketHandler(channels = {"TestMod" }, packetHandler = ServerPacketHandler.class))

error

 

And i had to set even to null becouse mcpc refouse to work or register a handler even

NetworkRegistry.instance().registerGuiHandler(this, null);

 

I DON'T NEED and DON'T wana a entity or CONTAINER. Just listen what i had wrote in post 1.

Link to comment
Share on other sites

mnn.getNativeLang() != English

If I helped you please click on the "thank you" button.

Link to comment
Share on other sites

Maybe i didn't make myself clear but if you want a slot to be in the gui for a block to be held you HAVE to make a container and the tile entity IS NEEDED so you can open the gui and don't think you can just avoid doing this unless you change base code so stop being lazy and just make the stupid tile entity and container.

 

now lock this thread and learn basic java.

Link to comment
Share on other sites

the tile entity IS NEEDED so you can open the gui

TE is not needed to open a gui, proof is the code I posted earlier. I seriously doubt that Red Power or Forestry uses TEs for their bags.

mnn.getNativeLang() != English

If I helped you please click on the "thank you" button.

Link to comment
Share on other sites

No that's stackTagCompound, same thing is done in container entities. And changing metadata is extremely simple. Look at writable book for opening a GUI and then run a raytrace to grab the block and increment/decrement the metadata as needed.

I think its my java of the variables.

Link to comment
Share on other sites

or opn up a simple gui with buttons that on click will either detect items in slot x from the hotbar or your inventory, if its that block, change its metadata AKA, consume the block.item and place a new one.

easier then te and container, but requiers a lot of hassle with client and common proxies to consume/ add items to the players inventory, as both sides need the player'si nventory information.

Link to comment
Share on other sites

Error

2013-03-22 23:34:54 [iNFO] [sTDERR] net.minecraft.util.ReportedException: Ticking memory connection
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:64)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.integrated.IntegratedServerListenThread.networkTick(IntegratedServerListenThread.java:108)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:703)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:599)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:123)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:497)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-22 23:34:54 [iNFO] [sTDERR] Caused by: java.lang.ClassCastException: Testmod.GuiHammer cannot be cast to net.minecraft.inventory.Container
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.NetworkRegistry.openRemoteGui(NetworkRegistry.java:296)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at cpw.mods.fml.common.network.FMLNetworkHandler.openGui(FMLNetworkHandler.java:335)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.entity.player.EntityPlayer.openGui(EntityPlayer.java:2304)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at Testmod.hammer.onItemUse(hammer.java:28)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.item.ItemStack.tryPlaceItemIntoWorld(ItemStack.java:135)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.item.ItemInWorldManager.activateBlockOrUseItem(ItemInWorldManager.java:424)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.NetServerHandler.handlePlace(NetServerHandler.java:579)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.packet.Packet15Place.processPacket(Packet15Place.java:79)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.MemoryConnection.processReadPackets(MemoryConnection.java:80)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.NetServerHandler.networkTick(NetServerHandler.java:136)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	at net.minecraft.network.NetworkListenThread.networkTick(NetworkListenThread.java:57)
2013-03-22 23:34:54 [iNFO] [sTDERR] 	... 6 more
2013-03-22 23:34:55 [iNFO] [ForgeModLoader] Unloading dimension 0
2013-03-22 23:34:55 [iNFO] [ForgeModLoader] Unloading dimension -1
2013-03-22 23:34:55 [iNFO] [ForgeModLoader] Unloading dimension 1
2013-03-22 23:34:55 [sEVERE] [ForgeModLoader] Fatal errors were detected during the transition from SERVER_STARTED to SERVER_STOPPED. Loading cannot continue
2013-03-22 23:34:55 [sEVERE] [ForgeModLoader] 
mcp [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
FML [Forge Mod Loader] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
Forge [Minecraft Forge] (coremods) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
Testmod [Test_mod] (bin) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available->Available->Available->Available->Available
2013-03-22 23:34:55 [sEVERE] [ForgeModLoader] The ForgeModLoader state engine has become corrupted. Probably, a state was missed by and invalid modification to a base classForgeModLoader depends on. This is a critical error and not recoverable. Investigate any modifications to base classes outside ofForgeModLoader, especially Optifine, to see if there are fixes available.
2013-03-22 23:34:55 [iNFO] [sTDERR] Exception in thread "Server thread" java.lang.RuntimeException: The ForgeModLoader state engine is invalid
2013-03-22 23:34:55 [iNFO] [sTDERR] 	at cpw.mods.fml.common.LoadController.transition(LoadController.java:122)
2013-03-22 23:34:55 [iNFO] [sTDERR] 	at cpw.mods.fml.common.Loader.serverStopped(Loader.java:780)
2013-03-22 23:34:55 [iNFO] [sTDERR] 	at cpw.mods.fml.common.FMLCommonHandler.handleServerStopped(FMLCommonHandler.java:469)
2013-03-22 23:34:55 [iNFO] [sTDERR] 	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:559)
2013-03-22 23:34:55 [iNFO] [sTDERR] 	at net.minecraft.server.ThreadMinecraftServer.run(ThreadMinecraftServer.java:16)
2013-03-22 23:35:05 [iNFO] [sTDOUT] Stopping!

 

My files

http://www.sendspace.pl/file/27ae3893e7896dd4498dbfc

It is probably in guihandler or smting, btw how would look dispatcher for other gui, in gui screen make case clause and dispatch difrent guis??

Link to comment
Share on other sites

package Testmod;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import cpw.mods.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {

@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {
	// TODO Auto-generated method stub
	return new GuiHammer();
}

@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {
	// TODO Auto-generated method stub
	return new GuiHammer();
}

}

GuiHandler

GuiHammer

import org.lwjgl.opengl.GL11;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;

public class GuiHammer extends GuiScreen{
public final int xSizeOfTexture = 176;
public final int ySizeOfTexture = 88;
@Override
public void drawScreen(int x, int y, float f)
{
drawDefaultBackground();

int var4 = this.mc.renderEngine.getTexture("/Block/changeColorGUI.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.renderEngine.bindTexture(var4);

int posX = (this.width - xSizeOfTexture) / 2;
int posY = (this.height - ySizeOfTexture) / 2;

drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);

super.drawScreen(x, y, f);
}
public void initGui()
{
this.controlList.clear();

int posX = (this.width - xSizeOfTexture) / 2;
int posY = (this.height - ySizeOfTexture) / 2;

this.controlList.add(new GuiButton(0, posX+ 40, posY + 40, 100, 20, "no use"));
}
}

 

 

Hammer Java

package Testmod;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class hammer extends ItemPickaxe{

public hammer(int par1, EnumToolMaterial par2EnumToolMaterial) {
	super(par1, par2EnumToolMaterial);
	// TODO Auto-generated constructor stub
}
@Override
 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World parworld, int x, int y, int z, int side, float hx, float hy, float hz)
	{
		if (parworld.isRemote)
		{
			return true;
		}
		else
		{
			int meta = parworld.getBlockMetadata(x, y, z);
			par2EntityPlayer.addChatMessage("Side is: "+ side +"\nFacing is "+ meta);
			meta+=1;
			parworld.setBlockAndMetadataWithNotify(x, y, z, parworld.getBlockId(x, y, z), meta);
			par2EntityPlayer.openGui(Testmod.instance, 0, parworld, 0, 0, 0);
			return true;
		}	
	}

@Override
public String getTextureFile(){
	return "/Testmod/pngs/items.png";
}

}

 

Mod main File

package Testmod;

import net.minecraft.block.Block;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;


@Mod(modid="Testmod", name="Test_mod", version="0.0.0")
@NetworkMod(clientSideRequired=true, serverSideRequired=false, channels = {"TestMod" }, packetHandler = PacketHandler.class)

public class Testmod {

        // The instance of your mod that Forge uses.
        @Instance("Testmod")
        public static Testmod instance;
       
        // Says where the client and server 'proxy' code is loaded.
        @SidedProxy(clientSide="Testmod.ClientProxy", serverSide="Testmod.CommonProxy")
        public static CommonProxy proxy;
        //blocks
        public static Block TitaniumBlock;
        //items
        
        //tools
        public static Item hammer;
        EnumToolMaterial Mymaterial = EnumHelper.addToolMaterial("My material", 3, 3000, 8.0F, 10, 14);
        //GUI
        private static IGuiHandler guiHandler;
        
       
        @PreInit
        public void preInit(FMLPreInitializationEvent event) {
                // Stub Method
        }
       
        @Init
        public void load(FMLInitializationEvent event) {
        	TitaniumBlock = (new TitaniumOre(538, 0)).setBlockName("TitaniumOre");
    		
    		MinecraftForge.setBlockHarvestLevel(TitaniumBlock, "pickaxe", 3);
    		GameRegistry.registerBlock(TitaniumBlock);
    		hammer  =  new hammer(600, Mymaterial).setIconIndex(0).setItemName("Hammer");
    		
    		
    		LanguageRegistry.addName(TitaniumBlock, "Titanium Block Ore");
    		LanguageRegistry.addName(hammer, "Mlotek");
            proxy.registerRenderThings();
            //gui
            guiHandler = new GuiHandler();
            NetworkRegistry.instance().registerGuiHandler(this, guiHandler);
        }
       
        @PostInit
        public void postInit(FMLPostInitializationEvent event) {
                // Stub Method
        }
}

Link to comment
Share on other sites

opening a gui

 

        FMLNetworkHandler.openGui(player, mod_RpgInventory.instance, 2, world, x, y, z); //2 can be anything you like

 

 

 

if you want a container with your gui

 

public class MyGui extends GuiContainer {

 

 

 

int var4 = this.mc.renderEngine.getTexture("/Block/changeColorGUI.png");

GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

this.mc.renderEngine.bindTexture(var4);

 

dafuq, you still in 1.4.7 ?

 

GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

this.mc.renderEngine.bindTexture("/Block/changeColorGUI.png"));

Link to comment
Share on other sites

I redone GuiSCreen but now it dosent shows me :/ still dosent work no error nothing:

Testmod

package Testmod;

import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.IGuiHandler;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;


@Mod(modid="Testmod", name="Test_mod", version="0.0.0")
@NetworkMod(clientSideRequired=true, serverSideRequired=false, channels = {"TestMod" }, packetHandler = PacketHandler.class)

public class Testmod {

        // The instance of your mod that Forge uses.
        @Instance("Testmod")
        public static Testmod instance;
       
        // Says where the client and server 'proxy' code is loaded.
        @SidedProxy(clientSide="Testmod.ClientProxy", serverSide="Testmod.CommonProxy")
        public static CommonProxy proxy;
        //blocks
        public static Block TitaniumBlock;
        //items
        
        //tools
        public static Item hammer;
        EnumToolMaterial Mymaterial = EnumHelper.addToolMaterial("My material", 3, 3000, 8.0F, 10, 14);
        //GUI
        private static IGuiHandler guiHandler;
        
       
        @PreInit
        public void preInit(FMLPreInitializationEvent event) {
                // Stub Method
        }
       
        @Init
        public void load(FMLInitializationEvent event) {
        	TitaniumBlock = (new TitaniumOre(538, 0)).setBlockName("TitaniumOre");
    		
    		MinecraftForge.setBlockHarvestLevel(TitaniumBlock, "pickaxe", 3);
    		GameRegistry.registerBlock(TitaniumBlock);
    		hammer  =  new hammer(600, Mymaterial).setIconIndex(0).setItemName("Hammer");
    		
    		
    		LanguageRegistry.addName(TitaniumBlock, "Titanium Block Ore");
    		LanguageRegistry.addName(hammer, "Mlotek");
            proxy.registerRenderThings();
            //gui
            guiHandler = new GuiHandler();
            NetworkRegistry.instance().registerGuiHandler(this, guiHandler);
        }
       
        @PostInit
        public void postInit(FMLPostInitializationEvent event) {
                // Stub Method
        }


}

 

Packet handler

package Testmod;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;

import net.minecraft.network.INetworkManager;
import net.minecraft.network.packet.Packet250CustomPayload;
import cpw.mods.fml.common.network.IPacketHandler;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkModHandler;
import cpw.mods.fml.common.network.Player;

// Create a class and implement IPacketHandler
// This just handles the data packets in the server
public class PacketHandler implements IPacketHandler{
@Override
public void onPacketData(INetworkManager manager, Packet250CustomPayload payload, Player player){
DataInputStream data = new DataInputStream(new ByteArrayInputStream(payload.data));
}

}

 

Common Proxy

package Testmod;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraftforge.client.MinecraftForgeClient;

public class CommonProxy 
{
public static String BLOCK_PNG = "/Testmod/pngs/block.png";
public static String ITEMS_PNG = "/Testmod/pngs/items.png";
    
    // Client stuff
public void registerRenderThings() {
	MinecraftForgeClient.preloadTexture(BLOCK_PNG);
        MinecraftForgeClient.preloadTexture(ITEMS_PNG);
    }
public Object openClientGui(EntityPlayer player, int ID)
//getServerGuiElement
{      
        return null;
    }
}

 

Client Proxy

package Testmod;

import cpw.mods.fml.common.network.IGuiHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import Testmod.CommonProxy;

public class ClientProxy extends CommonProxy {
@Override
    public void registerRenderThings() {
            
    }
public Object openClientGui(int ID, EntityPlayer player)
    {
	switch (ID)
        {
            case 0:
               return new GuiHammer(player,ID);

            case 1:
               return new GuiHammer(player,ID);

            case 2:
               return new GuiHammer(player,ID);
        }
       
        return null;
    }

 

hammer

package Testmod;

import cpw.mods.fml.common.network.FMLNetworkHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;

public class hammer extends ItemPickaxe{

public hammer(int par1, EnumToolMaterial par2EnumToolMaterial) {
	super(par1, par2EnumToolMaterial);
	// TODO Auto-generated constructor stub
}
@Override
 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2Player, World parworld, int x, int y, int z, int side, float hx, float hy, float hz)
	{
		if (parworld.isRemote)
		{
			return true;
		}
		else
		{
			int meta = parworld.getBlockMetadata(x, y, z);
			par2Player.addChatMessage("Side is: "+ side +"\nFacing is "+ meta);
			par2Player.openGui(Testmod.instance, 0, parworld, x, y, z);
			//par2EntityPlayer.openGui();
			//FMLNetworkHandler.openGui(par2Player, Testmod.instance, 0, parworld, x, y, z);
			meta+=1;
			parworld.setBlockAndMetadataWithNotify(x, y, z, parworld.getBlockId(x, y, z), meta);

			return true;
		}
	}

@Override
public String getTextureFile(){
	return "/Testmod/pngs/items.png";
}

}

 

GuiHandler

package Testmod;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.IGuiHandler;

public class GuiHandler implements IGuiHandler {

@Override
public Object getServerGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {
	// TODO Auto-generated method stub
	return null;
}

@Override
public Object getClientGuiElement(int ID, EntityPlayer player, World world,
		int x, int y, int z) {
	// TODO Auto-generated method stub
	return new ClientProxy().openClientGui(player,ID);
}

}

 

GuiHammer

package Testmod;

import org.lwjgl.opengl.GL11;

import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.player.EntityPlayer;

public class GuiHammer extends GuiScreen{
public GuiHammer(EntityPlayer player,int ID)
{

}
public final int xSizeOfTexture = 176;
public final int ySizeOfTexture = 88;
@Override
public void drawScreen(int x, int y, float f)
{
drawDefaultBackground();

int var4 = this.mc.renderEngine.getTexture("/Block/changeColorGUI.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.renderEngine.bindTexture(var4);

int posX = (this.width - xSizeOfTexture) / 2;
int posY = (this.height - ySizeOfTexture) / 2;

drawTexturedModalRect(posX, posY, 0, 0, xSizeOfTexture, ySizeOfTexture);

super.drawScreen(x, y, f);
}
public void initGui()
{
this.controlList.clear();

int posX = (this.width - xSizeOfTexture) / 2;
int posY = (this.height - ySizeOfTexture) / 2;

this.controlList.add(new GuiButton(0, posX+ 40, posY + 40, 100, 20, "no use"));
}
public boolean doesGuiPauseGame()
    {
        return true;
        }
}

 

Titaniumore

package Testmod;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;

public class TitaniumOre extends Block{
public TitaniumOre(int par1, int par2){
	super(par1, par2, Material.rock);
	this.setCreativeTab(CreativeTabs.tabBlock);
	this.setHardness(89.3F);
	this.setResistance(89.5F);
	this.setStepSound(soundMetalFootstep);
}
@Override
public String getTextureFile(){
	return "/Testmod/pngs/block.png";
}
}

 

Was looking at this topic http://www.minecraftforge.net/forum/index.php?topic=5889.0 well this guy almost know everyting, but why mu GUI DOSENT SHOW PLZ HELP ME.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Post logs as per https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/ They may have information that will answer these questions.
    • I was left reeling when a glitch on a cryptocurrency exchange caused me to lose $166,000 worth of my hard-earned savings. It felt like my entire world had crumbled in the blink of an eye, leaving me with a sense of hopelessness. Determined not to give up, I delved into research on recovery options, unsure of what to expect. That's when I stumbled upon I was left reeling when a glitch on a cryptocurrency exchange caused me to lose $166,000 worth of my hard-earned savings. It felt like my entire world had crumbled in the blink of an eye, leaving me with a sense of hopelessness. Determined not to give up, I delved into research on recovery options, unsure of what to expect. That's when I stumbled upon DIGITAL HACK RECOVERY, a beacon of hope in my darkest hour. Despite my initial doubts, I decided to take a leap of faith and give them a shot as a final lifeline. The experts at DIGITAL HACK RECOVERY proved to be masters of their craft, guiding me through their exclusive process with precision and expertise. Utilizing cutting-edge blockchain analysis methods, they were able to track down the elusive trail of my missing funds and identify the exact point of failure. Their forensic talents were unparalleled as they tirelessly combed through the intricate web of blockchain data to locate my cryptocurrency. With each step they took, they kept me informed of their progress, never wavering in their belief that my funds could be rescued. After several painstaking weeks, DIGITAL HACK RECOVERY finally located and restored my $166,000 worth of cryptocurrency. I was awestruck that they were able to salvage what I had thought was lost forever. The whole experience restored my faith in the crypto space and proved that even in the worst situations, recovery is possible with the right experts on your side. I will be forever grateful to DIGITAL HACK RECOVERY for giving me back my life savings when I needed it most. Their tireless efforts and technical mastery turned what could have been a devastating loss into an uplifting success story. Book a time with DIGITAL HACK RECOVERY through: digital hack recovery @ techie . com &  +12018871705
    • public class ParticleReboundRecipe implements Recipe<CraftingContainer> { private List<ParticleReboundIngredient> inputs; private ParticleReboundFuel fuel; private ItemStack output; public ParticleReboundRecipe(List<ParticleReboundIngredient> inputs, ParticleReboundFuel fuel, ItemStack output) { this.inputs = inputs; this.fuel = fuel; this.output = output; } // TODO: Implement interface ... // TODO: Move to separate file if desired public record ParticleReboundIngredient(Ingredient ingredient, int count) { public static final Codec<ParticleReboundIngredient> CODEC = RecordCodecBuilder.create( builder -> builder.group( Ingredient.CODEC.fieldOf("ingredient").forGetter((i) -> i.ingredient), Codec.INT.fieldOf("count").forGetter(i -> i.count) ).apply(builder, ParticleReboundIngredient::new) ); } // TODO: Move to separate file if desired public record ParticleReboundFuel(String tag) { public static final Codec<ParticleReboundFuel> CODEC = RecordCodecBuilder.create( builder -> builder.group(Codec.STRING.fieldOf("tag").forGetter(f -> f.tag)).apply(builder, ParticleReboundFuel::new) ); public boolean isFuel(ItemStack stack) { // TODO: Check if fuel item matches the tag } } public class Serializer implements RecipeSerializer<ParticleReboundRecipe> { public static final Codec<ParticleReboundRecipe> CODEC = RecordCodecBuilder.create( builder -> builder.group( ParticleReboundIngredient.CODEC.listOf().fieldOf("inputs").forGetter(r -> r.inputs), ParticleReboundFuel.CODEC.fieldOf("fuel").forGetter(r -> r.fuel), ItemStack.CODEC.fieldOf("output").forGetter(r -> r.output) ).apply(builder, ParticleReboundRecipe::new) ); @Override public @NotNull Codec<ParticleReboundRecipe> codec() { return CODEC; } // TODO: The rest ... } }   ?
    • I'm sure load and SaveAdditional are what you are looking for, probably. Mind sharing your BE class code? You also need to override onLoad method if you haven't
  • Topics

×
×
  • Create New...

Important Information

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