💻开发者 API
最后更新于
import cn.superiormc.enchantmentreform.EnchantmentReform;
import cn.superiormc.enchantmentreform.managers.TriggerManager;
TriggerManager triggerManager = EnchantmentReform.instance.getTriggerManager();import cn.superiormc.enchantmentreform.managers.AbilityManager;
@Override
public void onEnable() {
AbilityManager.abilityManager.register("launch_ring", LaunchRingAbility::new);
}import cn.superiormc.enchantmentreform.objects.abilities.AbstractAbility;
import cn.superiormc.enchantmentreform.objects.abilities.PowerContext;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Entity;
import org.bukkit.util.Vector;
public final class LaunchRingAbility extends AbstractAbility {
public LaunchRingAbility(ConfigurationSection section) {
super("launch_ring", section);
}
@Override
public boolean execute(PowerContext context) {
Entity target = getTargetEntity(context);
if (target == null) {
return false;
}
double strength = getDouble("strength", 1.0, context);
Vector velocity = target.getVelocity();
velocity.setY(strength);
target.setVelocity(velocity);
return false;
}
@Override
public TargetEntityType getDefaultTargetEntityType() {
return TargetEntityType.TARGET;
}
}import cn.superiormc.enchantmentreform.managers.PowerConditionsManager;
PowerConditionsManager.powerConditions.register(new PowerConditionIsNamed());import cn.superiormc.enchantmentreform.api.trigger.EntitySelector;
import cn.superiormc.enchantmentreform.objects.ObjectSingleCondition;
import cn.superiormc.enchantmentreform.objects.abilities.PowerContext;
import cn.superiormc.enchantmentreform.objects.powerconditions.AbstractPowerCondition;
import org.bukkit.entity.LivingEntity;
public final class PowerConditionIsNamed extends AbstractPowerCondition {
public PowerConditionIsNamed() {
super("is_named");
}
@Override
protected boolean onMatch(ObjectSingleCondition condition) {
PowerContext context = condition.getContext();
if (context == null) {
return false;
}
LivingEntity target = context.livingEntity(
condition.getString("target", "TARGET"),
EntitySelector.TARGET
);
return target != null && target.getCustomName() != null;
}
}import cn.superiormc.enchantmentreform.managers.PowerModifiersManager;
PowerModifiersManager.powerModifiers.register(
"minimum_damage",
MinimumDamageModifier::new
);import cn.superiormc.enchantmentreform.objects.abilities.PowerContext;
import cn.superiormc.enchantmentreform.objects.powermodifiers.AbstractPowerModifier;
import org.bukkit.configuration.ConfigurationSection;
public final class MinimumDamageModifier extends AbstractPowerModifier {
public MinimumDamageModifier(ConfigurationSection section) {
super("minimum_damage", section);
}
@Override
protected void onApply(PowerContext context) {
double current = context.result().damage(context.triggerData());
double minimum = getDouble(
"value",
1.0,
context,
"original",
String.valueOf(current)
);
context.result().damage(Math.max(current, minimum));
}
}MatchItemManager.matchItemManager.registerNewRule(new CustomItemRule());
MatchEntityManager.matchEntityManager.registerNewRule(new CustomEntityRule());import cn.superiormc.enchantmentreform.EnchantmentReform;
import cn.superiormc.enchantmentreform.api.trigger.ManualTrigger;
import cn.superiormc.enchantmentreform.api.trigger.TriggerData;
import cn.superiormc.enchantmentreform.api.trigger.TriggerResult;
import org.bukkit.entity.LivingEntity;
import org.bukkit.plugin.java.JavaPlugin;
public final class MyPlugin extends JavaPlugin {
private ManualTrigger ragePulse;
@Override
public void onEnable() {
ragePulse = EnchantmentReform.instance
.getTriggerManager()
.register(this, "rage_pulse");
}
public TriggerResult fireRagePulse(LivingEntity owner, LivingEntity target) {
TriggerData data = TriggerData.builder(owner)
.source(owner)
.skill(owner)
.target(target)
.location(target.getLocation())
.build();
return EnchantmentReform.instance
.getTriggerManager()
.fire(ragePulse, data);
}
@Override
public void onDisable() {
EnchantmentReform.instance
.getTriggerManager()
.unregisterAll(this);
}
}powers:
'myplugin:rage_pulse':
conditions:
close-enough:
type: distance
max: 12
abilities:
effect:
type: particle
target: TARGET
particle: ANGRY_VILLAGEREnchantmentReform.instance
.getTriggerManager()
.register(this, customTrigger);public void onUnload()
public void onEntityUnload(UUID entityId)