Skip to content

Commit

Permalink
Merge pull request #8 from project-poseidon-plugin-devs/patch-1
Browse files Browse the repository at this point in the history
Fix altering blocks in a claimed chunk when standing outside the claim
  • Loading branch information
RhysB authored Nov 1, 2024
2 parents 5d1605b + ac34813 commit b39d772
Showing 1 changed file with 16 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@

import com.johnymuffin.jvillage.beta.JVillage;
import com.johnymuffin.jvillage.beta.models.Village;
import com.johnymuffin.jvillage.beta.player.VPlayer;
import com.johnymuffin.jvillage.beta.models.chunk.VChunk;
import org.bukkit.block.Block;
import org.bukkit.craftbukkit.entity.CraftPlayer;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
Expand All @@ -29,7 +30,7 @@ public JVPlayerAlterListener(JVillage plugin) {
//Lowest priority so that other plugins can cancel this event
@EventHandler(ignoreCancelled = true, priority = Event.Priority.Lowest)
public void onBlockPlaceEvent(final BlockPlaceEvent event) {
if (isAuthorizedToAlter(event.getPlayer())) {
if (isAuthorizedToAlter(event.getPlayer(), event.getBlock())) {
return;
}

Expand All @@ -43,7 +44,7 @@ public void onBlockPlaceEvent(final BlockPlaceEvent event) {
//Lowest priority so that other plugins can cancel this event
@EventHandler(ignoreCancelled = true, priority = Event.Priority.Lowest)
public void onBlockBreakEvent(final BlockBreakEvent event) {
if (isAuthorizedToAlter(event.getPlayer())) {
if (isAuthorizedToAlter(event.getPlayer(), event.getBlock())) {
return;
}

Expand All @@ -60,7 +61,7 @@ public void onBlockIgniteEvent(final BlockIgniteEvent event) {
return;
}

if (isAuthorizedToAlter(event.getPlayer())) {
if (isAuthorizedToAlter(event.getPlayer(), event.getBlock())) {
return;
}

Expand All @@ -79,7 +80,7 @@ public void onPaintingPlace(final PaintingPlaceEvent event) {

Player player = event.getPlayer();

if (isAuthorizedToAlter(player)) {
if (isAuthorizedToAlter(player, event.getBlock())) {
return;
}

Expand All @@ -103,7 +104,7 @@ public void onPaintingDestruction(final PaintingBreakEvent preEvent) {

Player player = (Player) event.getRemover();

if (isAuthorizedToAlter(player)) {
if (isAuthorizedToAlter(player, event.getPainting().getLocation().getBlock())) {
return;
}

Expand All @@ -119,7 +120,7 @@ public void onPlayerBucketEmptyEvent(PlayerBucketEmptyEvent event) {
return;
}

if (isAuthorizedToAlter(event.getPlayer())) {
if (isAuthorizedToAlter(event.getPlayer(), event.getBlockClicked())) {
return;
}

Expand All @@ -130,12 +131,12 @@ public void onPlayerBucketEmptyEvent(PlayerBucketEmptyEvent event) {
}

@EventHandler(ignoreCancelled = true, priority = Event.Priority.Lowest)
public void onPlayerBucketEmptyEvent(PlayerBucketFillEvent event) {
public void onPlayerBucketFillEvent(PlayerBucketFillEvent event) {
if (event.isCancelled()) {
return;
}

if (isAuthorizedToAlter(event.getPlayer())) {
if (isAuthorizedToAlter(event.getPlayer(), event.getBlockClicked())) {
return;
}

Expand All @@ -147,21 +148,16 @@ public void onPlayerBucketEmptyEvent(PlayerBucketFillEvent event) {


//Method utilized to determine if a player is authorized to alter a block based on their permissions and the village they are in
private boolean isAuthorizedToAlter(Player player) {
private boolean isAuthorizedToAlter(Player player, Block block) {
if (isAuthorized(player, "jvillage.admin.bypass")) {
return true;
}

VPlayer vPlayer = plugin.getPlayerMap().getPlayer(player.getUniqueId());
if (!vPlayer.isLocatedInVillage()) {
return true;
VChunk vChunk = new VChunk(block.getLocation());
if(plugin.isClaimed(vChunk)){
Village village = plugin.getVillageAtLocation(vChunk);
return village.canPlayerAlter(player);
}
Village locatedVillage = vPlayer.getCurrentlyLocatedIn();
if (locatedVillage.canPlayerAlter(player)) {
return true;
}

return false;
return true;
}

}

0 comments on commit b39d772

Please sign in to comment.