Skip to content

Commit cd92c68

Browse files
committed
Revamped a lot of the code (check for bugs!), fixed worldborder check, added patch buckets.
1 parent a99a32b commit cd92c68

File tree

13 files changed

+355
-285
lines changed

13 files changed

+355
-285
lines changed

GenBucketPlugin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<artifactId>GenBucketPlugin</artifactId>
1010
<packaging>jar</packaging>
1111
<name>GenBucketPlugin</name>
12-
<version>1.0.1</version>
12+
<version>1.0.2</version>
1313

1414
<repositories>
1515
<repository>

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/GenBucket.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,34 @@
44
import codes.biscuit.genbucket.commands.GenBucketCommand;
55
import codes.biscuit.genbucket.listeners.PlayerListener;
66
import codes.biscuit.genbucket.hooks.HookUtils;
7+
import codes.biscuit.genbucket.utils.BucketManager;
78
import codes.biscuit.genbucket.utils.ConfigValues;
89
import codes.biscuit.genbucket.utils.Utils;
910
import org.bukkit.Bukkit;
1011
import org.bukkit.plugin.java.JavaPlugin;
1112

1213
public class GenBucket extends JavaPlugin {
1314

14-
private ConfigValues configValues = new ConfigValues(this);
15-
private Utils utils = new Utils(this);
15+
private ConfigValues configValues;
16+
private Utils utils;
1617
private HookUtils hookUtils;
18+
private BucketManager bucketManager;
1719

1820
@Override
1921
public void onEnable() {
22+
bucketManager = new BucketManager();
23+
utils = new Utils(this);
24+
configValues = new ConfigValues(this);
2025
Bukkit.getPluginManager().registerEvents(new PlayerListener(this), this);
2126
getCommand("genbucket").setExecutor(new GenBucketCommand(this));
2227
GenBucketAdminCommand gbaCommand = new GenBucketAdminCommand(this);
2328
getCommand("genbucketadmin").setExecutor(gbaCommand);
2429
getCommand("genbucketadmin").setTabCompleter(gbaCommand);
25-
// getConfig().options().copyDefaults(true);
2630
saveDefaultConfig();
27-
reloadConfig();
2831
hookUtils = new HookUtils(this);
2932
utils.registerRecipes();
3033
utils.updateConfig();
34+
configValues.loadBuckets();
3135
}
3236

3337
public ConfigValues getConfigValues() {
@@ -41,4 +45,8 @@ public Utils getUtils() {
4145
public HookUtils getHookUtils() {
4246
return hookUtils;
4347
}
48+
49+
public BucketManager getBucketManager() {
50+
return bucketManager;
51+
}
4452
}

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/commands/GenBucketAdminCommand.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package codes.biscuit.genbucket.commands;
22

33
import codes.biscuit.genbucket.GenBucket;
4+
import codes.biscuit.genbucket.utils.Bucket;
45
import net.md_5.bungee.api.ChatColor;
56
import org.bukkit.Bukkit;
67
import org.bukkit.command.Command;
@@ -30,8 +31,8 @@ public List<String> onTabComplete(CommandSender sender, Command cmd, String alia
3031
}
3132
return arguments;
3233
} else if (args.length == 3 && args[0].equalsIgnoreCase("give")) {
33-
List<String> arguments = new ArrayList<>(main.getConfigValues().getBucketList());
34-
for (String arg : main.getConfigValues().getBucketList()) {
34+
List<String> arguments = new ArrayList<>(main.getBucketManager().getBuckets().keySet());
35+
for (String arg : main.getBucketManager().getBuckets().keySet()) {
3536
if (!arg.startsWith(args[2].toLowerCase())) {
3637
arguments.remove(arg);
3738
}
@@ -51,8 +52,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
5152
Player p = Bukkit.getPlayerExact(args[1]);
5253
if (p != null) {
5354
if (args.length > 2) {
54-
String bucket = args[2];
55-
if (main.getConfigValues().bucketExists(bucket)) {
55+
Bucket bucket = main.getBucketManager().getBucket(args[2]);
56+
if (bucket != null) {
5657
int giveAmount = 1;
5758
if (args.length > 3) {
5859
try {
@@ -62,7 +63,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
6263
return false;
6364
}
6465
}
65-
ItemStack item = main.getUtils().getBucketItemStack(bucket, giveAmount);
66+
ItemStack item = bucket.getItem();
67+
item.setAmount(giveAmount);
6668
Map excessItems;
6769
if (!main.getConfigValues().giveShouldDropItem()) {
6870
if (giveAmount < 65) {
@@ -88,7 +90,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
8890
p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack) excessItem);
8991
}
9092
}
91-
double price = main.getConfigValues().getBucketBuyPrice(bucket) * giveAmount;
93+
double price = bucket.getBuyPrice() * giveAmount;
9294
if (!main.getConfigValues().getGiveMessage(p, giveAmount, bucket).equals("")) {
9395
sender.sendMessage(main.getConfigValues().getGiveMessage(p, giveAmount, bucket));
9496
}
@@ -116,6 +118,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
116118
case "reload":
117119
if (sender.hasPermission("genbucket.reload")) {
118120
main.reloadConfig();
121+
main.getConfigValues().loadBuckets();
119122
main.getUtils().reloadRecipes();
120123
sender.sendMessage(ChatColor.GREEN + "Successfully reloaded the config. Most values have been instantly updated.");
121124
} else {

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/commands/GenBucketCommand.java

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package codes.biscuit.genbucket.commands;
22

33
import codes.biscuit.genbucket.GenBucket;
4+
import codes.biscuit.genbucket.utils.Bucket;
45
import net.md_5.bungee.api.ChatColor;
56
import org.bukkit.Bukkit;
67
import org.bukkit.Material;
@@ -49,18 +50,9 @@ public boolean onCommand(CommandSender sender, Command command, String label, St
4950
}
5051
}
5152
for (int i = 0; i < 9 * main.getConfigValues().getGUIRows(); i++) {
52-
if (main.getConfigValues().getBucketFromSlot(i) != null) {
53-
String bucket = main.getConfigValues().getBucketFromSlot(i);
54-
ItemStack bucketItem = main.getConfigValues().getBucketShopItemStack(bucket);
55-
if (!bucketItem.getType().equals(Material.AIR)) {
56-
ItemMeta bucketItemMeta = bucketItem.getItemMeta();
57-
bucketItemMeta.setDisplayName(main.getConfigValues().getBucketShopName(bucket));
58-
bucketItemMeta.setLore(main.getConfigValues().getBucketShopLore(bucket));
59-
bucketItem.setItemMeta(bucketItemMeta);
60-
if (main.getConfigValues().bucketShopShouldGlow(bucket)) {
61-
bucketItem = main.getUtils().addGlow(bucketItem);
62-
}
63-
}
53+
Bucket bucket = main.getBucketManager().fromSlot(i);
54+
if (bucket != null) {
55+
ItemStack bucketItem = bucket.getGuiItem();
6456
confirmInv.setItem(i, bucketItem);
6557
} else if (main.getConfigValues().getExitSlots().contains(i)) {
6658
confirmInv.setItem(i, exitItem);

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/hooks/FactionsUUIDHook.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.bukkit.entity.Player;
77

88
// Also works for SavageFactions
9+
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
910
class FactionsUUIDHook {
1011

1112
boolean hasFaction(Player p) {

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/hooks/HookUtils.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package codes.biscuit.genbucket.hooks;
22

33
import codes.biscuit.genbucket.GenBucket;
4+
import codes.biscuit.genbucket.utils.Bucket;
45
import net.milkbowl.vault.economy.Economy;
56
import org.bukkit.*;
67
import org.bukkit.block.Block;
@@ -141,11 +142,12 @@ public boolean canGenBlock(Player p, Location block, boolean horizontal) {
141142
return false;
142143
}
143144
}
144-
WorldBorder border = p.getWorld().getWorldBorder();
145-
double radius = border.getSize() / 2;
145+
WorldBorder border = block.getWorld().getWorldBorder();
146+
double x = block.getBlockX();
147+
double z = block.getBlockZ();
148+
double size = border.getSize()/2;
146149
Location center = border.getCenter();
147-
double x = block.getX() - center.getX(), z = block.getZ() - center.getZ();
148-
return !(x >= radius || -x > radius) || (z >= radius || -z > radius);
150+
return !((x > center.clone().add(size, 0, 0).getX() || z > center.clone().add(0, 0, size).getZ()) || (x < center.clone().subtract(size,0,0).getX() || (z < center.clone().subtract(0,0, size).getZ())));
149151
}
150152
return true;
151153
}
@@ -180,16 +182,16 @@ private void cannotPlaceYLevel(Player p) {
180182
}
181183
}
182184

183-
public boolean takeBucketPlaceCost(Player p, String bucket) {
185+
public boolean takeBucketPlaceCost(Player p, Bucket bucket) {
184186
if (bypassPlayers.contains(p)) {
185187
return true;
186188
}
187-
if (hasMoney(p, main.getConfigValues().getBucketPlaceCost(bucket))) {
188-
removeMoney(p, main.getConfigValues().getBucketPlaceCost(bucket));
189+
if (hasMoney(p, bucket.getPlacePrice())) {
190+
removeMoney(p, bucket.getPlacePrice());
189191
return true;
190192
} else {
191-
if (!main.getConfigValues().notEnoughMoneyPlaceMessage(main.getConfigValues().getBucketPlaceCost(bucket)).equals("")) {
192-
p.sendMessage(main.getConfigValues().notEnoughMoneyPlaceMessage(main.getConfigValues().getBucketPlaceCost(bucket)));
193+
if (!main.getConfigValues().notEnoughMoneyPlaceMessage(bucket.getPlacePrice()).equals("")) {
194+
p.sendMessage(main.getConfigValues().notEnoughMoneyPlaceMessage(bucket.getPlacePrice()));
193195
}
194196
return false;
195197
}

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/listeners/PlayerListener.java

Lines changed: 33 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import codes.biscuit.genbucket.GenBucket;
44
import codes.biscuit.genbucket.timers.GenningTimer;
5+
import codes.biscuit.genbucket.utils.Bucket;
56
import org.bukkit.Location;
67
import org.bukkit.Material;
78
import org.bukkit.block.Block;
@@ -39,9 +40,10 @@ public void onBlockPlace(BlockPlaceEvent e) {
3940
return;
4041
}
4142
}
42-
if (main.getUtils().matchBucket(e.getItemInHand()) != null) { // Sorry, you can't use it with offhand atm.
43+
Bucket matchedBucket = main.getBucketManager().matchBucket(e.getItemInHand());
44+
if (matchedBucket != null) { // Sorry, you can't use it with offhand atm.
4345
e.setCancelled(true);
44-
startGenBucket(main.getUtils().matchBucket(e.getItemInHand()), e.getPlayer(), e.getBlock(), e.getBlockAgainst().getFace(e.getBlock()), e.getItemInHand());
46+
startGenBucket(matchedBucket, e.getPlayer(), e.getBlock(), e.getBlockAgainst().getFace(e.getBlock()), e.getItemInHand());
4547
}
4648
}
4749

@@ -53,9 +55,12 @@ public void onBucketPlace(PlayerInteractEvent e) {
5355
}
5456
}
5557
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) && e.getItem() != null && (e.getItem().getType().equals(Material.LAVA_BUCKET) ||
56-
e.getItem().getType().equals(Material.WATER_BUCKET)) && main.getUtils().matchBucket(e.getItem()) != null) {
57-
e.setCancelled(true);
58-
startGenBucket(main.getUtils().matchBucket(e.getItem()), e.getPlayer(), e.getClickedBlock().getRelative(e.getBlockFace()), e.getBlockFace(), e.getItem());
58+
e.getItem().getType().equals(Material.WATER_BUCKET))) {
59+
Bucket bucket = main.getBucketManager().matchBucket(e.getItem());
60+
if (bucket != null) {
61+
e.setCancelled(true);
62+
startGenBucket(bucket, e.getPlayer(), e.getClickedBlock().getRelative(e.getBlockFace()), e.getBlockFace(), e.getItem());
63+
}
5964
}
6065
}
6166

@@ -79,57 +84,53 @@ private boolean noPlayersNearby(Player p) {
7984
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
8085
public void onItemDrop(PlayerDropItemEvent e) {
8186
if (main.getConfigValues().bucketsDisappearDrop()) {
82-
String bucket = main.getUtils().matchBucket(e.getItemDrop().getItemStack());
83-
if (bucket != null && main.getConfigValues().isBucketInfinite(bucket)) {
87+
Bucket bucket = main.getBucketManager().matchBucket(e.getItemDrop().getItemStack());
88+
if (bucket != null && bucket.isInfinite()) {
8489
e.getItemDrop().remove();
8590
}
8691
}
8792
}
8893

89-
private void startGenBucket(String bucket, Player p, Block block, BlockFace direction, ItemStack removeItem) {
94+
private void startGenBucket(Bucket bucket, Player p, Block block, BlockFace direction, ItemStack removeItem) {
9095
if (main.getHookUtils().canPlaceHere(p, block.getLocation()) && noPlayersNearby(p) && main.getHookUtils().takeBucketPlaceCost(p, bucket)) {
91-
if ((main.getConfigValues().getBucketDirection(bucket).equals("HORIZONTAL") || main.getConfigValues().getBucketDirection(bucket).equals("HORIZONTAL_BY_CHUNK")) &&
96+
if (bucket.getDirection() == Bucket.Direction.HORIZONTAL &&
9297
(direction.equals(BlockFace.UP) || direction.equals(BlockFace.DOWN))) {
9398
if (!main.getConfigValues().getWrongDirectionMessage().equals("")) {
9499
p.sendMessage(main.getConfigValues().getWrongDirectionMessage());
95100
}
96101
return;
97102
}
98-
boolean chunkLimited = false;
99-
switch (main.getConfigValues().getBucketDirection(bucket)) {
100-
case "UPWARDS":
103+
switch (bucket.getDirection()) {
104+
case UPWARDS:
101105
direction = BlockFace.UP;
102106
break;
103-
case "DOWNWARDS":
107+
case DOWNWARDS:
104108
direction = BlockFace.DOWN;
105109
break;
106-
case "HORIZONTAL_BY_CHUNK": case "ANY_BY_CHUNK":
107-
chunkLimited = true;
108-
break;
109110
}
110111
int limit = main.getConfigValues().getVerticalTravel();
111112
if (direction != BlockFace.UP && direction != BlockFace.DOWN) {
112113
limit = main.getConfigValues().getHorizontalTravel();
113114
}
114-
GenningTimer genningTimer = new GenningTimer(p, main.getConfigValues().getBucketBlockMaterial(bucket), block, direction, main, limit, chunkLimited);
115+
GenningTimer genningTimer = new GenningTimer(p, bucket, block, direction, main, limit);
115116
genningTimer.runTaskTimer(main, 0L, main.getConfigValues().getBlockSpeedDelay());
116117
if (main.getConfigValues().cancellingEnabled()) {
117118
main.getUtils().getCurrentGens().put(block.getLocation(), genningTimer);
118119
}
119-
if (main.getConfigValues().isNotInfinite(bucket)) {
120+
if (!bucket.isInfinite()) {
120121
if (!main.getHookUtils().getBypassPlayers().contains(p)) {
121122
if (removeItem.getAmount() <= 1) {
122123
p.setItemInHand(null);
123124
} else {
124125
removeItem.setAmount(removeItem.getAmount() - 1);
125126
}
126127
}
127-
if (!main.getConfigValues().getPlaceNormalMessage(main.getConfigValues().getBucketPlaceCost(bucket)).equals("") && main.getConfigValues().getBucketPlaceCost(bucket) > 0) {
128-
p.sendMessage(main.getConfigValues().getPlaceNormalMessage(main.getConfigValues().getBucketPlaceCost(bucket)));
128+
if (!main.getConfigValues().getPlaceNormalMessage(bucket.getPlacePrice()).equals("") && bucket.getPlacePrice() > 0) {
129+
p.sendMessage(main.getConfigValues().getPlaceNormalMessage(bucket.getPlacePrice()));
129130
}
130131
} else {
131-
if (!main.getConfigValues().getPlaceInfiniteMessage(main.getConfigValues().getBucketPlaceCost(bucket)).equals("") && main.getConfigValues().getBucketPlaceCost(bucket) > 0) {
132-
p.sendMessage(main.getConfigValues().getPlaceInfiniteMessage(main.getConfigValues().getBucketPlaceCost(bucket)));
132+
if (!main.getConfigValues().getPlaceInfiniteMessage(bucket.getPlacePrice()).equals("") && bucket.getPlacePrice() > 0) {
133+
p.sendMessage(main.getConfigValues().getPlaceInfiniteMessage(bucket.getPlacePrice()));
133134
}
134135
}
135136
}
@@ -141,17 +142,18 @@ public void onShopClick(InventoryClickEvent e) {
141142
e.getClickedInventory().getName().equals(main.getConfigValues().getGUITitle())) {
142143
e.setCancelled(true);
143144
Player p = (Player) e.getWhoClicked();
144-
if (e.getCurrentItem() != null && e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName())
145-
if (main.getConfigValues().getBucketFromShopName(e.getCurrentItem().getItemMeta().getDisplayName()) != null) {
146-
String bucket = main.getConfigValues().getBucketFromShopName(e.getCurrentItem().getItemMeta().getDisplayName());
147-
double price = main.getConfigValues().getBucketBuyPrice(bucket);
145+
if (e.getCurrentItem() != null && e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName()) {
146+
Bucket bucket = main.getBucketManager().fromShopName(e.getCurrentItem().getItemMeta().getDisplayName());
147+
if (bucket != null) {
148+
double price = bucket.getBuyPrice();
148149
int amount = 1;
149150
if (e.getClick().equals(ClickType.SHIFT_LEFT) || e.getClick().equals(ClickType.SHIFT_RIGHT)) {
150151
amount = 16;
151152
price *= main.getConfigValues().getBulkBuyAmount();
152153
}
153154
if (main.getHookUtils().takeShopMoney(p, price)) {
154-
ItemStack item = main.getUtils().getBucketItemStack(bucket, amount);
155+
ItemStack item = bucket.getItem();
156+
item.setAmount(amount);
155157
Map excessItems;
156158
if (!main.getConfigValues().shopShouldDropItem()) {
157159
if (p.getInventory().firstEmpty() == -1) {
@@ -163,15 +165,15 @@ public void onShopClick(InventoryClickEvent e) {
163165
}
164166
excessItems = p.getInventory().addItem(item);
165167
for (Object excessItem : excessItems.values()) {
166-
int itemCount = ((ItemStack)excessItem).getAmount();
168+
int itemCount = ((ItemStack) excessItem).getAmount();
167169
while (itemCount > 64) {
168170
((ItemStack) excessItem).setAmount(64);
169-
p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack)excessItem);
171+
p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack) excessItem);
170172
itemCount = itemCount - 64;
171173
}
172174
if (itemCount > 0) {
173175
((ItemStack) excessItem).setAmount(itemCount);
174-
p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack)excessItem);
176+
p.getWorld().dropItemNaturally(p.getLocation(), (ItemStack) excessItem);
175177
}
176178
}
177179
if (!main.getConfigValues().getBuyConfirmationMessage(amount).equals("")) {
@@ -181,6 +183,7 @@ public void onShopClick(InventoryClickEvent e) {
181183
} else if (main.getConfigValues().getExitName().equals(e.getCurrentItem().getItemMeta().getDisplayName())) {
182184
p.closeInventory();
183185
}
186+
}
184187
}
185188
}
186189

0 commit comments

Comments
 (0)