-
-
Notifications
You must be signed in to change notification settings - Fork 42
/
HyperConomySupport.java
128 lines (112 loc) · 4.56 KB
/
HyperConomySupport.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package net.gnomeffinway.depenizen.support.plugins;
import net.aufdemrand.denizen.events.EventManager;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dObject;
import net.aufdemrand.denizen.objects.dPlayer;
import net.aufdemrand.denizencore.utilities.debugging.dB;
import net.gnomeffinway.depenizen.Depenizen;
import net.gnomeffinway.depenizen.support.Support;
import net.gnomeffinway.depenizen.support.Supported;
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.HyperEventHandler;
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 {
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 HyperConomySupport() {
new BukkitRunnable() {
@Override
public void run() {
BukkitConnector hyperConomy = HyperConomySupport.getPlugin();
HyperEventHandler eventHandler = hyperConomy.getHC().getHyperEventHandler();
eventHandler.registerListener(this);
}
}.runTaskLaterAsynchronously(Depenizen.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 Depenizen, 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 Depenizen, 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: are these actually used?
case BUY_FROM_INVENTORY:
break;
case SELL_TO_INVENTORY:
break;
case BUY_FROM_ITEM:
break;
}
EventManager.doEvents(events, null, dPlayer.mirrorBukkitPlayer(Bukkit.getServer()
.getPlayer(hyperPlayer.getUUID())), context);
}
}