Jump to content

Recommended Posts

Posted

Hello everyone, I was wondering if someone could help me with a problem I am running into with my custom armor. With one of my custom armor sets I would like to make the player Immune to any damage from the wither effect so if anyone can help that would be great.

Posted

Subscribe to

LivingAttackEvent

, check if the entity is wearing your armour and the

DamageSource

is

DamageSource.wither

and cancel the event.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

  • 2 weeks later...
Posted

I know I put this as solved before because I thought I understood how to do it but I in fact do not. So if anyone out there can give me a more detailed explanation as to what I'm supposed to do I would really appreciate it. I am new to modding so I am sorry for this misunderstanding.

Posted

I wrote an if statement to check for my armor but it didn't seem to work so I removed it and closed my applications to take a break and when I went back to try coding it again I couldn't CTRL+Z back to get the statement back.

 

And as to what I'm exactly having problems with is that I need to write an if statement that will work and I need to know how exactly to cancel the DamageSource.wither

 

package com.thefuturemarine.ArmorModPlus.event;

import com.thefuturemarine.ArmorModPlus.init.ArmorModItems;

import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
import net.minecraft.network.play.server.SPacketCombatEvent.Event;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingHurtEvent;
import net.minecraftforge.fml.common.eventhandler.Cancelable;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;

public class EventHandler {
@SubscribeEvent
public void LivingAttackEvent(LivingHurtEvent event)
{

}

@SubscribeEvent
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack)
	{

	}
}

 

Posted
if(event.souce == Damage.wither && event.entity is EntityPlayer && player.getEquipment == MyAntiWitherChest) {
    event.setCanceled(true);
}

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Thank you for the reply Draco! Now am I supposed to put that in LivingAttackEvent or in onArmorTick? I know it's probably an easy answer but I am in fact a newbie when it comes to figuring these things out.

 

public class EventHandler {
@SubscribeEvent
public void LivingAttackEvent(LivingHurtEvent event) {

}

@SubscribeEvent
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack, LivingAttackEvent event) {
	if (player.getItemStackFromSlot(EntityEquipmentSlot.HEAD) != null && player.getItemStackFromSlot(EntityEquipmentSlot.HEAD).getItem() == ArmorModItems.obsidian_helmet)
		if (player.getItemStackFromSlot(EntityEquipmentSlot.CHEST) != null && player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() == ArmorModItems.obsidian_chestplate)
			if (player.getItemStackFromSlot(EntityEquipmentSlot.LEGS) != null && player.getItemStackFromSlot(EntityEquipmentSlot.LEGS).getItem() == ArmorModItems.obsidian_leggings)
				if (player.getItemStackFromSlot(EntityEquipmentSlot.FEET) != null && player.getItemStackFromSlot(EntityEquipmentSlot.FEET).getItem() == ArmorModItems.obsidian_boots) {
					if(event.getSource() == DamageSource.wither && event.getEntity() == player && player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() == ArmorModItems.obsidian_chestplate) {
						event.setCanceled(true);
					}
				}
}
}

 

This is the code that I have set and it doesn't seem to work. Can someone tell me what I am doing wrong?

Posted

Well, an ArmorTickEvent isn't likely to include a damage source is it?

 

Also, you can't just add parameters to an event function and expect them to get filled in magically.  Not to mention that your

onArmorTick

method has

LivingAttackEvent

as its event object.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

I don't really understand what I was thinking with the onArmorTick

 

public class EventHandler {
@SubscribeEvent
public void LivingAttackEvent(LivingHurtEvent event, EntityPlayer player) {
					if(event.getSource() == DamageSource.wither && event.getEntity() == player && player.getItemStackFromSlot(EntityEquipmentSlot.HEAD).getItem() == ArmorModItems.obsidian_helmet && player.getItemStackFromSlot(EntityEquipmentSlot.CHEST).getItem() == ArmorModItems.obsidian_chestplate && player.getItemStackFromSlot(EntityEquipmentSlot.LEGS).getItem() == ArmorModItems.obsidian_leggings && player.getItemStackFromSlot(EntityEquipmentSlot.FEET).getItem() == ArmorModItems.obsidian_boots) {
						event.setCanceled(true);
					}
				}
			}

 

 

But this is what I have now is this correct in the least? And I know I'm a pain in the ass with all these questions and not knowing what to do but I appreciate what you're doing Draco and everyone else that has helped me so far thank you for taking the time to help me with my problem

Posted

You're still trying to get an EntityPlayer from nowhere.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

Look at the event class and figure it out.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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.