Posted October 6, 201411 yr 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) { } }
October 6, 201411 yr 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/
October 6, 201411 yr Author Thanks so much that worked. Oh and it was in a totally different place because I got it from the forge wiki
October 6, 201411 yr 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/
October 7, 201411 yr 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.
October 7, 201411 yr 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.