Skip to content

Commit 3e52614

Browse files
author
emanon
committed
bump version
1 parent 1a02a43 commit 3e52614

2 files changed

Lines changed: 97 additions & 98 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>emanondev.core</groupId>
66
<artifactId>DeepCore</artifactId>
7-
<version>2.8</version>
7+
<version>3.0</version>
88
<packaging>jar</packaging>
99

1010
<properties>

src/main/java/emanondev/core/events/PlayerBuyMerchantRecipeEvent.java

Lines changed: 96 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -14,117 +14,116 @@
1414

1515
/**
1616
* USE MerchantCraftEvent
17-
*
17+
* <p>
1818
* This event is called each time a player try to buy something from a merchant.<br><br>
19-
*
19+
* <p>
2020
* Event is also called if player buy none because inventory is too full or has not enough ingredients.<br>
2121
* Cancelling this event prevent player from buyng stuffs but also glich clientside,<br>
2222
* might show as locked some trades after cancelling them,<br>
2323
* best solution to avoid this is closing player inventory after cancelling the event
2424
*/
2525
@Deprecated
2626
public class PlayerBuyMerchantRecipeEvent extends PlayerEvent implements Cancellable {
27-
private static final HandlerList HANDLERS_LIST = new HandlerList();
28-
private InventoryClickEvent clickEvent;
27+
private static final HandlerList HANDLERS_LIST = new HandlerList();
28+
private InventoryClickEvent clickEvent;
2929

30-
public PlayerBuyMerchantRecipeEvent(InventoryClickEvent event) {
31-
super((Player) event.getWhoClicked());
32-
this.clickEvent = event;
33-
}
34-
35-
public MerchantInventory getMerchantInventory() {
36-
return (MerchantInventory) clickEvent.getView().getTopInventory();
37-
}
30+
public PlayerBuyMerchantRecipeEvent(InventoryClickEvent event) {
31+
super((Player) event.getWhoClicked());
32+
this.clickEvent = event;
33+
}
3834

39-
@Override
40-
public boolean isCancelled() {
41-
return clickEvent.isCancelled();
42-
}
35+
public MerchantInventory getMerchantInventory() {
36+
return (MerchantInventory) clickEvent.getView().getTopInventory();
37+
}
4338

44-
@Override
45-
public void setCancelled(boolean cancelled) {
46-
clickEvent.setCancelled(cancelled);
47-
}
39+
@Override
40+
public boolean isCancelled() {
41+
return clickEvent.isCancelled();
42+
}
4843

49-
@Override
50-
public HandlerList getHandlers() {
51-
return HANDLERS_LIST;
52-
}
44+
@Override
45+
public void setCancelled(boolean cancelled) {
46+
clickEvent.setCancelled(cancelled);
47+
}
5348

54-
public static HandlerList getHandlerList() {
55-
return HANDLERS_LIST;
56-
}
57-
58-
/**
59-
* Get amount of expected transactions.
60-
* Usually the amount of reiceved items is equals or less than (result item amount * amount of transcations)
61-
* and is always bigger or equals than (result item amount * (amount of transcations - 1) +1)
62-
*
63-
*
64-
* @return amount of transactions expected for this event, changing player inventory and ingredients may change this result
65-
*/
66-
public int getTradingTimes() {
67-
return getTradeAmount(this.clickEvent);
68-
}
49+
@Override
50+
public HandlerList getHandlers() {
51+
return HANDLERS_LIST;
52+
}
6953

70-
private static int getTradeAmount(InventoryClickEvent event) {
71-
if (event.getClickedInventory().getItem(2) == null
72-
|| event.getClickedInventory().getItem(2).getType() == Material.AIR)
73-
return 0;
74-
switch (event.getClick()) {
75-
case LEFT:
76-
case RIGHT: {
77-
if (event.getCursor() == null || event.getCursor().getType() == Material.AIR)
78-
return 1;
79-
if (!event.getCursor().isSimilar(event.getCurrentItem()))
80-
return 0;// nothing is done
81-
if (event.getCursor().getMaxStackSize() - event.getCursor().getAmount() < event.getCurrentItem()
82-
.getAmount())
83-
return 0;// nothing is done
84-
return 1;
85-
}
86-
case SHIFT_LEFT:
87-
case SHIFT_RIGHT: {
88-
MerchantInventory merc = ((MerchantInventory) event.getClickedInventory());
89-
MerchantRecipe recipe = merc.getSelectedRecipe();
90-
int maxTrades = recipe.getMaxUses() - recipe.getUses();// free to buy
91-
for (ItemStack item : recipe.getIngredients()) {
92-
if (item == null || item.getType() == Material.AIR)
93-
continue;
94-
int itemPrice;
95-
if (!event.getWhoClicked().hasPotionEffect(PotionEffectType.HERO_OF_THE_VILLAGE))
96-
itemPrice = item.getAmount();
97-
else
98-
itemPrice = (int) Math.max(1,item.getAmount()-Math.max(1,Math.floor(item.getAmount()*(0.3+(0.0625*(event.getWhoClicked().getPotionEffect(PotionEffectType.HERO_OF_THE_VILLAGE).getAmplifier()))))));
99-
if (merc.getItem(0) != null && merc.getItem(0).isSimilar(item))
100-
maxTrades = Math.min(maxTrades, merc.getItem(0).getAmount() / itemPrice);
101-
else if (merc.getItem(1) != null && merc.getItem(1).isSimilar(item))
102-
maxTrades = Math.min(maxTrades, merc.getItem(1).getAmount() / itemPrice);
103-
}
104-
int counter = 0;
105-
int maxCounter = maxTrades * event.getCurrentItem().getAmount();
106-
Inventory subInv = event.getView().getBottomInventory();
107-
for (int i = 0; i < subInv.getSize(); i++) {
108-
if (subInv.getItem(i) == null || subInv.getItem(i).getType() == Material.AIR)
109-
counter = counter + event.getCurrentItem().getMaxStackSize();
110-
else if (subInv.getItem(i).isSimilar(event.getCurrentItem()))
111-
counter = counter
112-
+ (Math.max(0, subInv.getItem(i).getMaxStackSize() - subInv.getItem(i).getAmount()));
113-
else
114-
continue;
115-
if (counter >= maxCounter)
116-
break;
117-
}
118-
if (counter < maxCounter)
119-
maxTrades = counter % event.getCurrentItem().getAmount() == 0
120-
? counter / event.getCurrentItem().getAmount()
121-
: counter / event.getCurrentItem().getAmount() + 1;
122-
return maxTrades;
123-
}
124-
default:
125-
return 0;
126-
}
54+
public static HandlerList getHandlerList() {
55+
return HANDLERS_LIST;
56+
}
12757

128-
}
58+
/**
59+
* Get amount of expected transactions.
60+
* Usually the amount of reiceved items is equals or less than (result item amount * amount of transcations)
61+
* and is always bigger or equals than (result item amount * (amount of transcations - 1) +1)
62+
*
63+
* @return amount of transactions expected for this event, changing player inventory and ingredients may change this result
64+
*/
65+
public int getTradingTimes() {
66+
return getTradeAmount(this.clickEvent);
67+
}
68+
69+
private static int getTradeAmount(InventoryClickEvent event) {
70+
if (event.getClickedInventory().getItem(2) == null
71+
|| event.getClickedInventory().getItem(2).getType() == Material.AIR)
72+
return 0;
73+
switch (event.getClick()) {
74+
case LEFT:
75+
case RIGHT: {
76+
if (event.getCursor() == null || event.getCursor().getType() == Material.AIR)
77+
return 1;
78+
if (!event.getCursor().isSimilar(event.getCurrentItem()))
79+
return 0;// nothing is done
80+
if (event.getCursor().getMaxStackSize() - event.getCursor().getAmount() < event.getCurrentItem()
81+
.getAmount())
82+
return 0;// nothing is done
83+
return 1;
84+
}
85+
case SHIFT_LEFT:
86+
case SHIFT_RIGHT: {
87+
MerchantInventory merc = ((MerchantInventory) event.getClickedInventory());
88+
MerchantRecipe recipe = merc.getSelectedRecipe();
89+
int maxTrades = recipe.getMaxUses() - recipe.getUses();// free to buy
90+
for (ItemStack item : recipe.getIngredients()) {
91+
if (item == null || item.getType() == Material.AIR)
92+
continue;
93+
int itemPrice;
94+
if (!event.getWhoClicked().hasPotionEffect(PotionEffectType.HERO_OF_THE_VILLAGE))
95+
itemPrice = item.getAmount();
96+
else
97+
itemPrice = (int) Math.max(1, item.getAmount() - Math.max(1, Math.floor(item.getAmount() * (0.3 + (0.0625 * (event.getWhoClicked().getPotionEffect(PotionEffectType.HERO_OF_THE_VILLAGE).getAmplifier()))))));
98+
if (merc.getItem(0) != null && merc.getItem(0).isSimilar(item))
99+
maxTrades = Math.min(maxTrades, merc.getItem(0).getAmount() / itemPrice);
100+
else if (merc.getItem(1) != null && merc.getItem(1).isSimilar(item))
101+
maxTrades = Math.min(maxTrades, merc.getItem(1).getAmount() / itemPrice);
102+
}
103+
int counter = 0;
104+
int maxCounter = maxTrades * event.getCurrentItem().getAmount();
105+
Inventory subInv = event.getView().getBottomInventory();
106+
for (int i = 0; i < subInv.getSize(); i++) {
107+
if (subInv.getItem(i) == null || subInv.getItem(i).getType() == Material.AIR)
108+
counter = counter + event.getCurrentItem().getMaxStackSize();
109+
else if (subInv.getItem(i).isSimilar(event.getCurrentItem()))
110+
counter = counter
111+
+ (Math.max(0, subInv.getItem(i).getMaxStackSize() - subInv.getItem(i).getAmount()));
112+
else
113+
continue;
114+
if (counter >= maxCounter)
115+
break;
116+
}
117+
if (counter < maxCounter)
118+
maxTrades = counter % event.getCurrentItem().getAmount() == 0
119+
? counter / event.getCurrentItem().getAmount()
120+
: counter / event.getCurrentItem().getAmount() + 1;
121+
return maxTrades;
122+
}
123+
default:
124+
return 0;
125+
}
126+
127+
}
129128

130129
}

0 commit comments

Comments
 (0)