Jump to content

Recommended Posts

Posted

Hi, I just setup proxies on my mod, but no matter what I try my game always crashes.

 

TutorialCommonProxy:

package com.hurleyboarder.Main;

public class TutorialCommonProxy {

}

 

ClientProxy:

package com.hurleyboarder.Main;

import cpw.mods.fml.client.registry.RenderingRegistry;

public class ClientProxy extends TutorialCommonProxy{

public void registerRenderThing(){

}


}


 

MainRegistry:

package com.hurleyboarder.Main;

import net.minecraft.block.Block;

import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;

import com.hurleyboarder.lib.RefStrings;
import com.hurleyboarder.tools.BedAxe;
import com.hurleyboarder.tools.BedHoe;
import com.hurleyboarder.tools.BedPick;
import com.hurleyboarder.tools.BedShovel;
import com.hurleyboarder.tools.BedSword;
import com.hurleyboarder.tools.EAxe;
import com.hurleyboarder.tools.EHoe;
import com.hurleyboarder.tools.EPick;
import com.hurleyboarder.tools.ESpade;
import com.hurleyboarder.tools.ESword;

import come.hurleyboarder.food.FoodDApple;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;


@Mod(modid = RefStrings.MODID, name =RefStrings.NAME , version =RefStrings.VERSION )
public class MainRegistry {


public final static Block Nuke = new Nuke(6000, Material.tnt);

public final static Block GoldFurnace = new GoldFurnace(false);

public final static Item ItemBow = new ItemBow();

public final static Item EArrow = new ItemEArrow(5006);

//Food
public final static Item DiamondApple = new FoodDApple(5011, 10, true);

//Tools Material
public static ToolMaterial Emeraldt = EnumHelper.addToolMaterial("Emerald Tool Material", 3, 2000, 15.0f, 4.0f, 25);

public static ToolMaterial BedRock = EnumHelper.addToolMaterial("BedRock Tool Material ", 3, 3000, 18.0f, 5.0f, 30);

@Instance("tutorial")
public static MainRegistry instance;

@SidedProxy(clientSide="com.hurleyboarder.main.TutorialClientProxy", serverSide="telinc.tutorialmod.common.TutorialCommonProxy")
public static TutorialCommonProxy proxy;



@EventHandler
public static void PreLoad (FMLPreInitializationEvent Event){


}



@EventHandler
public static void Load (FMLInitializationEvent Event)
{

   }
}

Posted

You have several mistakes in this line:

@SidedProxy(clientSide="com.hurleyboarder.main.TutorialClientProxy", serverSide="telinc.tutorialmod.common.TutorialCommonProxy")

 

First of all, based on your package declarations, the client proxy is in com.hurleyboarder.Main with a capital "M".

 

Secondly, your common proxy is in a totally different package than what you wrote.  It is also in com.hurleyboarder.Main not telinc.tutorialmod.common.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Thanks so much that worked. Oh and it was in a totally different place because I got it from the forge wiki

 

I know but the first thing you must learn when using tutorials is to go through every line, make sure you understand them, and then edit them to suit your mod.  It is rare that copy and paste just works.  So always go through every line very carefully.  Have fun modding!

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Doesn't the common proxy need an empty "public void registerRenderThing()" that the client proxy will override with something non-trivial?

 

BTW, rather than a method name like "registerRenderThing", you can mimic the Main class method names that do the calling. In other words, your proxies can parallel your Main class's PreLoad(), Load() sequence. Your common proxy can even do all the real work that's in those Main methods. The client proxy can call its super before doing a few client-only steps.

 

What you'd be left with in each Main method is a simple call to the corresponding proxy.method. It's not necessary (and maybe not even good style), but see it that way once and suddenly proxies make perfect sense.

The debugger is a powerful and necessary tool in any IDE, so learn how to use it. You'll be able to tell us more and get better help here if you investigate your runtime problems in the debugger before posting.

Posted

Doesn't the common proxy need an empty "public void registerRenderThing()" that the client proxy will override with something non-trivial?

 

BTW, rather than a method name like "registerRenderThing", you can mimic the Main class method names that do the calling. In other words, your proxies can parallel your Main class's PreLoad(), Load() sequence. Your common proxy can even do all the real work that's in those Main methods. The client proxy can call its super before doing a few client-only steps.

 

What you'd be left with in each Main method is a simple call to the corresponding proxy.method. It's not necessary (and maybe not even good style), but see it that way once and suddenly proxies make perfect sense.

 

Yes, the way I do it is have main methods that handle the FML lifecycle events (pre-init, init, etc) that call proxy methods of same name.  The client proxy should extend common proxy and for any method in client proxy, it should have same method in common proxy which is overridden by client method.

 

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

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



×
×
  • Create New...

Important Information

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