Skip to content

Commit

Permalink
Add 'player creates shopkeeper' event, fixes #297
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Jan 8, 2020
1 parent 5540c06 commit ba36c37
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 13 deletions.
Expand Up @@ -33,6 +33,7 @@ public void run(ReplaceableTagEvent event) {

public void tagEvent(ReplaceableTagEvent event) {
Attribute attribute = event.getAttributes();

// <--[tag]
// @attribute <placeholder[<name>]>
// @returns ElementTag
Expand Down
@@ -1,5 +1,6 @@
package com.denizenscript.depenizen.bukkit.bridges;

import com.denizenscript.depenizen.bukkit.events.shopkeepers.ShopKeeperCreatedScriptEvent;
import com.denizenscript.depenizen.bukkit.events.shopkeepers.ShopKeeperTradeScriptEvent;
import com.denizenscript.depenizen.bukkit.properties.shopkeepers.ShopKeepersEntityProperties;
import com.denizenscript.depenizen.bukkit.objects.shopkeepers.ShopKeeperTag;
Expand All @@ -18,6 +19,7 @@ public void init() {
instance = this;
ObjectFetcher.registerWithObjectFetcher(ShopKeeperTag.class);
ScriptEvent.registerScriptEvent(new ShopKeeperTradeScriptEvent());
ScriptEvent.registerScriptEvent(new ShopKeeperCreatedScriptEvent());
PropertyParser.registerProperty(ShopKeepersEntityProperties.class, EntityTag.class);
}
}
@@ -0,0 +1,69 @@
package com.denizenscript.depenizen.bukkit.events.shopkeepers;

import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.LocationTag;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.nisovin.shopkeepers.api.events.PlayerCreateShopkeeperEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ShopKeeperCreatedScriptEvent extends BukkitScriptEvent implements Listener {

// <--[event]
// @Events
// player creates shopkeeper
//
// @Regex ^on player creates shopkeeper$
//
// @Cancellable true
//
// @Triggers when a player creates a shopkeeper.
//
// @Context
// <context.location> Returns the location of the shopkeeper being created.
//
// @Plugin Depenizen, ShopKeepers
//
// -->

public ShopKeeperCreatedScriptEvent() {
instance = this;
}

public static ShopKeeperCreatedScriptEvent instance;
public PlayerCreateShopkeeperEvent event;
public PlayerTag player;

@Override
public boolean couldMatch(ScriptPath path) {
return path.eventLower.startsWith("player creates shopkeeper");
}

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

@Override
public ScriptEntryData getScriptEntryData() {
return new BukkitScriptEntryData(player, null);
}

@Override
public ObjectTag getContext(String name) {
if (name.startsWith("location")) {
return new LocationTag(event.getShopCreationData().getSpawnLocation());
}
return super.getContext(name);
}

@EventHandler
public void onShopKeeperCreated(PlayerCreateShopkeeperEvent event) {
player = new PlayerTag(event.getShopCreationData().getCreator());
this.event = event;
fire(event);
}
}
Expand Up @@ -4,11 +4,8 @@
import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData;
import com.denizenscript.denizen.events.BukkitScriptEvent;
import com.denizenscript.denizen.objects.PlayerTag;
import com.denizenscript.denizencore.objects.core.ListTag;
import com.denizenscript.denizencore.objects.ObjectTag;
import com.denizenscript.denizencore.scripts.ScriptEntryData;
import com.denizenscript.denizencore.scripts.containers.ScriptContainer;
import com.denizenscript.denizencore.utilities.CoreUtilities;
import com.denizenscript.depenizen.bukkit.objects.shopkeepers.ShopKeeperTag;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
Expand All @@ -27,7 +24,7 @@ public class ShopKeeperTradeScriptEvent extends BukkitScriptEvent implements Lis
//
// @Context
// <context.recipe> Returns the recipe for this trade.
// <context.shopkeeper> Returns the ShopKeeper that the trade occured with.
// <context.shopkeeper> Returns the ShopKeeper that the trade occurred with.
//
// @Plugin Depenizen, ShopKeepers
//
Expand All @@ -39,13 +36,11 @@ public ShopKeeperTradeScriptEvent() {

public static ShopKeeperTradeScriptEvent instance;
public ShopkeeperTradeEvent event;
public ShopKeeperTag keeper;
public PlayerTag player;
public ListTag recipe;

@Override
public boolean couldMatch(ScriptContainer scriptContainer, String s) {
return CoreUtilities.toLowerCase(s).startsWith("shopkeeper trade");
public boolean couldMatch(ScriptPath path) {
return path.eventLower.startsWith("shopkeeper trade");
}

@Override
Expand All @@ -61,19 +56,17 @@ public ScriptEntryData getScriptEntryData() {
@Override
public ObjectTag getContext(String name) {
if (name.startsWith("recipe")) {
return recipe;
return ShopKeeperTag.wrapTradingRecipe(event.getTradingRecipe());
}
else if (name.equals("shopkeeper")) {
return keeper;
return new ShopKeeperTag(event.getShopkeeper());
}
return super.getContext(name);
}

@EventHandler
public void onShopKeeperTrade(ShopkeeperTradeEvent event) {
player = PlayerTag.mirrorBukkitPlayer(event.getPlayer());
keeper = new ShopKeeperTag(event.getShopkeeper());
recipe = ShopKeeperTag.wrapTradingRecipe(event.getTradingRecipe());
player = new PlayerTag(event.getPlayer());
this.event = event;
fire(event);
}
Expand Down

0 comments on commit ba36c37

Please sign in to comment.