Skip to content

Commit

Permalink
event cleanup step 6: player part 3
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Oct 31, 2019
1 parent 626ec5d commit f8da225
Show file tree
Hide file tree
Showing 27 changed files with 97 additions and 243 deletions.
Expand Up @@ -98,7 +98,7 @@ public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
if (determinationObj instanceof ElementTag) {
String determination = determinationObj.toString();
String lower = CoreUtilities.toLowerCase(determination);
if (path.eventLower.startsWith("format:")) {
if (lower.startsWith("format:")) {
String name = determination.substring("format:".length());
FormatScriptContainer formatscr = ScriptRegistry.getScriptContainer(name);
if (formatscr == null) {
Expand All @@ -118,7 +118,7 @@ public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
}
return true;
}
else if (path.eventLower.startsWith("raw_format:")) {
else if (lower.startsWith("raw_format:")) {
String form = determination.substring("raw_format:".length());
if (pcEvent != null) {
pcEvent.setFormat(form);
Expand All @@ -128,7 +128,7 @@ else if (path.eventLower.startsWith("raw_format:")) {
}
return true;
}
else if (path.eventLower.startsWith("recipients:")) {
else if (lower.startsWith("recipients:")) {
String rec_new = determination.substring("recipients:".length());
ListTag recs = ListTag.valueOf(rec_new);
List<PlayerTag> players = recs.filter(PlayerTag.class, path.container, true);
Expand Down
Expand Up @@ -92,7 +92,7 @@ public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
Block block = event.getBlock();
if (determinationObj instanceof ElementTag) {
String lower = CoreUtilities.toLowerCase(determination);
if (path.eventLower.equals("nothing")) {
if (lower.equals("nothing")) {
cancelled = true;
block.setType(Material.AIR);
return true;
Expand Down
Expand Up @@ -49,10 +49,7 @@ public PlayerChangesSignScriptEvent() {

public static PlayerChangesSignScriptEvent instance;
public LocationTag location;
public ListTag new_sign;
public ListTag old_sign;
public MaterialTag material;
public ListTag new_text;
public SignChangeEvent event;

@Override
Expand Down Expand Up @@ -90,7 +87,10 @@ public String getName() {
public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
String determination = determinationObj.toString();
if (determination.length() > 0 && !isDefaultDetermination(determinationObj)) {
new_text = ListTag.valueOf(determination);
ListTag new_text = ListTag.valueOf(determination);
for (int i = 0; i < 4 && i < new_text.size(); i++) {
event.setLine(i, EscapeTagBase.unEscape(new_text.get(i)));
}
return true;
}
return super.applyDetermination(path, determinationObj);
Expand All @@ -110,10 +110,10 @@ else if (name.equals("material")) {
return material;
}
else if (name.equals("new")) {
return new_sign;
return new ListTag(Arrays.asList(event.getLines()));
}
else if (name.equals("old")) {
return old_sign;
return new ListTag(Arrays.asList(((Sign) event.getBlock().getState()).getLines()));
}
return super.getContext(name);
}
Expand All @@ -127,19 +127,10 @@ public void onPlayerChangesSign(SignChangeEvent event) {
if (!(state instanceof Sign)) {
return;
}
Sign sign = (Sign) state;
material = new MaterialTag(event.getBlock());
location = new LocationTag(event.getBlock().getLocation());
old_sign = new ListTag(Arrays.asList(sign.getLines()));
new_sign = new ListTag(Arrays.asList(event.getLines()));
new_text = null;
this.event = event;
fire(event);
if (new_text != null) {
for (int i = 0; i < 4 && i < new_text.size(); i++) {
event.setLine(i, EscapeTagBase.unEscape(new_text.get(i)));
}
}
}

}
Expand Up @@ -13,7 +13,6 @@

public class PlayerChangesXPScriptEvent extends BukkitScriptEvent implements Listener {

// TODO: in area
// <--[event]
// @Events
// player changes xp
Expand Down Expand Up @@ -42,7 +41,6 @@ public PlayerChangesXPScriptEvent() {

public static PlayerChangesXPScriptEvent instance;
public PlayerExpChangeEvent event;
public int amount;
public PlayerTag player;

@Override
Expand All @@ -67,7 +65,7 @@ public String getName() {
@Override
public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
if (determinationObj instanceof ElementTag && ((ElementTag) determinationObj).isInt()) {
amount = ((ElementTag) determinationObj).asInt();
event.setAmount(((ElementTag) determinationObj).asInt());
return true;
}
return super.applyDetermination(path, determinationObj);
Expand All @@ -81,7 +79,7 @@ public ScriptEntryData getScriptEntryData() {
@Override
public ObjectTag getContext(String name) {
if (name.equals("amount")) {
return new ElementTag(amount);
return new ElementTag(event.getAmount());
}
return super.getContext(name);
}
Expand All @@ -91,14 +89,12 @@ public void onPlayerChangesXP(PlayerExpChangeEvent event) {
if (EntityTag.isNPC(event.getPlayer())) {
return;
}
amount = event.getAmount();
player = PlayerTag.mirrorBukkitPlayer(event.getPlayer());
this.event = event;
cancelled = false;
fire(event);
if (cancelled) {
amount = 0;
event.setAmount(0);
}
event.setAmount(amount);
}
}
Expand Up @@ -55,7 +55,6 @@ public PlayerClicksBlockScriptEvent() {
LocationTag location;
ElementTag click_type;
ElementTag hand;
LocationTag relative;
MaterialTag blockMaterial;

private boolean couldMatchIn(String lower) {
Expand Down Expand Up @@ -200,7 +199,7 @@ else if (name.equals("hand")) {
return hand;
}
else if (name.equals("relative")) {
return relative;
return event.hasBlock() ? new LocationTag(event.getClickedBlock().getRelative(event.getBlockFace()).getLocation()) : null;
}
return super.getContext(name);
}
Expand All @@ -214,7 +213,6 @@ public void playerClicksBlock(PlayerInteractEvent event) {
hand = new ElementTag(event.getHand().name());
item = new ItemTag(event.getItem());
location = event.hasBlock() ? new LocationTag(event.getClickedBlock().getLocation()) : null;
relative = event.hasBlock() ? new LocationTag(event.getClickedBlock().getRelative(event.getBlockFace()).getLocation()) : null;
click_type = new ElementTag(event.getAction().name());
cancelled = event.isCancelled() && event.useItemInHand() == Event.Result.DENY; // Spigot is dumb!
this.event = event;
Expand Down
Expand Up @@ -32,7 +32,6 @@ public PlayerCompletesAdvancementScriptEvent() {
}

public static PlayerCompletesAdvancementScriptEvent instance;
public ListTag criteria;
public PlayerAdvancementDoneEvent event;

@Override
Expand All @@ -58,16 +57,16 @@ public ScriptEntryData getScriptEntryData() {
@Override
public ObjectTag getContext(String name) {
if (name.equals("criteria")) {
ListTag criteria = new ListTag();
criteria.addAll(event.getAdvancement().getCriteria());
return criteria;
}
return super.getContext(name);
}

@EventHandler
public void onPlayerCompletesAdvancement(PlayerAdvancementDoneEvent event) {
// Should this not fire if it's a 'fake' advancement created by Denizen?
criteria = new ListTag();
criteria.addAll(event.getAdvancement().getCriteria());
// TODO: Should this not fire if it's a 'fake' advancement created by Denizen?
this.event = event;
fire(event);
}
Expand Down
Expand Up @@ -14,7 +14,6 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.inventory.CraftingInventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;

Expand Down Expand Up @@ -47,10 +46,8 @@ public PlayerCraftsItemScriptEvent() {
}

public static PlayerCraftsItemScriptEvent instance;
public boolean resultChanged;
public CraftItemEvent event;
public ItemTag result;
public ListTag recipe;
public CraftingInventory inventory;
public PlayerTag player;

@Override
Expand Down Expand Up @@ -78,8 +75,7 @@ public String getName() {
public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
String determination = determinationObj.toString();
if (ItemTag.matches(determination)) {
result = ItemTag.valueOf(determination, path.container);
resultChanged = true;
event.setCurrentItem(ItemTag.valueOf(determination, path.container).getItemStack());
return true;
}

Expand All @@ -97,9 +93,18 @@ public ObjectTag getContext(String name) {
return result;
}
else if (name.equals("inventory")) {
return InventoryTag.mirrorBukkitInventory(inventory);
return InventoryTag.mirrorBukkitInventory(event.getInventory());
}
else if (name.equals("recipe")) {
ListTag recipe = new ListTag();
for (ItemStack itemStack : event.getInventory().getMatrix()) {
if (itemStack != null) {
recipe.add(new ItemTag(itemStack).identify());
}
else {
recipe.add(new ItemTag(Material.AIR).identify());
}
}
return recipe;
}
return super.getContext(name);
Expand All @@ -115,26 +120,13 @@ public void onCraftItem(CraftItemEvent event) {
if (eRecipe == null || eRecipe.getResult() == null) {
return;
}
inventory = event.getInventory();
this.event = event;
result = new ItemTag(eRecipe.getResult());
recipe = new ListTag();
for (ItemStack itemStack : inventory.getMatrix()) {
if (itemStack != null) {
recipe.add(new ItemTag(itemStack).identify());
}
else {
recipe.add(new ItemTag(Material.AIR).identify());
}
}
this.player = EntityTag.getPlayerFrom(humanEntity);
this.resultChanged = false;
this.cancelled = false;
fire(event);
if (cancelled) { // This event has a weird cancellation handler
event.setCancelled(true);
}
else if (resultChanged) {
event.setCurrentItem(result.getItemStack());
}
}
}
Expand Up @@ -43,7 +43,6 @@ public PlayerDropsItemScriptEvent() {

public static PlayerDropsItemScriptEvent instance;
public ItemTag item;
public EntityTag entity;
public LocationTag location;
public PlayerDropItemEvent event;

Expand Down Expand Up @@ -81,7 +80,7 @@ public ObjectTag getContext(String name) {
return item;
}
else if (name.equals("entity")) {
return entity;
return new EntityTag(event.getItemDrop());
}
else if (name.equals("location")) {
return location;
Expand All @@ -98,7 +97,6 @@ public void onPlayerDropsItem(PlayerDropItemEvent event) {
Item itemDrop = event.getItemDrop();
EntityTag.rememberEntity(itemDrop);
item = new ItemTag(itemDrop.getItemStack());
entity = new EntityTag(itemDrop);
this.event = event;
fire(event);
}
Expand Down
Expand Up @@ -43,12 +43,7 @@ public class PlayerEditsBookScriptEvent extends BukkitScriptEvent implements Lis

PlayerEditsBookScriptEvent instance;
PlayerEditBookEvent event;
ElementTag signing;
ElementTag title;
ElementTag pages;
ItemTag book;
PlayerTag player;
BookMeta bookMeta;

@Override
public boolean couldMatch(ScriptPath path) {
Expand All @@ -61,7 +56,7 @@ public boolean matches(ScriptPath path) {
if (action.equals("edits")) {
return true;
}
if (action.equals("signs") && signing.asBoolean()) {
if (action.equals("signs") && event.isSigning()) {
return true;
}
return false;
Expand All @@ -76,16 +71,17 @@ public String getName() {
public boolean applyDetermination(ScriptPath path, ObjectTag determinationObj) {
String determination = determinationObj.toString();
if (determination.toUpperCase().equals("NOT_SIGNING")) {
signing = new ElementTag(false);
event.setSigning(false);
}
else if (ScriptTag.matches(determination)) {
ScriptTag script = ScriptTag.valueOf(determination);
if (script.getContainer() instanceof BookScriptContainer) {
ItemTag dBook = ((BookScriptContainer) script.getContainer()).getBookFrom((BukkitTagContext) getScriptEntryData().getTagContext());
bookMeta = (BookMeta) dBook.getItemStack().getItemMeta();
BookMeta bookMeta = (BookMeta) dBook.getItemStack().getItemMeta();
if (dBook.getMaterial().getMaterial() == MaterialCompat.WRITABLE_BOOK) {
signing = new ElementTag(false);
event.setSigning(false);
}
event.setNewBookMeta(bookMeta);
}
else {
Debug.echoError("Script '" + determination + "' is valid, but not of type 'book'!");
Expand All @@ -102,28 +98,21 @@ public ScriptEntryData getScriptEntryData() {
@Override
public ObjectTag getContext(String name) {
if (name.equals("signing")) {
return signing;
return new ElementTag(event.isSigning());
}
if (name.equals("title")) {
return title;
return event.isSigning() ? new ElementTag(event.getNewBookMeta().getTitle()) : null;
}
else if (name.equals("book")) {
return book;
return new ItemTag(event.getPlayer().getInventory().getItem(event.getSlot()));
}
return super.getContext(name);
}

@EventHandler
public void onPlayerEditsBook(PlayerEditBookEvent event) {
player = PlayerTag.mirrorBukkitPlayer(event.getPlayer());
signing = new ElementTag(event.isSigning());
bookMeta = event.getNewBookMeta();
pages = new ElementTag(bookMeta.getPageCount());
title = event.isSigning() ? new ElementTag(bookMeta.getTitle()) : null;
book = new ItemTag(event.getPlayer().getInventory().getItem(event.getSlot()));
this.event = event;
fire(event);
event.setNewBookMeta(bookMeta);
event.setSigning(signing.asBoolean());
}
}

0 comments on commit f8da225

Please sign in to comment.