Jump to content

1.7.2 ITickHandler replacement?


Alesimula

Recommended Posts

but now i have two codes that i know are used to register event, have i to use both or have i to use one of them? what one?

 

MinecraftForge.EVENT_BUS.register(new mod_Glacia.TickHandlerClient());

 

or

 

FMLCommonHandler.instance().bus().register(new mod_Glacia.TickHandlerClient());

Actually i don't know what to write in this signature soooo.... anyway

Link to comment
Share on other sites

There are four different buses, two of main interest:

 

Forge events goes on the MinecraftForge.EVENT_BUS

 

FML events go on the FMLCommonHandler bus

 

If you register your event on the wrong bus it won't be called.

 

Easiest way: look to see which package it is in.

 

TickEvent is in package cpw.mods.fml, so use FMLCommonHandler

 

and eg ClientChatReceivedEvent is in net.minecraftforge, so use MinecraftForge

 

-TGG

 

 

Link to comment
Share on other sites

Is this code good?

 

public static class TickHandlerClient

    {

 

private GuiScreen lastGuiOpen;

 

@SubscribeEvent

public void onTick(TickEvent event)

{

//CLIENT TICK

if (event.type == TickEvent.Type.CLIENT && event.side == Side.CLIENT)

{

//CLIENT TICK START

if (event.phase == TickEvent.Phase.START)

{

final Minecraft minecraft = FMLClientHandler.instance().getClient();

 

            final WorldClient world = minecraft.theWorld;

 

            if (world != null)

            {

            if (world.provider instanceof WorldProviderGlacia)

                {

            if (world.provider.getSkyRenderer() == null)

                    {

            world.provider.setSkyRenderer(new GlacialSkyProvider());

                    }

                }

            }

}

 

//CLIENT TICK END

else

{

Minecraft minecraft = Minecraft.getMinecraft();

 

GuiScreen var15 = minecraft.currentScreen;

 

int var14;

 

if (var15 != null)

{

if (var15 instanceof GuiAchievements)

{

var14 = ((GuiAchievements)var15).currentPage;

 

if (AchievementPage.getTitle(var14).equals("Glacia"))

{

minecraft.thePlayer.openGui(mod_Glacia.instance, GlaciaCommonProxy.GUI_ID_ACHIEVEMENTS, minecraft.theWorld, var14, 0, 0);

}

}

 

if (var15 instanceof GuiAchievementsGlacia)

{

var14 = ((GuiAchievementsGlacia)var15).currentPage;

 

if (!AchievementPage.getTitle(var14).equals("Glacia"))

{

GuiAchievements var16 = new GuiAchievements(var15, minecraft.thePlayer.getStatFileWriter());

var16.currentPage = var14;

FMLClientHandler.instance().displayGuiScreen(minecraft.thePlayer, var16);

}

}

}

}

}

}

    }

Actually i don't know what to write in this signature soooo.... anyway

Link to comment
Share on other sites

You can subscribe directly to the various TickEvents, rather than the generic TickEvent

 

ServerTickEvent

ClientTickEvent

WorldTickEvent

PlayerTickEvent

RenderTickEvent

 

Those are all the tick events available at this time, that I can find, so you can use:

@SubscribeEvent
public void onTick(ClientTickEvent event)
{
// codes
}

Link to comment
Share on other sites

like this?

 

    public static class TickHandlerClient

    {

 

private GuiScreen lastGuiOpen;

 

@SubscribeEvent

public void onTick(TickEvent.ClientTickEvent event)

{

//CLIENT TICK START

if (event.phase == TickEvent.Phase.START)

{

final Minecraft minecraft = FMLClientHandler.instance().getClient();

 

            final WorldClient world = minecraft.theWorld;

 

            if (world != null)

            {

            if (world.provider instanceof WorldProviderGlacia)

                {

            if (world.provider.getSkyRenderer() == null)

                    {

            world.provider.setSkyRenderer(new GlacialSkyProvider());

                    }

                }

            }

}

 

//CLIENT TICK END

else

{

Minecraft minecraft = Minecraft.getMinecraft();

 

GuiScreen var15 = minecraft.currentScreen;

 

int var14;

 

if (var15 != null)

{

if (var15 instanceof GuiAchievements)

{

var14 = ((GuiAchievements)var15).currentPage;

 

if (AchievementPage.getTitle(var14).equals("Glacia"))

{

minecraft.thePlayer.openGui(mod_Glacia.instance, GlaciaCommonProxy.GUI_ID_ACHIEVEMENTS, minecraft.theWorld, var14, 0, 0);

}

}

 

if (var15 instanceof GuiAchievementsGlacia)

{

var14 = ((GuiAchievementsGlacia)var15).currentPage;

 

if (!AchievementPage.getTitle(var14).equals("Glacia"))

{

GuiAchievements var16 = new GuiAchievements(var15, minecraft.thePlayer.getStatFileWriter());

var16.currentPage = var14;

FMLClientHandler.instance().displayGuiScreen(minecraft.thePlayer, var16);

}

}

}

}

}

    }

Actually i don't know what to write in this signature soooo.... anyway

Link to comment
Share on other sites

Hi

 

Just a general suggestion, I find with new code that it's very helpful to try it in small pieces and get it working by itself before I try to integrate it into a bigger project.  I keep a separate project called "TestFramework" full of simple classes to test out my new classes and make sure I understand how they work - Item Renderers, Tick Handlers, Tile Entities, etc.  Otherwise it just gets too hard to figure out where the bugs are.

 

-TGG

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



×
×
  • Create New...

Important Information

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