Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c2801e2
commit 4a13709
Showing
4 changed files
with
411 additions
and
0 deletions.
There are no files selected for viewing
124 changes: 124 additions & 0 deletions
124
src/main/java/net/gnomeffinway/depenizen/events/mcMMO/mcMMOPlayerLevelChangeScriptEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
package net.gnomeffinway.depenizen.events.mcMMO; | ||
|
||
import com.gmail.nossr50.datatypes.skills.SkillType; | ||
import com.gmail.nossr50.events.experience.McMMOPlayerLevelChangeEvent; | ||
import net.aufdemrand.denizen.BukkitScriptEntryData; | ||
import net.aufdemrand.denizen.events.BukkitScriptEvent; | ||
import net.aufdemrand.denizen.objects.dEntity; | ||
import net.aufdemrand.denizen.objects.dPlayer; | ||
import net.aufdemrand.denizen.utilities.DenizenAPI; | ||
import net.aufdemrand.denizencore.objects.Element; | ||
import net.aufdemrand.denizencore.objects.aH; | ||
import net.aufdemrand.denizencore.objects.dObject; | ||
import net.aufdemrand.denizencore.scripts.ScriptEntryData; | ||
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer; | ||
import net.aufdemrand.denizencore.utilities.CoreUtilities; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
|
||
// <--[event] | ||
// @Events | ||
// mcmmo player skill changes | ||
// mcmmo player <skill> changes | ||
// | ||
// @Regex ^on mcmmo player [^\s]+$ changes | ||
// | ||
// @Cancellable true | ||
// | ||
// @Triggers when a player's mcmmo skill level changes. | ||
// | ||
// @Context | ||
// <context.skill> returns the name of the skill that changed level. (Based on the mcMMO language file). | ||
// <context.level> returns the level the skill changed to. | ||
// <context.cause> returns the cause of the level change. | ||
// Will be one of: 'PVP', 'PVE', 'VAMPIRISM', 'SHARED_PVP', 'SHARED_PVE', 'COMMAND', 'UNKNOWN'. | ||
// | ||
// --> | ||
|
||
public class mcMMOPlayerLevelChangeScriptEvent extends BukkitScriptEvent implements Listener { | ||
|
||
public mcMMOPlayerLevelChangeScriptEvent() { | ||
instance = this; | ||
} | ||
|
||
public static mcMMOPlayerLevelChangeScriptEvent instance; | ||
|
||
public static McMMOPlayerLevelChangeEvent event; | ||
public dPlayer player; | ||
public String skill; | ||
public int level; | ||
public String cause; | ||
|
||
@Override | ||
public boolean couldMatch(ScriptContainer scriptContainer, String s) { | ||
String lower = CoreUtilities.toLowerCase(s); | ||
return lower.startsWith("mcmmo player") && CoreUtilities.getXthArg(3, lower).equals("changes"); | ||
} | ||
|
||
@Override | ||
public boolean matches(ScriptContainer scriptContainer, String s) { | ||
String lower = CoreUtilities.toLowerCase(s); | ||
String skill = CoreUtilities.getXthArg(2, lower); | ||
return skill.equals("level") || SkillType.valueOf(skill.toUpperCase()) != null; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "mcMMOPlayerLevelChanges"; | ||
} | ||
|
||
@Override | ||
public void init() { | ||
Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance()); | ||
} | ||
|
||
@Override | ||
public void destroy() { | ||
McMMOPlayerLevelChangeEvent.getHandlerList().unregister(this); | ||
} | ||
|
||
@Override | ||
public boolean applyDetermination(ScriptContainer container, String determination) { | ||
String lower = CoreUtilities.toLowerCase(determination); | ||
|
||
if (aH.matchesInteger(lower)) { | ||
level = aH.getIntegerFrom(lower); | ||
return true; | ||
} | ||
return super.applyDetermination(container, determination); | ||
} | ||
|
||
@Override | ||
public ScriptEntryData getScriptEntryData() { | ||
return new BukkitScriptEntryData(dEntity.isPlayer(event.getPlayer()) ? dEntity.getPlayerFrom(event.getPlayer()) : null, null); | ||
} | ||
|
||
@Override | ||
public dObject getContext(String name) { | ||
if (name.equals("skill")) { | ||
return new Element(skill); | ||
} | ||
else if (name.equals("level")) { | ||
return new Element(level); | ||
} | ||
else if (name.equals("cause")) { | ||
return new Element(cause); | ||
} | ||
return super.getContext(name); | ||
} | ||
|
||
@EventHandler | ||
public void onmcMMOPlayerLevelChanges(McMMOPlayerLevelChangeEvent event) { | ||
if (dEntity.isNPC(event.getPlayer())) { | ||
return; | ||
} | ||
level = event.getSkillLevel(); | ||
cause = event.getXpGainReason().toString(); | ||
skill = event.getSkill().getName(); | ||
cancelled = event.isCancelled(); | ||
this.event = event; | ||
fire(); | ||
event.setCancelled(cancelled); | ||
} | ||
} |
140 changes: 140 additions & 0 deletions
140
src/main/java/net/gnomeffinway/depenizen/events/mcMMO/mcMMOPlayerLevelDownScriptEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
package net.gnomeffinway.depenizen.events.mcMMO; | ||
|
||
import com.gmail.nossr50.datatypes.skills.SkillType; | ||
import com.gmail.nossr50.events.experience.McMMOPlayerLevelDownEvent; | ||
import net.aufdemrand.denizen.BukkitScriptEntryData; | ||
import net.aufdemrand.denizen.events.BukkitScriptEvent; | ||
import net.aufdemrand.denizen.objects.dEntity; | ||
import net.aufdemrand.denizen.objects.dPlayer; | ||
import net.aufdemrand.denizen.utilities.DenizenAPI; | ||
import net.aufdemrand.denizencore.objects.Element; | ||
import net.aufdemrand.denizencore.objects.aH; | ||
import net.aufdemrand.denizencore.objects.dObject; | ||
import net.aufdemrand.denizencore.scripts.ScriptEntryData; | ||
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer; | ||
import net.aufdemrand.denizencore.utilities.CoreUtilities; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
|
||
// <--[event] | ||
// @Events | ||
// mcmmo player levels down skill | ||
// mcmmo player levels down <skill> | ||
// | ||
// @Regex ^on mcmmo player levels down [^\s]+$ | ||
// | ||
// @Cancellable true | ||
// | ||
// @Triggers when a player loses levels for an mcMMO skill. | ||
// | ||
// @Context | ||
// <context.skill> returns the name of the skill that lost levels. (Based on the mcMMO language file). | ||
// <context.levels_lost> returns the number of levels lost. | ||
// <context.old_level> returns the old level of the skill. | ||
// <context.new_level> returns the new level of the skill. | ||
// <context.cause> returns the cause of the level loss. | ||
// Will be one of: 'PVP', 'PVE', 'VAMPIRISM', 'SHARED_PVP', 'SHARED_PVE', 'COMMAND', 'UNKNOWN'. | ||
// | ||
// @Determine | ||
// Element(Number) to set the number of levels to gain. | ||
// | ||
// --> | ||
|
||
public class mcMMOPlayerLevelDownScriptEvent extends BukkitScriptEvent implements Listener { | ||
|
||
public mcMMOPlayerLevelDownScriptEvent() { | ||
instance = this; | ||
} | ||
|
||
public static mcMMOPlayerLevelDownScriptEvent instance; | ||
|
||
public static McMMOPlayerLevelDownEvent event; | ||
public dPlayer player; | ||
public String skill; | ||
public int new_level; | ||
public int levels_lost; | ||
public String cause; | ||
|
||
@Override | ||
public boolean couldMatch(ScriptContainer scriptContainer, String s) { | ||
return CoreUtilities.toLowerCase(s).startsWith("mcmmo player levels down"); | ||
} | ||
|
||
@Override | ||
public boolean matches(ScriptContainer scriptContainer, String s) { | ||
String arg = CoreUtilities.getXthArg(4, s).toUpperCase(); | ||
SkillType eventSkill = SkillType.valueOf(arg); | ||
if (arg.equals("SKILL") || (eventSkill != null && eventSkill == event.getSkill())) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "mcMMOPlayerLevelsDown"; | ||
} | ||
|
||
@Override | ||
public void init() { | ||
Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance()); | ||
} | ||
|
||
@Override | ||
public void destroy() { | ||
McMMOPlayerLevelDownEvent.getHandlerList().unregister(this); | ||
} | ||
|
||
@Override | ||
public boolean applyDetermination(ScriptContainer container, String determination) { | ||
String lower = CoreUtilities.toLowerCase(determination); | ||
|
||
if (aH.matchesInteger(lower)) { | ||
levels_lost = aH.getIntegerFrom(lower); | ||
return true; | ||
} | ||
return super.applyDetermination(container, determination); | ||
} | ||
|
||
@Override | ||
public ScriptEntryData getScriptEntryData() { | ||
return new BukkitScriptEntryData(dEntity.isPlayer(event.getPlayer()) ? dEntity.getPlayerFrom(event.getPlayer()) : null, null); | ||
} | ||
|
||
@Override | ||
public dObject getContext(String name) { | ||
if (name.equals("skill")) { | ||
return new Element(skill); | ||
} | ||
else if (name.equals("new_level")) { | ||
return new Element(new_level); | ||
} | ||
else if (name.equals("old_level")) { | ||
return new Element(new_level + levels_lost); | ||
} | ||
else if (name.equals("levels_lost")) { | ||
return new Element(levels_lost); | ||
} | ||
else if (name.equals("cause")) { | ||
return new Element(cause); | ||
} | ||
return super.getContext(name); | ||
} | ||
|
||
@EventHandler | ||
public void onmcMMOPlayerLevelDown(McMMOPlayerLevelDownEvent event) { | ||
if (dEntity.isNPC(event.getPlayer())) { | ||
return; | ||
} | ||
levels_lost = event.getLevelsLost(); | ||
new_level = event.getSkillLevel(); | ||
cause = event.getXpGainReason().toString(); | ||
skill = event.getSkill().getName(); | ||
cancelled = event.isCancelled(); | ||
this.event = event; | ||
fire(); | ||
event.setCancelled(cancelled); | ||
event.setLevelsLost(levels_lost); | ||
} | ||
} |
Oops, something went wrong.