Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Oops
- Loading branch information
Showing
2 changed files
with
126 additions
and
120 deletions.
There are no files selected for viewing
123 changes: 123 additions & 0 deletions
123
...rc/main/java/com/denizenscript/depenizen/bukkit/events/hyperconomy/HyperConomyEvents.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,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()); | ||
} | ||
} | ||
} |
123 changes: 3 additions & 120 deletions
123
.../src/main/java/com/denizenscript/depenizen/bukkit/support/plugins/HyperConomySupport.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 |
---|---|---|
@@ -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()); | ||
} | ||
} | ||
} |