Skip to content

Commit 5cbd70d

Browse files
committed
Added back custom ming speed until 1.20.6 is mainstream
1 parent 9c2043c commit 5cbd70d

4 files changed

Lines changed: 317 additions & 35 deletions

File tree

src/main/java/codes/kooper/blockify/Blockify.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import codes.kooper.blockify.protocol.BlockPlaceAdapter;
99
import codes.kooper.blockify.protocol.ChunkLoadAdapter;
1010
import codes.kooper.blockify.protocol.PlayerInfoAdapter;
11+
import codes.kooper.blockify.utils.MiningUtils;
1112
import com.github.retrooper.packetevents.PacketEvents;
1213
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
1314
import lombok.Getter;
@@ -18,6 +19,7 @@
1819
public final class Blockify extends JavaPlugin {
1920
private StageManager stageManager;
2021
private BlockChangeManager blockChangeManager;
22+
private MiningUtils miningUtils;
2123

2224
@Override
2325
public void onLoad() {
@@ -35,6 +37,7 @@ public void onEnable() {
3537

3638
stageManager = new StageManager();
3739
blockChangeManager = new BlockChangeManager();
40+
miningUtils = new MiningUtils();
3841

3942
getServer().getPluginManager().registerEvents(new StageBoundListener(), this);
4043

src/main/java/codes/kooper/blockify/models/Audience.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package codes.kooper.blockify.models;
22

3+
import codes.kooper.blockify.Blockify;
34
import lombok.Getter;
45
import lombok.Setter;
56

7+
import java.util.HashMap;
8+
import java.util.Map;
69
import java.util.Set;
710
import java.util.UUID;
811

@@ -11,12 +14,14 @@
1114
public class Audience {
1215
private boolean arePlayersHidden = false;
1316
private final Set<UUID> players;
17+
private final Map<UUID, Float> miningSpeeds;
1418

1519
/**
1620
* @param players The players to show the block to
1721
*/
1822
public Audience(Set<UUID> players) {
1923
this.players = players;
24+
this.miningSpeeds = new HashMap<>();
2025
}
2126

2227
/**
@@ -26,6 +31,7 @@ public Audience(Set<UUID> players) {
2631
public Audience(Set<UUID> players, boolean arePlayersHidden) {
2732
this.players = players;
2833
this.arePlayersHidden = arePlayersHidden;
34+
this.miningSpeeds = new HashMap<>();
2935
}
3036

3137
/**
@@ -46,4 +52,34 @@ public Set<UUID> removePlayer(UUID player) {
4652
return players;
4753
}
4854

55+
/**
56+
* Sets the mining speed for a player
57+
* @param player The player
58+
* @param speed The speed
59+
*/
60+
public void setMiningSpeed(UUID player, float speed) {
61+
if (speed <= 0 || speed == 1) {
62+
Blockify.getInstance().getLogger().warning("Invalid mining speed for player " + player + ": " + speed);
63+
return;
64+
}
65+
miningSpeeds.put(player, speed);
66+
}
67+
68+
/**
69+
* Resets the mining speed for a player
70+
* @param player The player
71+
*/
72+
public void resetMiningSpeed(UUID player) {
73+
miningSpeeds.remove(player);
74+
}
75+
76+
/**
77+
* Gets the mining speed of a player
78+
* @param player The player
79+
* @return The mining speed
80+
*/
81+
public float getMiningSpeed(UUID player) {
82+
return miningSpeeds.getOrDefault(player, 1f);
83+
}
84+
4985
}

src/main/java/codes/kooper/blockify/protocol/BlockDigAdapter.java

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package codes.kooper.blockify.protocol;
22

33
import codes.kooper.blockify.Blockify;
4-
import codes.kooper.blockify.events.BlockifyBreakEvent;
54
import codes.kooper.blockify.events.BlockifyInteractEvent;
65
import codes.kooper.blockify.models.Stage;
76
import codes.kooper.blockify.models.View;
@@ -16,8 +15,6 @@
1615
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerBlockChange;
1716
import io.github.retrooper.packetevents.util.SpigotConversionUtil;
1817
import org.bukkit.Bukkit;
19-
import org.bukkit.GameMode;
20-
import org.bukkit.Material;
2118
import org.bukkit.block.data.BlockData;
2219
import org.bukkit.entity.Player;
2320

@@ -59,26 +56,11 @@ public void onPacketPlayReceive(PacketPlayReceiveEvent event) {
5956
return;
6057
}
6158

62-
if (actionType == DiggingAction.START_DIGGING) {
63-
if (canInstantBreak(player, blockData)) {
64-
actionType = DiggingAction.FINISHED_DIGGING;
65-
}
66-
}
67-
68-
// Block break functionality
69-
if (actionType == DiggingAction.FINISHED_DIGGING) {
70-
Bukkit.getScheduler().runTask(Blockify.getInstance(), () -> {
71-
// Call BlockifyBreakEvent
72-
BlockifyBreakEvent ghostBreakEvent = new BlockifyBreakEvent(player, position.toPosition(), blockData, view, view.getStage());
73-
ghostBreakEvent.callEvent();
74-
// If block is not cancelled, break the block, otherwise, revert the block
75-
if (!ghostBreakEvent.isCancelled()) {
76-
Blockify.getInstance().getBlockChangeManager().sendBlockChange(view.getStage(), view.getStage().getAudience(), position, Material.AIR.createBlockData());
77-
view.setBlock(position, Material.AIR.createBlockData());
78-
} else {
79-
player.sendBlockChange(position.toLocation(player.getWorld()), blockData);
80-
}
81-
});
59+
// Check if player has custom mining speed, if so, handle custom digging, else handle normal digging
60+
if (view.getStage().getAudience().getMiningSpeed(player.getUniqueId()) != 1) {
61+
Blockify.getInstance().getMiningUtils().handleCustomDigging(player, view, actionType, blockData, position);
62+
} else {
63+
Blockify.getInstance().getMiningUtils().handleNormalDigging(player, view, actionType, blockData, position);
8264
}
8365

8466
return;
@@ -88,15 +70,4 @@ public void onPacketPlayReceive(PacketPlayReceiveEvent event) {
8870
}
8971
}
9072

91-
/**
92-
* Check if player can instantly break block
93-
*
94-
* @param player Player who is digging
95-
* @param blockData BlockData of the block
96-
* @return boolean
97-
*/
98-
public boolean canInstantBreak(Player player, BlockData blockData) {
99-
return blockData.getDestroySpeed(player.getInventory().getItemInMainHand(), true) >= blockData.getMaterial().getHardness() * 30 || player.getGameMode() == GameMode.CREATIVE;
100-
}
101-
102-
}
73+
}

0 commit comments

Comments
 (0)