From c411e35ea2a088fd0d3e77d5ec391ef8e45810cf Mon Sep 17 00:00:00 2001 From: Xelara Networks Date: Tue, 9 Jun 2026 16:22:22 -0400 Subject: [PATCH] first commit --- README.md | 0 pom.xml | 47 ++++ .../com/bitnix/dirtsleep/DirtSleepPlugin.java | 225 ++++++++++++++++++ src/main/resources/config.yml | 31 +++ src/main/resources/plugin.yml | 21 ++ target/DirtSleep.jar | Bin 0 -> 8096 bytes .../bitnix/dirtsleep/DirtSleepPlugin.class | Bin 0 -> 10439 bytes target/classes/config.yml | 31 +++ target/classes/plugin.yml | 21 ++ target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 1 + .../compile/default-compile/inputFiles.lst | 1 + 12 files changed, 383 insertions(+) create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/com/bitnix/dirtsleep/DirtSleepPlugin.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml create mode 100644 target/DirtSleep.jar create mode 100644 target/classes/com/bitnix/dirtsleep/DirtSleepPlugin.class create mode 100644 target/classes/config.yml create mode 100644 target/classes/plugin.yml create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a0aea61 --- /dev/null +++ b/pom.xml @@ -0,0 +1,47 @@ + + 4.0.0 + + com.bitnix + DirtSleep + 1.0-SNAPSHOT + jar + + DirtSleep + Simple sleep vote / night speedup plugin for Paper + + + UTF-8 + 21 + + + + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.21.1-R0.1-SNAPSHOT + provided + + + + + DirtSleep + + + maven-compiler-plugin + 3.13.0 + + 21 + + + + + diff --git a/src/main/java/com/bitnix/dirtsleep/DirtSleepPlugin.java b/src/main/java/com/bitnix/dirtsleep/DirtSleepPlugin.java new file mode 100644 index 0000000..972bebb --- /dev/null +++ b/src/main/java/com/bitnix/dirtsleep/DirtSleepPlugin.java @@ -0,0 +1,225 @@ +package com.bitnix.dirtsleep; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.GameMode; +import org.bukkit.World; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; + +import java.util.*; +import java.util.stream.Collectors; + +public final class DirtSleepPlugin extends JavaPlugin implements TabExecutor { + + private final Map> worldVotes = new HashMap<>(); + + @Override + public void onEnable() { + saveDefaultConfig(); + + Objects.requireNonNull(getCommand("voteday")).setExecutor(this); + Objects.requireNonNull(getCommand("voteday")).setTabCompleter(this); + + Objects.requireNonNull(getCommand("dirtsleep")).setExecutor(this); + Objects.requireNonNull(getCommand("dirtsleep")).setTabCompleter(this); + } + + @Override + public void onDisable() { + worldVotes.clear(); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (command.getName().equalsIgnoreCase("voteday")) { + if (!(sender instanceof Player player)) { + sender.sendMessage(color("&cOnly players can use /voteday.")); + return true; + } + + handleVoteDay(player); + return true; + } + + if (command.getName().equalsIgnoreCase("dirtsleep")) { + if (args.length == 1 && args[0].equalsIgnoreCase("reload")) { + if (!sender.hasPermission("dirtsleep.admin")) { + sender.sendMessage(message("messages.no-permission")); + return true; + } + + reloadConfig(); + worldVotes.clear(); + sender.sendMessage(message("messages.reloaded")); + return true; + } + + sender.sendMessage(message("messages.usage")); + return true; + } + + return false; + } + + private void handleVoteDay(Player player) { + if (!getConfig().getBoolean("vote-day.enabled", true)) { + player.sendMessage(message("messages.disabled")); + return; + } + + World world = player.getWorld(); + + if (!isWorldEnabled(world)) { + player.sendMessage(message("messages.world-disabled")); + return; + } + + if (!canVoteInWorld(world)) { + player.sendMessage(message("messages.not-night")); + clearVotes(world); + return; + } + + String worldKey = world.getName().toLowerCase(Locale.ROOT); + Set votes = worldVotes.computeIfAbsent(worldKey, k -> new HashSet<>()); + + if (votes.contains(player.getUniqueId())) { + player.sendMessage(message("messages.already-voted")); + return; + } + + votes.add(player.getUniqueId()); + + int currentVotes = countValidVotes(world, votes); + int requiredVotes = getRequiredVotes(world); + + String voteMessage = message("messages.vote-added") + .replace("%player%", player.getName()) + .replace("%votes%", String.valueOf(currentVotes)) + .replace("%required%", String.valueOf(requiredVotes)) + .replace("%remaining%", String.valueOf(Math.max(0, requiredVotes - currentVotes))); + + broadcast(world, voteMessage); + + if (currentVotes >= requiredVotes) { + makeDay(world); + clearVotes(world); + broadcast(world, message("messages.vote-passed")); + } + } + + private void makeDay(World world) { + world.setTime(1000); + world.setStorm(false); + world.setThundering(false); + } + + private void clearVotes(World world) { + worldVotes.remove(world.getName().toLowerCase(Locale.ROOT)); + } + + private int countValidVotes(World world, Set votes) { + votes.removeIf(uuid -> { + Player p = Bukkit.getPlayer(uuid); + return p == null || !p.isOnline() || !p.getWorld().equals(world); + }); + return votes.size(); + } + + private boolean isWorldEnabled(World world) { + List worlds = getConfig().getStringList("vote-day.worlds"); + return worlds.isEmpty() || worlds.contains(world.getName()); + } + + private boolean canVoteInWorld(World world) { + if (world.getEnvironment() != World.Environment.NORMAL) { + return false; + } + + if (!getConfig().getBoolean("vote-day.only-during-night", true)) { + return true; + } + + long time = world.getTime(); + int nightStartsAt = getConfig().getInt("vote-day.night-starts-at", 12542); + return time >= nightStartsAt && time < 24000; + } + + private int getRequiredVotes(World world) { + int eligible = 0; + boolean excludeBypass = getConfig().getBoolean("vote-day.exclude-bypass", true); + + for (Player player : world.getPlayers()) { + if (player.getGameMode() == GameMode.SPECTATOR) { + continue; + } + + if (excludeBypass && player.hasPermission("dirtsleep.bypass")) { + continue; + } + + eligible++; + } + + if (eligible <= 0) { + return 1; + } + + String raw = getConfig().getString("vote-day.required-votes", "50%"); + if (raw == null) { + return 1; + } + + raw = raw.trim(); + + if (raw.endsWith("%")) { + String percentText = raw.substring(0, raw.length() - 1).trim(); + try { + double percent = Double.parseDouble(percentText); + int required = (int) Math.ceil(eligible * (percent / 100.0)); + return Math.max(1, required); + } catch (NumberFormatException ignored) { + return 1; + } + } + + try { + return Math.max(1, Integer.parseInt(raw)); + } catch (NumberFormatException ignored) { + return 1; + } + } + + private void broadcast(World world, String message) { + for (Player player : world.getPlayers()) { + player.sendMessage(message); + } + } + + private String message(String path) { + String prefix = color(getConfig().getString("messages.prefix", "&8[&bDirtSleep&8] &7")); + String text = getConfig().getString(path, ""); + return color(text.replace("%prefix%", prefix)); + } + + private String color(String text) { + return ChatColor.translateAlternateColorCodes('&', text == null ? "" : text); + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + if (command.getName().equalsIgnoreCase("dirtsleep")) { + if (args.length == 1) { + return Arrays.asList("reload").stream() + .filter(s -> s.toLowerCase(Locale.ROOT).startsWith(args[0].toLowerCase(Locale.ROOT))) + .collect(Collectors.toList()); + } + } + + return Collections.emptyList(); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..1b0313f --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,31 @@ +vote-day: + enabled: true + + # Empty list = all worlds + worlds: [] + + # Only allow /voteday during night + only-during-night: true + + # Tick time where night starts + night-starts-at: 12542 + + # Required votes before changing to day + # Examples: "1", "2", "50%", "75%" + required-votes: "50%" + + # Ignore players with this permission from vote requirement: + # dirtsleep.bypass + exclude-bypass: true + +messages: + prefix: "&8[&bDirtSleep&8] &7" + vote-added: "%prefix%&e%player% &7voted for day. &f(%votes%/%required% votes, %remaining% remaining)" + vote-passed: "%prefix%&aVote passed! Skipping to day." + already-voted: "%prefix%&cYou already voted." + not-night: "%prefix%&cYou can only use this at night." + disabled: "%prefix%&cVote day is disabled." + world-disabled: "%prefix%&cVote day is disabled in this world." + reloaded: "%prefix%&aConfig reloaded." + no-permission: "%prefix%&cYou do not have permission." + usage: "%prefix%&7Use: &f/dirtsleep reload" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..3968048 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,21 @@ +name: DirtSleep +version: 1.0 +main: com.bitnix.dirtsleep.DirtSleepPlugin +api-version: '1.21' +author: bitnix +description: Simple vote day plugin +commands: + voteday: + description: Vote to make it day + usage: /voteday + dirtsleep: + description: DirtSleep admin command + usage: /dirtsleep reload + permission: dirtsleep.admin +permissions: + dirtsleep.admin: + description: Allows reloading DirtSleep + default: op + dirtsleep.bypass: + description: Excludes player from required vote calculations + default: false diff --git a/target/DirtSleep.jar b/target/DirtSleep.jar new file mode 100644 index 0000000000000000000000000000000000000000..91bcab9e213ee28155689df3b98296de68dbf12c GIT binary patch literal 8096 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

|r`%9Sfa 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 literal 0 HcmV?d00001 diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..1b0313f --- /dev/null +++ b/target/classes/config.yml @@ -0,0 +1,31 @@ +vote-day: + enabled: true + + # Empty list = all worlds + worlds: [] + + # Only allow /voteday during night + only-during-night: true + + # Tick time where night starts + night-starts-at: 12542 + + # Required votes before changing to day + # Examples: "1", "2", "50%", "75%" + required-votes: "50%" + + # Ignore players with this permission from vote requirement: + # dirtsleep.bypass + exclude-bypass: true + +messages: + prefix: "&8[&bDirtSleep&8] &7" + vote-added: "%prefix%&e%player% &7voted for day. &f(%votes%/%required% votes, %remaining% remaining)" + vote-passed: "%prefix%&aVote passed! Skipping to day." + already-voted: "%prefix%&cYou already voted." + not-night: "%prefix%&cYou can only use this at night." + disabled: "%prefix%&cVote day is disabled." + world-disabled: "%prefix%&cVote day is disabled in this world." + reloaded: "%prefix%&aConfig reloaded." + no-permission: "%prefix%&cYou do not have permission." + usage: "%prefix%&7Use: &f/dirtsleep reload" diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..3968048 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,21 @@ +name: DirtSleep +version: 1.0 +main: com.bitnix.dirtsleep.DirtSleepPlugin +api-version: '1.21' +author: bitnix +description: Simple vote day plugin +commands: + voteday: + description: Vote to make it day + usage: /voteday + dirtsleep: + description: DirtSleep admin command + usage: /dirtsleep reload + permission: dirtsleep.admin +permissions: + dirtsleep.admin: + description: Allows reloading DirtSleep + default: op + dirtsleep.bypass: + description: Excludes player from required vote calculations + default: false diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..abcd92c --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Tue Jun 09 16:14:06 EDT 2026 +artifactId=DirtSleep +groupId=com.bitnix +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..52b0b9a --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1 @@ +com/bitnix/dirtsleep/DirtSleepPlugin.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..3dca2aa --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1 @@ +/home/bitnix/Desktop/DirtSleep/src/main/java/com/bitnix/dirtsleep/DirtSleepPlugin.java