diff --git a/src/main/java/electroblob/wizardry/event/ArtefactCheckEvent.java b/src/main/java/electroblob/wizardry/event/ArtefactCheckEvent.java new file mode 100644 index 00000000..b213076f --- /dev/null +++ b/src/main/java/electroblob/wizardry/event/ArtefactCheckEvent.java @@ -0,0 +1,45 @@ +package electroblob.wizardry.event; + +import electroblob.wizardry.item.ItemArtefact; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.fml.common.eventhandler.Cancelable; +import net.minecraftforge.fml.common.eventhandler.Event; + +/** + * SpellBindEvent is fired when a check happens for an ItemArtefact using {@link electroblob.wizardry.item.ItemArtefact#isArtefactActive(net.minecraft.entity.player.EntityPlayer, net.minecraft.item.Item)} + * Fired on both sides.
+ *
+ * This event is {@link Cancelable}.
+ *
+ * This event has a result. {@link HasResult}. Set the result to Result.ALLOW to consider an artefact "active"
+ *
+ * This event is fired on the {@link MinecraftForge#EVENT_BUS}. + * + * @author WinDanesz + * @since Wizardry 4.3.10 + */ +@Cancelable +@Event.HasResult +public class ArtefactCheckEvent extends PlayerEvent { + + ItemArtefact artefact; + EntityPlayer player; + + public ArtefactCheckEvent(EntityPlayer player, ItemArtefact artefact) { + super(player); + this.player = player; + this.artefact = artefact; + setResult(Result.DENY); + } + + public ItemArtefact getArtefact() { + return artefact; + } + + public EntityPlayer getPlayer() { + return player; + } + +} \ No newline at end of file diff --git a/src/main/java/electroblob/wizardry/item/ItemArtefact.java b/src/main/java/electroblob/wizardry/item/ItemArtefact.java index 22d5b32e..1457a540 100644 --- a/src/main/java/electroblob/wizardry/item/ItemArtefact.java +++ b/src/main/java/electroblob/wizardry/item/ItemArtefact.java @@ -10,6 +10,7 @@ import electroblob.wizardry.entity.living.ISummonedCreature; import electroblob.wizardry.entity.projectile.EntityDart; import electroblob.wizardry.entity.projectile.EntityForceOrb; import electroblob.wizardry.entity.projectile.EntityIceShard; +import electroblob.wizardry.event.ArtefactCheckEvent; import electroblob.wizardry.event.SpellCastEvent; import electroblob.wizardry.event.SpellCastEvent.Source; import electroblob.wizardry.integration.DamageSafetyChecker; @@ -37,6 +38,7 @@ import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraft.world.biome.Biome; import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.ICapabilityProvider; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingEvent; @@ -182,6 +184,13 @@ public class ItemArtefact extends Item { if(!((ItemArtefact)artefact).enabled) return false; // Disabled in the config + ArtefactCheckEvent event = new ArtefactCheckEvent(player, (ItemArtefact) artefact); + if(MinecraftForge.EVENT_BUS.post(event)) return false; + + if (event.getResult() == Event.Result.ALLOW) { + return true; + } + if(WizardryBaublesIntegration.enabled()){ return WizardryBaublesIntegration.isBaubleEquipped(player, artefact); }else{