Skip to content

Commit fb2d658

Browse files
committed
Coreprotect wil now log both block removals & placements. Fixed a bug where the update checking was synchronous (may have caused small lag spikes when an op joined). Added a delete bucket which just deletes everything in its path except in the delete blacklist. Please see the updated config: https://github.com/biscuut/GenBucket/blob/master/GenBucketPlugin/src/main/resources/config.yml .
1 parent 0c1a19f commit fb2d658

File tree

15 files changed

+146
-22
lines changed

15 files changed

+146
-22
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package codes.biscuit.genbucket.hooks;
22

33
import org.bukkit.block.Block;
4+
import org.bukkit.entity.Player;
45

56
public interface MinecraftAbstraction {
67

78
void setBlockData(Block block, byte data);
9+
10+
void clearOffhand(Player p);
811
}

GenBucketPlugin/pom.xml

Lines changed: 8 additions & 2 deletions
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.5</version>
12+
<version>1.0.7</version>
1313

1414
<repositories>
1515
<repository>
@@ -42,7 +42,7 @@
4242
<dependency>
4343
<groupId>org.spigotmc</groupId>
4444
<artifactId>spigot-api</artifactId>
45-
<version>1.8.8-R0.1-SNAPSHOT</version>
45+
<version>1.13.2-R0.1-SNAPSHOT</version>
4646
<scope>provided</scope>
4747
</dependency>
4848
<dependency>
@@ -93,6 +93,12 @@
9393
<version>MC_1_8</version>
9494
<scope>compile</scope>
9595
</dependency>
96+
<dependency>
97+
<artifactId>MC_1_9</artifactId>
98+
<groupId>codes.biscuit.genbucket</groupId>
99+
<version>MC_1_9</version>
100+
<scope>compile</scope>
101+
</dependency>
96102
<dependency>
97103
<artifactId>WG_6</artifactId>
98104
<groupId>codes.biscuit.genbucket</groupId>

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ public class GenBucket extends JavaPlugin {
2323

2424
@Override
2525
public void onEnable() {
26+
if (minecraftVersion == -1) {
27+
String mcVersion = Bukkit.getBukkitVersion().split(Pattern.quote("-"))[0].split(Pattern.quote("."))[1];
28+
if (mcVersion.contains(".")) {
29+
mcVersion = mcVersion.split(Pattern.quote("."))[0];
30+
}
31+
minecraftVersion = Integer.valueOf(mcVersion);
32+
}
2633
bucketManager = new BucketManager();
2734
utils = new Utils(this);
2835
configValues = new ConfigValues(this);
@@ -36,9 +43,6 @@ public void onEnable() {
3643
utils.registerRecipes();
3744
utils.updateConfig();
3845
configValues.loadBuckets();
39-
if (minecraftVersion == -1) {
40-
minecraftVersion = Integer.valueOf(Bukkit.getBukkitVersion().split(Pattern.quote("-"))[0].split(Pattern.quote("."))[1]);
41-
}
4246
new MetricsLite(this);
4347
}
4448

@@ -59,7 +63,12 @@ public BucketManager getBucketManager() {
5963
}
6064

6165
// using mc 1.8 to 1.12
62-
public boolean usingOldAPI() {
66+
public boolean serverIsBeforeFlattening() {
6367
return minecraftVersion < 13;
6468
}
69+
70+
// using mc 1.8
71+
public boolean serverIsAfterOffhand() {
72+
return minecraftVersion > 8;
73+
}
6574
}
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
package codes.biscuit.genbucket.hooks;
22

33
import net.coreprotect.CoreProtect;
4+
import net.coreprotect.CoreProtectAPI;
5+
import org.bukkit.Bukkit;
46
import org.bukkit.Location;
57
import org.bukkit.Material;
68

7-
import static org.bukkit.Bukkit.getServer;
8-
99
// CoreProtect API v5
1010
class CoreProtectHook {
1111

12-
void logBlock(String p, Location loc, Material mat, byte damage) {
13-
((CoreProtect)getServer().getPluginManager().getPlugin("CoreProtect")).getAPI().logRemoval(p + " (GenBucket)", loc, mat, damage);
12+
private CoreProtectAPI api = ((CoreProtect) Bukkit.getServer().getPluginManager().getPlugin("CoreProtect")).getAPI();
13+
14+
void logRemoval(String p, Location loc, Material mat, byte damage) {
15+
api.logRemoval(p + " (GenBucket)", loc, mat, damage);
16+
}
17+
18+
void logPlacement(String p, Location loc, Material mat, byte damage) {
19+
api.logPlacement(p + " (GenBucket)", loc, mat, damage);
1420
}
1521
}

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

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,21 @@ public HookUtils(GenBucket main) {
4848
main.getLogger().info("Hooked into CoreProtect");
4949
enabledHooks.put(Hooks.COREPROTECT, new CoreProtectHook());
5050
}
51-
if (main.usingOldAPI()) {
51+
if (main.serverIsBeforeFlattening()) {
5252
main.getLogger().info("Hooked into Minecraft 1.8-1.12");
5353
enabledHooks.put(Hooks.MINECRAFTONEEIGHT, new Minecraft_1_8());
5454
}
55+
if (main.serverIsAfterOffhand()) {
56+
main.getLogger().info("Hooked into Minecraft 1.9+");
57+
enabledHooks.put(Hooks.MINECRAFTONENINE, new Minecraft_1_9());
58+
}
59+
}
60+
61+
public void clearOffhand(Player p) {
62+
if (enabledHooks.containsKey(Hooks.MINECRAFTONENINE)) {
63+
MinecraftAbstraction minecraftHook = (MinecraftAbstraction)enabledHooks.get(Hooks.MINECRAFTONENINE);
64+
minecraftHook.clearOffhand(p);
65+
}
5566
}
5667

5768
public void setData(Block block, byte data) {
@@ -243,10 +254,17 @@ private void removeMoney(Player p, double money) {
243254
economy.withdrawPlayer(p, money);
244255
}
245256

246-
public void logBlock(Player p, Location loc, Material mat, byte damage) {
257+
public void logRemoval(Player p, Location loc, Material mat, byte damage) {
258+
if (enabledHooks.containsKey(Hooks.COREPROTECT)) {
259+
CoreProtectHook coreProtectHook = (CoreProtectHook)enabledHooks.get(Hooks.COREPROTECT);
260+
coreProtectHook.logRemoval(p.getName(), loc, mat, damage);
261+
}
262+
}
263+
264+
public void logPlacement(Player p, Location loc, Material mat, byte damage) {
247265
if (enabledHooks.containsKey(Hooks.COREPROTECT)) {
248266
CoreProtectHook coreProtectHook = (CoreProtectHook)enabledHooks.get(Hooks.COREPROTECT);
249-
coreProtectHook.logBlock(p.getName(), loc, mat, damage);
267+
coreProtectHook.logPlacement(p.getName(), loc, mat, damage);
250268
}
251269
}
252270

@@ -260,6 +278,7 @@ enum Hooks {
260278
COREPROTECT,
261279
WORLDGUARD,
262280
WORLDBORDER,
263-
MINECRAFTONEEIGHT
281+
MINECRAFTONEEIGHT,
282+
MINECRAFTONENINE
264283
}
265284
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ private void startGenBucket(Bucket bucket, Player p, Block block, BlockFace dire
120120
if (!bucket.isInfinite()) {
121121
if (!main.getHookUtils().getBypassPlayers().contains(p)) {
122122
if (removeItem.getAmount() <= 1) {
123-
p.setItemInHand(null);
123+
if (main.serverIsAfterOffhand() && !p.getItemInHand().equals(removeItem)) {
124+
main.getHookUtils().clearOffhand(p);
125+
} else {
126+
p.setItemInHand(null);
127+
}
124128
} else {
125129
removeItem.setAmount(removeItem.getAmount() - 1);
126130
}

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/timers/GenningTimer.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public void run() {
3838
if (blockCounter < limit && !(currentBlock.getY() > main.getConfigValues().getMaxY()) &&
3939
main.getHookUtils().canGenBlock(p, currentBlock.getLocation(), direction != BlockFace.UP && direction != BlockFace.DOWN) &&
4040
(main.getConfigValues().getIgnoredBlockList().contains(currentBlock.getType()) || (bucket.isPatch() && currentBlock.getType() == bucket.getBlockItem().getType()) ||
41+
(bucket.isDelete() && !main.getConfigValues().getDeleteBlacklist().contains(currentBlock.getType())) ||
4142
(bucket.getBlockItem().getType().hasGravity() && direction == BlockFace.DOWN && main.getConfigValues().addBlockUnderGravity() && currentBlock.getType() == main.getConfigValues().getGravityBlock().getType()))) {
4243
if (previousChunk == null || !previousChunk.equals(currentBlock.getChunk())) { // Check every chunk only once for efficiency.
4344
previousChunk = currentBlock.getChunk();
@@ -46,9 +47,10 @@ public void run() {
4647
return;
4748
}
4849
}
49-
main.getHookUtils().logBlock(p, currentBlock.getLocation(), currentBlock.getType(), currentBlock.getData());
50+
main.getHookUtils().logRemoval(p, currentBlock.getLocation(), currentBlock.getType(), currentBlock.getData());
51+
main.getHookUtils().logPlacement(p, currentBlock.getLocation(), bucket.getBlockItem().getType(), bucket.getBlockItem().getData().getData());
5052
currentBlock.setType(bucket.getBlockItem().getType());
51-
if (main.usingOldAPI()) {
53+
if (main.serverIsBeforeFlattening()) {
5254
main.getHookUtils().setData(currentBlock, bucket.getBlockItem().getData().getData());
5355
}
5456
if (bucket.getBlockItem().getType().hasGravity() && direction == BlockFace.DOWN && main.getConfigValues().addBlockUnderGravity()) {
@@ -57,7 +59,7 @@ public void run() {
5759
main.getHookUtils().canGenBlock(p, underblock.getLocation(), false) &&
5860
(main.getConfigValues().getIgnoredBlockList().contains(underblock.getType()) || (bucket.isPatch() && underblock.getType() == bucket.getBlockItem().getType()))) {
5961
underblock.setType(main.getConfigValues().getGravityBlock().getType());
60-
if (main.usingOldAPI()) {
62+
if (main.serverIsBeforeFlattening()) {
6163
main.getHookUtils().setData(underblock, main.getConfigValues().getGravityBlock().getData().getData());
6264
}
6365
}

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/utils/Bucket.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class Bucket {
1313
private Direction direction;
1414
private boolean byChunk;
1515
private boolean isPatch;
16+
private boolean isDelete;
1617
private ItemStack guiItem;
1718
private int slot;
1819
private double buyPrice;
@@ -134,6 +135,14 @@ void setRecipeAmount(int recipeAmount) {
134135
this.recipeAmount = recipeAmount;
135136
}
136137

138+
void setDelete(boolean delete) {
139+
isDelete = delete;
140+
}
141+
142+
public boolean isDelete() {
143+
return isDelete;
144+
}
145+
137146
@SuppressWarnings("unused")
138147
public enum Direction {
139148
ANY,

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/utils/ConfigValues.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public class ConfigValues {
1212

1313
private GenBucket main;
1414
private long blockSpeed;
15-
private List<Material> ignoredMaterials;
15+
private Set<Material> ignoredMaterials;
16+
private Set<Material> deleteBlacklist;
1617
private String giveMessage;
1718
private String recieveMessage;
1819
private String noPermissionCommandMessage;
@@ -66,6 +67,7 @@ public void loadBuckets() {
6667
}
6768
bucket.setByChunk(main.getConfig().getBoolean("items." + bucketId + ".block.count-by-chunk"));
6869
bucket.setPatch(main.getConfig().getBoolean("items." + bucketId + ".block.patch"));
70+
bucket.setDelete(main.getConfig().getBoolean("items." + bucketId + ".block.delete"));
6971
ItemStack guiItem = main.getUtils().itemFromString(main.getConfig().getString("items." + bucketId + ".gui.material").toUpperCase());
7072
itemMeta = guiItem.getItemMeta();
7173
itemMeta.setDisplayName(Utils.color(main.getConfig().getString("items." + bucketId + ".gui.name")));
@@ -113,13 +115,20 @@ public void loadBuckets() {
113115
else if (bps>20) bps = 20;
114116
blockSpeed = Math.round(1 / bps * 20);
115117

116-
ignoredMaterials = new ArrayList<>();
118+
ignoredMaterials = EnumSet.noneOf(Material.class);
117119
for (String rawMaterial : main.getConfig().getStringList("ignored-blocks")) {
118120
try {
119121
ignoredMaterials.add(Material.valueOf(rawMaterial));
120122
} catch (Exception ignored) {}
121123
}
122124

125+
deleteBlacklist = EnumSet.noneOf(Material.class);
126+
for (String rawMaterial : main.getConfig().getStringList("delete-blacklist")) {
127+
try {
128+
deleteBlacklist.add(Material.valueOf(rawMaterial));
129+
} catch (Exception ignored) {}
130+
}
131+
123132
giveMessage = Utils.color(main.getConfig().getString("messages.give"));
124133
recieveMessage = Utils.color(main.getConfig().getString("messages.receive"));
125134
noPermissionCommandMessage = Utils.color(main.getConfig().getString("messages.no-permission-command"));
@@ -157,7 +166,7 @@ public Long getBlockSpeedDelay() {
157166
return blockSpeed;
158167
}
159168

160-
public List<Material> getIgnoredBlockList() {
169+
public Set<Material> getIgnoredBlockList() {
161170
return ignoredMaterials;
162171
}
163172

@@ -352,4 +361,8 @@ public double getSpongeCheckRadius() {
352361
public boolean cancellingEnabled() {
353362
return main.getConfig().getBoolean("enable-cancelling");
354363
}
364+
365+
public Set<Material> getDeleteBlacklist() {
366+
return deleteBlacklist;
367+
}
355368
}

GenBucketPlugin/src/main/java/codes/biscuit/genbucket/utils/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ public void run() {
182182
}
183183
} catch (Exception ignored) {}
184184
}
185-
}.runTask(main);
185+
}.runTaskAsynchronously(main);
186186
}
187187

188188
public Map<Location, GenningTimer> getCurrentGens() {

0 commit comments

Comments
 (0)