Jump to content

[SOLVED]Custom TickHandler counting milliseconds


lorizz

Recommended Posts

Guys I have a mod that add something specials for my server, it's the RageMode, whenever the player do the right click after a combo of 80 hits, it will start the rage mode BUT:

 

I want that the rage mode ends after 7.2 seconds!

 

I tried making a TickHandler but I can't figure out how to do that, I never did something with ticks, if you can help me and the code works I'll finally know how to do ticks :3

 

My ExoRageModeEvent code:

 

public class ExoRageModeEvent extends ItemSword {

public static int comboStreak = 0;
public static int maxComboStreak = 240;
public static int minComboStreak = 3;
public static boolean rageMode = false;
public static boolean soundStarted = false;

public ExoRageModeEvent(int par1, EnumToolMaterial par2EnumToolMaterial) {
	super(par1, par2EnumToolMaterial);
	// TODO Auto-generated constructor stub
}

@SideOnly(Side.CLIENT)
public void onUpdate(ItemStack item, World world, Entity entity, int par4,
		boolean par5) {
	if (par5 && (entity instanceof EntityPlayer)) {
		if (rageMode == false) {
			EntityPlayer player = (EntityPlayer) entity;
		} else {
			EntityPlayer player = (EntityPlayer) entity;
			/*
			 * wait 7.2 seconds; rageMode = false;
			 */
		}

	} else {
		EntityPlayer player = (EntityPlayer) entity;
		player.capabilities.setPlayerWalkSpeed(0.1F);
		rageMode = false;
		comboStreak = 0;
	}
}

public boolean hitEntity(ItemStack par1ItemStack,
		EntityLiving par2EntityLiving, EntityLiving par3EntityLiving) {

	par2EntityLiving.setPosition(par2EntityLiving.posX,
			par2EntityLiving.posY, par2EntityLiving.posZ);

	comboStreak += 1;

	if (par3EntityLiving instanceof EntityPlayer) {
		if (comboStreak == 80) {
			EntityPlayer player = (EntityPlayer) par3EntityLiving;
			player.sendChatToPlayer("Your powerup is ready! Right click to activate it!");
		}
	}

	if (comboStreak > maxComboStreak) {
		comboStreak = 240;
	}

	return true;
}

@SideOnly(Side.CLIENT)
public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World,
		EntityPlayer par3EntityPlayer) {

	if (comboStreak >= 80) {
		rageMode = true;
		// Wait 0.05 seconds because if I put in the condition "soundStarted == false"
		// it will automatically read first the soundStarted = true under that "playSoundEffect"
		// because the song will load 0.01 second after!
		par2World.playSoundEffect(par3EntityPlayer.posX,
				par3EntityPlayer.posY, par3EntityPlayer.posZ,
				"ExoWorld.RageMode", 1.0F, 1.0F);
		soundStarted = true;
	}
	if (comboStreak >= 90) {
		comboStreak = 0;
	}
	return par1ItemStack;
}

}

 

Any help? Thanks!

Link to comment
Share on other sites

First:

@SideOnly(Side.CLIENT)

Don't write it if you don't know what it means. Seriously. Don't.

 

 

Now, in onUpdate, you can use world time as a counter or just increment your own counter field.

If you want to use a TickHandler, you'll have to make a class with "implements ITickHandler". There are tutorials on it.

Link to comment
Share on other sites

First:

@SideOnly(Side.CLIENT)

I know what SideOnly means -.- I just put that in onItemRightClick for mistake, now it works on server PERFECTLY

 

Now, in onUpdate, you can use world time as a counter or just increment your own counter field.

 

How???

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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