Skip to content

Instantly share code, notes, and snippets.

@TheMeinerLP
Created October 8, 2025 13:44
Show Gist options
  • Select an option

  • Save TheMeinerLP/0f9efab5e7173e1aa36b187463b7a595 to your computer and use it in GitHub Desktop.

Select an option

Save TheMeinerLP/0f9efab5e7173e1aa36b187463b7a595 to your computer and use it in GitHub Desktop.
package net.onelitefeather.antiredstoneclockremastered.listener;
import jakarta.inject.Inject;
import net.kyori.adventure.text.Component;
import net.onelitefeather.antiredstoneclockremastered.AntiRedstoneClockRemastered;
import net.onelitefeather.antiredstoneclockremastered.service.api.RedstoneClockService;
import net.onelitefeather.antiredstoneclockremastered.service.UpdateService;
import net.onelitefeather.antiredstoneclockremastered.utils.Constants;
import org.bukkit.block.BlockFace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
public final class PlayerListener implements Listener {
private final RedstoneClockService redstoneClockService;
private final UpdateService updateService;
@Inject
public PlayerListener(RedstoneClockService redstoneClockService, UpdateService updateService) {
this.redstoneClockService = redstoneClockService;
this.updateService = updateService;
}
@EventHandler
private void onPlayerJoinEvent(PlayerJoinEvent playerJoinEvent) {
var player = playerJoinEvent.getPlayer();
if (player.isOp() || (player.hasPermission(Constants.PERMISSION_NOTIFY) && !player.hasPermission(Constants.DISABLE_DONATION_NOTIFY))) {
player.sendMessage(Component.translatable("antiredstoneclockremastered.notify.donation.player").arguments(AntiRedstoneClockRemastered.PREFIX));
}
if (player.isOp() || player.hasPermission(Constants.PERMISSION_NOTIFY_UPDATE)) {
this.updateService.notifyPlayer(player);
}
}
@EventHandler(priority = EventPriority.HIGHEST)
private void onBlockBreak(BlockBreakEvent blockBreakEvent) {
var block = blockBreakEvent.getBlock();
recheck:
if (Constants.REDSTONE_ITEMS.contains(block.getType())) {
this.redstoneClockService.removeClockByLocation(block.getLocation());
} else {
block = block.getRelative(BlockFace.UP);
break recheck;
}
}
@EventHandler(priority = EventPriority.HIGHEST)
private void onSignBlockBreak(BlockBreakEvent blockBreakEvent) {
var block = blockBreakEvent.getBlock();
var hasKey = block.hasMetadata(Constants.META_KEY_ARCR_SIGN);
if (hasKey) {
blockBreakEvent.setDropItems(false);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment