Skip to content

Commit

Permalink
Fix HyperConomy-less Depenizen
Browse files Browse the repository at this point in the history
Oops
  • Loading branch information
Morphan1 committed Jan 9, 2018
1 parent b2bec32 commit 78dbf47
Show file tree
Hide file tree
Showing 2 changed files with 126 additions and 120 deletions.
@@ -0,0 +1,123 @@
package com.denizenscript.depenizen.bukkit.events.hyperconomy;

import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizencore.events.OldEventManager;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.utilities.debugging.dB;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import regalowl.hyperconomy.account.HyperPlayer;
import regalowl.hyperconomy.event.HyperEvent;
import regalowl.hyperconomy.event.HyperEventListener;
import regalowl.hyperconomy.event.TransactionEvent;
import regalowl.hyperconomy.inventory.HItemStack;
import regalowl.hyperconomy.transaction.PlayerTransaction;
import regalowl.hyperconomy.transaction.TransactionResponse;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HyperConomyEvents implements HyperEventListener {

private static final Field TRANSACTION_RESPONSE_PLAYER;

static {
Field field = null;
try {
field = TransactionResponse.class.getDeclaredField("hp");
field.setAccessible(true);
}
catch (NoClassDefFoundError e) {
// HyperConomy isn't enabled
}
catch (Exception e) {
dB.echoError(e);
}
TRANSACTION_RESPONSE_PLAYER = field;
}

public static HyperPlayer getHyperPlayer(TransactionResponse transactionResponse) {
try {
return (HyperPlayer) TRANSACTION_RESPONSE_PLAYER.get(transactionResponse);
}
catch (Exception e) {
dB.echoError(e);
}
return null;
}

public void onTransaction(PlayerTransaction playerTransaction, TransactionResponse transactionResponse) {
HyperPlayer hyperPlayer = getHyperPlayer(transactionResponse);

List<String> events = new ArrayList<String>();
Map<String, dObject> context = new HashMap<String, dObject>();

HItemStack his = playerTransaction.getHyperObject().getItem();
dItem item = new dItem(new ItemStack(Material.valueOf(his.getMaterial().toUpperCase()),
his.getAmount(), his.getDurability(), his.getData()));

switch (playerTransaction.getTransactionType()) {
// <--[event]
// @Events
// player buys item
// player buys <item>
// player buys <material>
// @Triggers when a player buys an item from a HyperConomy shop.
// @Context
// <context.item> returns the dItem the player bought.
// @Determine
// NONE
// @Plugin DepenizenBukkit, HyperConomy
// -->
case BUY:
context.put("item", item);
events.add("player buys item");
events.add("player buys " + item.identifySimple());
events.add("player buys " + item.identifyMaterial());
break;

// <--[event]
// @Events
// player sells item
// player sells <item>
// player sells <material>
// @Triggers when a player sells an item to a HyperConomy shop.
// @Context
// <context.item> returns the dItem the player sold.
// @Determine
// NONE
// @Plugin DepenizenBukkit, HyperConomy
// -->
case SELL:
context.put("item", item);
events.add("player sells item");
events.add("player sells " + item.identifySimple());
events.add("player sells " + item.identifyMaterial());
break;

// TODO: implement?

case BUY_CUSTOM:
break;
case SELL_CUSTOM:
break;
}

OldEventManager.doEvents(events, new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer(Bukkit.getServer()
.getPlayer(hyperPlayer.getUUID())), null), context);
}

@Override
public void handleHyperEvent(HyperEvent hyperEvent) {
if (hyperEvent instanceof TransactionEvent) {
TransactionEvent event = (TransactionEvent) hyperEvent;
onTransaction(event.getTransaction(), event.getTransactionResponse());
}
}
}
@@ -1,139 +1,22 @@
package com.denizenscript.depenizen.bukkit.support.plugins;

import com.denizenscript.depenizen.bukkit.DepenizenPlugin;
import com.denizenscript.depenizen.bukkit.events.hyperconomy.HyperConomyEvents;
import com.denizenscript.depenizen.bukkit.support.Support;
import net.aufdemrand.denizen.BukkitScriptEntryData;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizencore.events.OldEventManager;
import net.aufdemrand.denizencore.objects.dObject;
import net.aufdemrand.denizencore.utilities.debugging.dB;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import regalowl.hyperconomy.account.HyperPlayer;
import regalowl.hyperconomy.bukkit.BukkitConnector;
import regalowl.hyperconomy.event.HyperEvent;
import regalowl.hyperconomy.event.HyperEventHandler;
import regalowl.hyperconomy.event.HyperEventListener;
import regalowl.hyperconomy.event.TransactionEvent;
import regalowl.hyperconomy.inventory.HItemStack;
import regalowl.hyperconomy.transaction.PlayerTransaction;
import regalowl.hyperconomy.transaction.TransactionResponse;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HyperConomySupport extends Support implements HyperEventListener {

private static final Field TRANSACTION_RESPONSE_PLAYER;

static {
Field field = null;
try {
field = TransactionResponse.class.getDeclaredField("hp");
field.setAccessible(true);
}
catch (NoClassDefFoundError e) {
// HyperConomy isn't enabled
}
catch (Exception e) {
dB.echoError(e);
}
TRANSACTION_RESPONSE_PLAYER = field;
}
public class HyperConomySupport extends Support {

public HyperConomySupport() {
new BukkitRunnable() {
@Override
public void run() {
BukkitConnector hyperConomy = Support.getPlugin(HyperConomySupport.class);
HyperEventHandler eventHandler = hyperConomy.getHC().getHyperEventHandler();
eventHandler.registerListener(HyperConomySupport.this);
eventHandler.registerListener(new HyperConomyEvents());
}
}.runTaskLaterAsynchronously(DepenizenPlugin.getCurrentInstance(), 1);
}

public static HyperPlayer getHyperPlayer(TransactionResponse transactionResponse) {
try {
return (HyperPlayer) TRANSACTION_RESPONSE_PLAYER.get(transactionResponse);
}
catch (Exception e) {
dB.echoError(e);
}
return null;
}

public void onTransaction(PlayerTransaction playerTransaction, TransactionResponse transactionResponse) {
HyperPlayer hyperPlayer = getHyperPlayer(transactionResponse);

List<String> events = new ArrayList<String>();
Map<String, dObject> context = new HashMap<String, dObject>();

HItemStack his = playerTransaction.getHyperObject().getItem();
dItem item = new dItem(new ItemStack(Material.valueOf(his.getMaterial().toUpperCase()),
his.getAmount(), his.getDurability(), his.getData()));

switch (playerTransaction.getTransactionType()) {
// <--[event]
// @Events
// player buys item
// player buys <item>
// player buys <material>
// @Triggers when a player buys an item from a HyperConomy shop.
// @Context
// <context.item> returns the dItem the player bought.
// @Determine
// NONE
// @Plugin DepenizenBukkit, HyperConomy
// -->
case BUY:
context.put("item", item);
events.add("player buys item");
events.add("player buys " + item.identifySimple());
events.add("player buys " + item.identifyMaterial());
break;

// <--[event]
// @Events
// player sells item
// player sells <item>
// player sells <material>
// @Triggers when a player sells an item to a HyperConomy shop.
// @Context
// <context.item> returns the dItem the player sold.
// @Determine
// NONE
// @Plugin DepenizenBukkit, HyperConomy
// -->
case SELL:
context.put("item", item);
events.add("player sells item");
events.add("player sells " + item.identifySimple());
events.add("player sells " + item.identifyMaterial());
break;

// TODO: implement?

case BUY_CUSTOM:
break;
case SELL_CUSTOM:
break;
}

OldEventManager.doEvents(events, new BukkitScriptEntryData(dPlayer.mirrorBukkitPlayer(Bukkit.getServer()
.getPlayer(hyperPlayer.getUUID())), null), context);
}

@Override
public void handleHyperEvent(HyperEvent hyperEvent) {
if (hyperEvent instanceof TransactionEvent) {
TransactionEvent event = (TransactionEvent) hyperEvent;
onTransaction(event.getTransaction(), event.getTransactionResponse());
}
}
}

0 comments on commit 78dbf47

Please sign in to comment.