Skip to content

Commit 2a31201

Browse files
authored
add item_pre_grindstone, item_pre_smithing; partial fix modify_event for item_pre_craft (#1386)
1 parent 04ec9ef commit 2a31201

File tree

10 files changed

+390
-26
lines changed

10 files changed

+390
-26
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.laytonsmith.abstraction;
2+
3+
public interface MCGrindstoneInventory extends MCInventory {
4+
MCItemStack getUpperItem();
5+
MCItemStack getLowerItem();
6+
MCItemStack getResult();
7+
8+
void setUpperItem(MCItemStack i);
9+
void setLowerItem(MCItemStack i);
10+
void setResult(MCItemStack i);
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.laytonsmith.abstraction;
2+
3+
public interface MCSmithingInventory extends MCInventory {
4+
MCItemStack getInputEquipment();
5+
MCItemStack getInputMaterial();
6+
MCItemStack getInputTemplate();
7+
MCRecipe getRecipe();
8+
MCItemStack getResult();
9+
10+
void setInputEquipment(MCItemStack stack);
11+
void setInputMaterial(MCItemStack stack);
12+
void setInputTemplate(MCItemStack stack);
13+
void setResult(MCItemStack stack);
14+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package com.laytonsmith.abstraction.bukkit;
2+
3+
import com.laytonsmith.abstraction.MCGrindstoneInventory;
4+
import com.laytonsmith.abstraction.MCItemStack;
5+
import org.bukkit.inventory.GrindstoneInventory;
6+
7+
public class BukkitMCGrindstoneInventory extends BukkitMCInventory implements MCGrindstoneInventory {
8+
9+
GrindstoneInventory gi;
10+
11+
public BukkitMCGrindstoneInventory(GrindstoneInventory inventory) {
12+
super(inventory);
13+
gi = inventory;
14+
}
15+
16+
@Override
17+
public MCItemStack getUpperItem() {
18+
return new BukkitMCItemStack(gi.getItem(0));
19+
}
20+
21+
@Override
22+
public MCItemStack getLowerItem() {
23+
return new BukkitMCItemStack(gi.getItem(1));
24+
}
25+
26+
@Override
27+
public MCItemStack getResult() {
28+
return new BukkitMCItemStack(gi.getItem(2));
29+
}
30+
31+
@Override
32+
public void setUpperItem(MCItemStack stack) {
33+
gi.setItem(0, ((BukkitMCItemStack) stack).asItemStack());
34+
}
35+
36+
@Override
37+
public void setLowerItem(MCItemStack stack) {
38+
gi.setItem(1, ((BukkitMCItemStack) stack).asItemStack());
39+
}
40+
41+
@Override
42+
public void setResult(MCItemStack stack) {
43+
gi.setItem(2, ((BukkitMCItemStack) stack).asItemStack());
44+
}
45+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.laytonsmith.abstraction.bukkit;
2+
3+
import com.laytonsmith.abstraction.MCItemStack;
4+
import com.laytonsmith.abstraction.MCRecipe;
5+
import com.laytonsmith.abstraction.MCSmithingInventory;
6+
import org.bukkit.inventory.SmithingInventory;
7+
import org.bukkit.inventory.SmithingRecipe;
8+
9+
public class BukkitMCSmithingInventory extends BukkitMCInventory implements MCSmithingInventory {
10+
11+
SmithingInventory si;
12+
13+
public BukkitMCSmithingInventory(SmithingInventory inventory) {
14+
super(inventory);
15+
si = inventory;
16+
}
17+
18+
@Override
19+
public MCItemStack getInputEquipment() {
20+
return new BukkitMCItemStack(si.getItem(1));
21+
}
22+
23+
@Override
24+
public MCItemStack getInputMaterial() {
25+
return new BukkitMCItemStack(si.getItem(2));
26+
}
27+
28+
@Override
29+
public MCItemStack getInputTemplate() {
30+
return new BukkitMCItemStack(si.getItem(0));
31+
}
32+
33+
@Override
34+
public MCRecipe getRecipe() {
35+
if(si.getRecipe() == null) {
36+
return null;
37+
} else {
38+
return new BukkitMCSmithingRecipe((SmithingRecipe) si.getRecipe());
39+
}
40+
}
41+
42+
@Override
43+
public MCItemStack getResult() {
44+
return new BukkitMCItemStack(si.getResult());
45+
}
46+
47+
@Override
48+
public void setInputEquipment(MCItemStack stack) {
49+
si.setItem(1, ((BukkitMCItemStack) stack).asItemStack());
50+
}
51+
52+
@Override
53+
public void setInputMaterial(MCItemStack stack) {
54+
si.setItem(2, ((BukkitMCItemStack) stack).asItemStack());
55+
}
56+
57+
@Override
58+
public void setInputTemplate(MCItemStack stack) {
59+
si.setItem(0, ((BukkitMCItemStack) stack).asItemStack());
60+
}
61+
62+
@Override
63+
public void setResult(MCItemStack stack) {
64+
si.setResult(((BukkitMCItemStack) stack).asItemStack());
65+
}
66+
}

src/main/java/com/laytonsmith/abstraction/bukkit/events/BukkitInventoryEvents.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,24 @@
33
import com.laytonsmith.abstraction.MCAnvilInventory;
44
import com.laytonsmith.abstraction.MCCraftingInventory;
55
import com.laytonsmith.abstraction.MCEnchantmentOffer;
6+
import com.laytonsmith.abstraction.MCGrindstoneInventory;
67
import com.laytonsmith.abstraction.MCHumanEntity;
78
import com.laytonsmith.abstraction.MCInventory;
89
import com.laytonsmith.abstraction.MCInventoryView;
910
import com.laytonsmith.abstraction.MCItemStack;
1011
import com.laytonsmith.abstraction.MCPlayer;
1112
import com.laytonsmith.abstraction.MCRecipe;
13+
import com.laytonsmith.abstraction.MCSmithingInventory;
1214
import com.laytonsmith.abstraction.blocks.MCBlock;
1315
import com.laytonsmith.abstraction.bukkit.BukkitConvertor;
1416
import com.laytonsmith.abstraction.bukkit.BukkitMCAnvilInventory;
1517
import com.laytonsmith.abstraction.bukkit.BukkitMCCraftingInventory;
1618
import com.laytonsmith.abstraction.bukkit.BukkitMCEnchantmentOffer;
19+
import com.laytonsmith.abstraction.bukkit.BukkitMCGrindstoneInventory;
1720
import com.laytonsmith.abstraction.bukkit.BukkitMCInventory;
1821
import com.laytonsmith.abstraction.bukkit.BukkitMCInventoryView;
1922
import com.laytonsmith.abstraction.bukkit.BukkitMCItemStack;
23+
import com.laytonsmith.abstraction.bukkit.BukkitMCSmithingInventory;
2024
import com.laytonsmith.abstraction.bukkit.blocks.BukkitMCBlock;
2125
import com.laytonsmith.abstraction.bukkit.entities.BukkitMCHumanEntity;
2226
import com.laytonsmith.abstraction.bukkit.entities.BukkitMCPlayer;
@@ -40,8 +44,10 @@
4044
import com.laytonsmith.abstraction.events.MCItemHeldEvent;
4145
import com.laytonsmith.abstraction.events.MCItemSwapEvent;
4246
import com.laytonsmith.abstraction.events.MCPrepareAnvilEvent;
47+
import com.laytonsmith.abstraction.events.MCPrepareGrindstoneEvent;
4348
import com.laytonsmith.abstraction.events.MCPrepareItemCraftEvent;
4449
import com.laytonsmith.abstraction.events.MCPrepareItemEnchantEvent;
50+
import com.laytonsmith.abstraction.events.MCPrepareSmithingEvent;
4551
import org.bukkit.enchantments.Enchantment;
4652
import org.bukkit.enchantments.EnchantmentOffer;
4753
import org.bukkit.entity.HumanEntity;
@@ -56,7 +62,9 @@
5662
import org.bukkit.event.inventory.InventoryInteractEvent;
5763
import org.bukkit.event.inventory.InventoryOpenEvent;
5864
import org.bukkit.event.inventory.PrepareAnvilEvent;
65+
import org.bukkit.event.inventory.PrepareGrindstoneEvent;
5966
import org.bukkit.event.inventory.PrepareItemCraftEvent;
67+
import org.bukkit.event.inventory.PrepareSmithingEvent;
6068
import org.bukkit.event.player.PlayerItemHeldEvent;
6169
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
6270
import org.bukkit.inventory.ItemStack;
@@ -572,4 +580,52 @@ public MCAnvilInventory getInventory() {
572580
return new BukkitMCAnvilInventory(e.getInventory());
573581
}
574582
}
583+
584+
public static class BukkitMCPrepareSmithingEvent extends BukkitMCInventoryEvent implements MCPrepareSmithingEvent {
585+
PrepareSmithingEvent e;
586+
587+
public BukkitMCPrepareSmithingEvent(PrepareSmithingEvent event) {
588+
super(event);
589+
e = event;
590+
}
591+
592+
@Override
593+
public MCPlayer getPlayer() {
594+
return new BukkitMCPlayer(e.getViewers().get(0));
595+
}
596+
597+
@Override
598+
public void setResult(MCItemStack stack) {
599+
e.setResult(((BukkitMCItemStack) stack).asItemStack());
600+
}
601+
602+
@Override
603+
public MCSmithingInventory getInventory() {
604+
return new BukkitMCSmithingInventory(e.getInventory());
605+
}
606+
}
607+
608+
public static class BukkitMCPrepareGrindstoneEvent extends BukkitMCInventoryEvent implements MCPrepareGrindstoneEvent {
609+
PrepareGrindstoneEvent e;
610+
611+
public BukkitMCPrepareGrindstoneEvent(PrepareGrindstoneEvent event) {
612+
super(event);
613+
e = event;
614+
}
615+
616+
@Override
617+
public MCPlayer getPlayer() {
618+
return new BukkitMCPlayer(e.getViewers().get(0));
619+
}
620+
621+
@Override
622+
public void setResult(MCItemStack stack) {
623+
e.setResult(((BukkitMCItemStack) stack).asItemStack());
624+
}
625+
626+
@Override
627+
public MCGrindstoneInventory getInventory() {
628+
return new BukkitMCGrindstoneInventory(e.getInventory());
629+
}
630+
}
575631
}

src/main/java/com/laytonsmith/abstraction/bukkit/events/drivers/BukkitInventoryListener.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCItemHeldEvent;
1010
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCItemSwapEvent;
1111
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCPrepareAnvilEvent;
12+
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCPrepareGrindstoneEvent;
1213
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCPrepareItemCraftEvent;
1314
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCPrepareItemEnchantEvent;
15+
import com.laytonsmith.abstraction.bukkit.events.BukkitInventoryEvents.BukkitMCPrepareSmithingEvent;
1416
import com.laytonsmith.core.events.Driver;
1517
import com.laytonsmith.core.events.EventUtils;
1618
import org.bukkit.event.EventHandler;
@@ -23,7 +25,9 @@
2325
import org.bukkit.event.inventory.InventoryDragEvent;
2426
import org.bukkit.event.inventory.InventoryOpenEvent;
2527
import org.bukkit.event.inventory.PrepareAnvilEvent;
28+
import org.bukkit.event.inventory.PrepareGrindstoneEvent;
2629
import org.bukkit.event.inventory.PrepareItemCraftEvent;
30+
import org.bukkit.event.inventory.PrepareSmithingEvent;
2731
import org.bukkit.event.player.PlayerItemHeldEvent;
2832
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
2933

@@ -88,4 +92,16 @@ public void onPreAnvil(PrepareAnvilEvent event) {
8892
BukkitMCPrepareAnvilEvent pa = new BukkitInventoryEvents.BukkitMCPrepareAnvilEvent(event);
8993
EventUtils.TriggerListener(Driver.ITEM_PRE_ANVIL, "item_pre_anvil", pa);
9094
}
95+
96+
@EventHandler(priority = EventPriority.LOWEST)
97+
public void onPreSmithing(PrepareSmithingEvent event) {
98+
BukkitMCPrepareSmithingEvent ps = new BukkitInventoryEvents.BukkitMCPrepareSmithingEvent(event);
99+
EventUtils.TriggerListener(Driver.ITEM_PRE_SMITHING, "item_pre_smithing", ps);
100+
}
101+
102+
@EventHandler(priority = EventPriority.LOWEST)
103+
public void onPreGrindstone(PrepareGrindstoneEvent event) {
104+
BukkitMCPrepareGrindstoneEvent pg = new BukkitInventoryEvents.BukkitMCPrepareGrindstoneEvent(event);
105+
EventUtils.TriggerListener(Driver.ITEM_PRE_GRINDSTONE, "item_pre_grindstone", pg);
106+
}
91107
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.laytonsmith.abstraction.events;
2+
3+
import com.laytonsmith.abstraction.MCItemStack;
4+
import com.laytonsmith.abstraction.MCPlayer;
5+
6+
public interface MCPrepareGrindstoneEvent extends MCInventoryEvent {
7+
MCPlayer getPlayer();
8+
9+
void setResult(MCItemStack stack);
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.laytonsmith.abstraction.events;
2+
3+
import com.laytonsmith.abstraction.MCItemStack;
4+
import com.laytonsmith.abstraction.MCPlayer;
5+
6+
public interface MCPrepareSmithingEvent extends MCInventoryEvent {
7+
MCPlayer getPlayer();
8+
9+
void setResult(MCItemStack stack);
10+
}

src/main/java/com/laytonsmith/core/events/Driver.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ public enum Driver {
6868
ITEM_PRE_CRAFT,
6969
ITEM_PRE_ENCHANT,
7070
ITEM_PRE_ANVIL,
71+
ITEM_PRE_SMITHING,
72+
ITEM_PRE_GRINDSTONE,
7173
/**
7274
* Player events
7375
*/

0 commit comments

Comments
 (0)