feat: A new ArtefactCheckEvent for addons, allowing devs to consider an artefact active (in slot) conditionally, or even prevent its usage based on custom conditions
This commit is contained in:
@@ -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)}
|
||||||
|
* <i>Fired on both sides.</i><br>
|
||||||
|
* <br>
|
||||||
|
* This event is {@link Cancelable}. <br>
|
||||||
|
* <br>
|
||||||
|
* This event has a result. {@link HasResult}. Set the result to Result.ALLOW to consider an artefact "active"<br>
|
||||||
|
* <br>
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ import electroblob.wizardry.entity.living.ISummonedCreature;
|
|||||||
import electroblob.wizardry.entity.projectile.EntityDart;
|
import electroblob.wizardry.entity.projectile.EntityDart;
|
||||||
import electroblob.wizardry.entity.projectile.EntityForceOrb;
|
import electroblob.wizardry.entity.projectile.EntityForceOrb;
|
||||||
import electroblob.wizardry.entity.projectile.EntityIceShard;
|
import electroblob.wizardry.entity.projectile.EntityIceShard;
|
||||||
|
import electroblob.wizardry.event.ArtefactCheckEvent;
|
||||||
import electroblob.wizardry.event.SpellCastEvent;
|
import electroblob.wizardry.event.SpellCastEvent;
|
||||||
import electroblob.wizardry.event.SpellCastEvent.Source;
|
import electroblob.wizardry.event.SpellCastEvent.Source;
|
||||||
import electroblob.wizardry.integration.DamageSafetyChecker;
|
import electroblob.wizardry.integration.DamageSafetyChecker;
|
||||||
@@ -37,6 +38,7 @@ import net.minecraft.util.text.TextFormatting;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
import net.minecraftforge.common.BiomeDictionary;
|
import net.minecraftforge.common.BiomeDictionary;
|
||||||
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||||
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
import net.minecraftforge.event.entity.living.LivingDeathEvent;
|
||||||
import net.minecraftforge.event.entity.living.LivingEvent;
|
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
|
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()){
|
if(WizardryBaublesIntegration.enabled()){
|
||||||
return WizardryBaublesIntegration.isBaubleEquipped(player, artefact);
|
return WizardryBaublesIntegration.isBaubleEquipped(player, artefact);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
Reference in New Issue
Block a user