Skip to content

Commit

Permalink
Convert ItemCraft event to ScriptEvent format.
Browse files Browse the repository at this point in the history
Reformat 'InvPicksUpItem' to 'InventoryPicksUpItem'
Fixup the regex ❤️
Alphabetise the scriptEvent Registering.
  • Loading branch information
Fortifier42 committed Feb 12, 2016
1 parent c69633b commit a1a1224
Show file tree
Hide file tree
Showing 8 changed files with 167 additions and 92 deletions.
21 changes: 11 additions & 10 deletions src/main/java/net/aufdemrand/denizen/Denizen.java
Expand Up @@ -587,34 +587,32 @@ public void onEnable() {
ScriptEvent.registerScriptEvent(new BlockFallsScriptEvent());
ScriptEvent.registerScriptEvent(new BlockFormsScriptEvent());
ScriptEvent.registerScriptEvent(new BlockGrowsScriptEvent());
ScriptEvent.registerScriptEvent(new BlockSpreadsScriptEvent());
ScriptEvent.registerScriptEvent(new BlockIgnitesScriptEvent());
ScriptEvent.registerScriptEvent(new BlockPhysicsScriptEvent());
ScriptEvent.registerScriptEvent(new BlockSpreadsScriptEvent());
ScriptEvent.registerScriptEvent(new BrewsScriptEvent());
ScriptEvent.registerScriptEvent(new BucketEmptyScriptEvent());
ScriptEvent.registerScriptEvent(new BucketFillScriptEvent());
ScriptEvent.registerScriptEvent(new ChatScriptEvent());
ScriptEvent.registerScriptEvent(new ChunkLoadScriptEvent());
ScriptEvent.registerScriptEvent(new ChunkUnloadScriptEvent());
ScriptEvent.registerScriptEvent(new CreeperPoweredScriptEvent());
ScriptEvent.registerScriptEvent(new EntityBreaksHangingScriptEvent());
ScriptEvent.registerScriptEvent(new EntityChangesBlockScriptEvent());
ScriptEvent.registerScriptEvent(new EntityCreatePortalScriptEvent());
ScriptEvent.registerScriptEvent(new EntityCombustsScriptEvent());
ScriptEvent.registerScriptEvent(new EntityCreatePortalScriptEvent());
ScriptEvent.registerScriptEvent(new EntityDamagedScriptEvent());
ScriptEvent.registerScriptEvent(new EntityDeathScriptEvent());
ScriptEvent.registerScriptEvent(new EntityDespawnScriptEvent());
ScriptEvent.registerScriptEvent(new EntityEntersPortalScriptEvent());
ScriptEvent.registerScriptEvent(new EntityEntersVehicleScriptEvent());
ScriptEvent.registerScriptEvent(new EntityExitsPortalScriptEvent());
ScriptEvent.registerScriptEvent(new EntityExitsVehicleScriptEvent());
ScriptEvent.registerScriptEvent(new EntityExplodesScriptEvent());
ScriptEvent.registerScriptEvent(new EntityExplosionPrimesScriptEvent());
ScriptEvent.registerScriptEvent(new EntityFoodLevelChangeScriptEvent());
ScriptEvent.registerScriptEvent(new EntityFormsBlockScriptEvent());
ScriptEvent.registerScriptEvent(new EntityHealsScriptEvent());
ScriptEvent.registerScriptEvent(new EntityInteractScriptEvent());
ScriptEvent.registerScriptEvent(new EntityKilledScriptEvent());
ScriptEvent.registerScriptEvent(new EntityExitsVehicleScriptEvent());
ScriptEvent.registerScriptEvent(new EntityShootsBowEvent());
ScriptEvent.registerScriptEvent(new EntitySpawnScriptEvent());
ScriptEvent.registerScriptEvent(new EntityTamesScriptEvent());
Expand All @@ -626,7 +624,8 @@ public void onEnable() {
ScriptEvent.registerScriptEvent(new FurnaceSmeltsItemScriptEvent());
ScriptEvent.registerScriptEvent(new HangingBreaksScriptEvent());
ScriptEvent.registerScriptEvent(new HorseJumpsScriptEvent());
ScriptEvent.registerScriptEvent(new InvPicksUpItemScriptEvent());
ScriptEvent.registerScriptEvent(new InventoryPicksUpItemScriptEvent());
ScriptEvent.registerScriptEvent(new ItemCraftedScriptEvent());
ScriptEvent.registerScriptEvent(new ItemDespawnsScriptEvent());
ScriptEvent.registerScriptEvent(new ItemEnchantedScriptEvent());
ScriptEvent.registerScriptEvent(new ItemMergesScriptEvent());
Expand All @@ -647,14 +646,14 @@ public void onEnable() {
ScriptEvent.registerScriptEvent(new PlayerChangesSignScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerChangesWorldScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerChangesXPScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerRightClicksAtEntityScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerRightClicksEntityScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerClosesInvScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerConsumesScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerDamagesBlockScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerDragsInInvScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerDropsItemScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerEmptiesBucketScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerEntersBedScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerFillsBucketScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerFishesScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerFlyingScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerItemTakesDamageScriptEvent());
Expand All @@ -672,6 +671,8 @@ public void onEnable() {
ScriptEvent.registerScriptEvent(new PlayerQuitsScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerReceivesMessageScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerRespawnsScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerRightClicksAtEntityScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerRightClicksEntityScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerShearsScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerSneakScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerSprintScriptEvent());
Expand All @@ -683,16 +684,16 @@ public void onEnable() {
ScriptEvent.registerScriptEvent(new PlayerWalkScriptEvent());
ScriptEvent.registerScriptEvent(new PlayerWalksOverScriptEvent());
ScriptEvent.registerScriptEvent(new PortalCreateScriptEvent());
ScriptEvent.registerScriptEvent(new PotionSplashScriptEvent());
ScriptEvent.registerScriptEvent(new ProjectileHitsScriptEvent());
ScriptEvent.registerScriptEvent(new ProjectileLaunchedScriptEvent());
ScriptEvent.registerScriptEvent(new PotionSplashScriptEvent());
ScriptEvent.registerScriptEvent(new RedstoneScriptEvent());
ScriptEvent.registerScriptEvent(new ResourcePackStatusScriptEvent());
ScriptEvent.registerScriptEvent(new SheepDyedScriptEvent());
ScriptEvent.registerScriptEvent(new SheepRegrowsScriptEvent());
ScriptEvent.registerScriptEvent(new SlimeSplitsScriptEvent());
ScriptEvent.registerScriptEvent(new SpawnChangeScriptEvent());
ScriptEvent.registerScriptEvent(new StructureGrowsScriptEvent());
ScriptEvent.registerScriptEvent(new SlimeSplitsScriptEvent());
ScriptEvent.registerScriptEvent(new VehicleCollidesBlockScriptEvent());
ScriptEvent.registerScriptEvent(new VehicleCollidesEntityScriptEvent());
ScriptEvent.registerScriptEvent(new VehicleCreatedScriptEvent());
Expand Down
@@ -0,0 +1,140 @@
package net.aufdemrand.denizen.events.player;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.events.BukkitScriptEvent;
import net.aufdemrand.denizen.objects.dInventory;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizencore.objects.dList;
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.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;

// <--[event]
// @Events
// item crafted
// <item> crafted
// <material> crafted
//
// @Regex ^on [^\s]+ crafted$
//
// @Cancellable true
//
// @Triggers when an item's recipe is correctly formed.
// @Context
// <context.inventory> returns the dInventory of the crafting inventory.
// <context.item> returns the dItem to be crafted.
// <context.recipe> returns a dList of dItems in the recipe.
//
// @Determine
// dItem to change the item that is crafted.
//
// -->

public class ItemCraftedScriptEvent extends BukkitScriptEvent implements Listener {

public ItemCraftedScriptEvent() {
instance = this;
}

public static ItemCraftedScriptEvent instance;
public PrepareItemCraftEvent event;
public dItem result;
public dList recipe;
public CraftingInventory inventory;

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
return CoreUtilities.getXthArg(1, CoreUtilities.toLowerCase(s)).equals("crafted");
}

@Override
public boolean matches(ScriptContainer scriptContainer, String s) {
String lower = CoreUtilities.toLowerCase(s);
String eItem = CoreUtilities.getXthArg(0, lower);

if (!tryItem(result, eItem)) {
return false;
}

return true;
}

@Override
public String getName() {
return "ItemCrafted";
}

@Override
public void init() {
Bukkit.getServer().getPluginManager().registerEvents(this, DenizenAPI.getCurrentInstance());
}

@Override
public void destroy() {
PrepareItemCraftEvent.getHandlerList().unregister(this);
}

@Override
public boolean applyDetermination(ScriptContainer container, String determination) {
if (dItem.matches(determination)) {
inventory.setResult(dItem.valueOf(determination).getItemStack());
}

return super.applyDetermination(container, determination);
}

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer((Player) event.getView().getPlayer()), null);
}

@Override
public dObject getContext(String name) {
if (name.equals("item")) {
return result;
}
else if (name.equals("inventory")) {
return new dInventory(inventory);
}
else if (name.equals("recipe")) {
return recipe;
}
return super.getContext(name);
}

@EventHandler
public void onItemCrafted(PrepareItemCraftEvent event) {
Recipe eRecipe = event.getRecipe();
if (eRecipe == null || eRecipe.getResult() == null) {
return;
}
inventory = event.getInventory();
result = new dItem(eRecipe.getResult());
recipe = new dList();
for (ItemStack itemStack : inventory.getMatrix()) {
if (itemStack != null) {
recipe.add(new dItem(itemStack).identify());
}
else {
recipe.add(new dItem(Material.AIR).identify());
}
}
this.event = event;
fire();
if (cancelled) {
inventory.setResult(null);
}
}
}
Expand Up @@ -21,6 +21,7 @@ public class PlayerChangesGamemodeScriptEvent extends BukkitScriptEvent implemen
// player changes gamemode (to <gamemode>)
//
// @Regex ^on player changes gamemode( to [^\s]+)?$
//
// @Cancellable true
//
// @Triggers when a player's gamemode is changed.
Expand Down
@@ -1,4 +1,4 @@
package net.aufdemrand.denizen.events.world;
package net.aufdemrand.denizen.events.player;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.events.BukkitScriptEvent;
Expand All @@ -16,7 +16,7 @@
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketEmptyEvent;

public class BucketEmptyScriptEvent extends BukkitScriptEvent implements Listener {
public class PlayerEmptiesBucketScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
Expand All @@ -37,11 +37,11 @@ public class BucketEmptyScriptEvent extends BukkitScriptEvent implements Listene
// -->


public BucketEmptyScriptEvent() {
public PlayerEmptiesBucketScriptEvent() {
instance = this;
}

public static BucketEmptyScriptEvent instance;
public static PlayerEmptiesBucketScriptEvent instance;

public dEntity entity;
public dItem item;
Expand All @@ -67,7 +67,7 @@ public boolean matches(ScriptContainer scriptContainer, String s) {

@Override
public String getName() {
return "BucketEmpty";
return "PlayerEmptiesBucket";
}

@Override
Expand Down
@@ -1,4 +1,4 @@
package net.aufdemrand.denizen.events.world;
package net.aufdemrand.denizen.events.player;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.events.BukkitScriptEvent;
Expand All @@ -16,7 +16,7 @@
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerBucketFillEvent;

public class BucketFillScriptEvent extends BukkitScriptEvent implements Listener {
public class PlayerFillsBucketScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
Expand All @@ -37,17 +37,16 @@ public class BucketFillScriptEvent extends BukkitScriptEvent implements Listener
// -->


public BucketFillScriptEvent() {
public PlayerFillsBucketScriptEvent() {
instance = this;
}

public static BucketFillScriptEvent instance;
public static PlayerFillsBucketScriptEvent instance;

public dEntity entity;
public dItem item;
public dMaterial material;
public dLocation location;
public dLocation relative;
public PlayerBucketFillEvent event;


Expand All @@ -67,7 +66,7 @@ public boolean matches(ScriptContainer scriptContainer, String s) {

@Override
public String getName() {
return "BucketFill";
return "PlayerFillsBucket";
}

@Override
Expand Down
Expand Up @@ -19,7 +19,7 @@ public class ChunkUnloadScriptEvent extends ScriptEvent implements Listener {
// @Events
// chunk unloads (in <world>)
//
// @Regex ^on player unloads( in [^\s]+)?$
// @Regex ^on chunk unloads( in [^\s]+)?$
//
// @Warning This event will fire *extremely* rapidly and often!
//
Expand Down
Expand Up @@ -12,7 +12,7 @@
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryPickupItemEvent;

public class InvPicksUpItemScriptEvent extends BukkitScriptEvent implements Listener {
public class InventoryPicksUpItemScriptEvent extends BukkitScriptEvent implements Listener {

// TODO: Add in <area>
// <--[event]
Expand All @@ -34,11 +34,11 @@ public class InvPicksUpItemScriptEvent extends BukkitScriptEvent implements List
//
// -->

public InvPicksUpItemScriptEvent() {
public InventoryPicksUpItemScriptEvent() {
instance = this;
}

public static InvPicksUpItemScriptEvent instance;
public static InventoryPicksUpItemScriptEvent instance;
public dInventory inventory;
public dItem item;
public InventoryPickupItemEvent event;
Expand Down Expand Up @@ -69,7 +69,7 @@ public boolean matches(ScriptContainer scriptContainer, String s) {

@Override
public String getName() {
return "InvPicksUpItem";
return "InventoryPicksUpItem";
}

@Override
Expand Down

0 comments on commit a1a1224

Please sign in to comment.