Skip to content

Commit

Permalink
Add "item:dItem" determination in "player picks up item", fixes #1301
Browse files Browse the repository at this point in the history
Yay hax
  • Loading branch information
Morphan1 committed Mar 9, 2016
1 parent 450739e commit 14353ac
Showing 1 changed file with 34 additions and 4 deletions.
Expand Up @@ -11,10 +11,15 @@
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.utilities.CoreUtilities;
import org.bukkit.Bukkit;
import org.bukkit.entity.Item;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerPickupItemEvent;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class PlayerPicksUpScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
Expand All @@ -35,6 +40,9 @@ public class PlayerPicksUpScriptEvent extends BukkitScriptEvent implements Liste
// <context.entity> returns a dEntity of the item.
// <context.location> returns a dLocation of the item's location.
//
// @Determine
// "ITEM:" + dItem to changed the item being picked up.
//
// -->

public PlayerPicksUpScriptEvent() {
Expand All @@ -43,10 +51,13 @@ public PlayerPicksUpScriptEvent() {

public static PlayerPicksUpScriptEvent instance;
public dItem item;
public boolean itemChanged;
public dEntity entity;
public dLocation location;
public PlayerPickupItemEvent event;

private static final List<UUID> editedItems = new ArrayList<UUID>();

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
String lower = CoreUtilities.toLowerCase(s);
Expand Down Expand Up @@ -81,6 +92,12 @@ public void destroy() {

@Override
public boolean applyDetermination(ScriptContainer container, String determination) {
String lower = CoreUtilities.toLowerCase(determination);
if (lower.startsWith("item:")) {
item = dItem.valueOf(determination.substring("item:".length()));
itemChanged = true;
return true;
}
return super.applyDetermination(container, determination);
}

Expand Down Expand Up @@ -108,12 +125,25 @@ public void onPlayerPicksUp(PlayerPickupItemEvent event) {
if (dEntity.isNPC(event.getPlayer())) {
return;
}
location = new dLocation(event.getItem().getLocation());
item = new dItem(event.getItem().getItemStack());
entity = new dEntity(event.getItem());
Item itemEntity = event.getItem();
UUID itemUUID = itemEntity.getUniqueId();
if (editedItems.contains(itemUUID)) {
editedItems.remove(itemUUID);
return;
}
location = new dLocation(itemEntity.getLocation());
item = new dItem(itemEntity.getItemStack());
entity = new dEntity(itemEntity);
cancelled = event.isCancelled();
this.event = event;
fire();
event.setCancelled(cancelled);
if (itemChanged) {
itemEntity.setItemStack(item.getItemStack());
editedItems.add(itemUUID);
event.setCancelled(true);
}
else {
event.setCancelled(cancelled);
}
}
}

0 comments on commit 14353ac

Please sign in to comment.