From 35d012cf99b3fdf2280e66098384bb01c8d98f88 Mon Sep 17 00:00:00 2001 From: Xelara Networks Date: Sat, 13 Jun 2026 16:52:52 -0400 Subject: [PATCH] first add --- README.md | 0 pom.xml | 47 +++ .../dirtbagmc/dirtjoin/DirtJoinPlugin.java | 277 ++++++++++++++++++ .../dirtbagmc/dirtjoin/FirstJoinListener.java | 30 ++ src/main/resources/config.yml | 43 +++ src/main/resources/plugin.yml | 23 ++ target/DirtJoin-1.0-SNAPSHOT.jar | Bin 0 -> 9628 bytes .../dirtbagmc/dirtjoin/DirtJoinPlugin.class | Bin 0 -> 12598 bytes .../dirtjoin/FirstJoinListener.class | Bin 0 -> 1460 bytes target/classes/config.yml | 43 +++ target/classes/plugin.yml | 23 ++ target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 2 + .../compile/default-compile/inputFiles.lst | 2 + 14 files changed, 495 insertions(+) create mode 100644 README.md create mode 100644 pom.xml create mode 100644 src/main/java/com/dirtbagmc/dirtjoin/DirtJoinPlugin.java create mode 100644 src/main/java/com/dirtbagmc/dirtjoin/FirstJoinListener.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml create mode 100644 target/DirtJoin-1.0-SNAPSHOT.jar create mode 100644 target/classes/com/dirtbagmc/dirtjoin/DirtJoinPlugin.class create mode 100644 target/classes/com/dirtbagmc/dirtjoin/FirstJoinListener.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..655ce16 --- /dev/null +++ b/pom.xml @@ -0,0 +1,47 @@ + + 4.0.0 + + com.dirtbagmc + DirtJoin + 1.0-SNAPSHOT + jar + + DirtJoin + First join effects plugin for Paper + + + 21 + UTF-8 + + + + + papermc-repo + https://repo.papermc.io/repository/maven-public/ + + + + + + io.papermc.paper + paper-api + 1.21.1-R0.1-SNAPSHOT + provided + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 21 + + + + + diff --git a/src/main/java/com/dirtbagmc/dirtjoin/DirtJoinPlugin.java b/src/main/java/com/dirtbagmc/dirtjoin/DirtJoinPlugin.java new file mode 100644 index 0000000..2ad762d --- /dev/null +++ b/src/main/java/com/dirtbagmc/dirtjoin/DirtJoinPlugin.java @@ -0,0 +1,277 @@ +package com.dirtbagmc.dirtjoin; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.NamespacedKey; +import org.bukkit.Particle; +import org.bukkit.Registry; +import org.bukkit.Sound; +import org.bukkit.SoundCategory; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabExecutor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import org.bukkit.scheduler.BukkitTask; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.UUID; + +public class DirtJoinPlugin extends JavaPlugin implements TabExecutor { + + private final Map activeParticleTasks = new HashMap<>(); + private final LegacyComponentSerializer legacy = LegacyComponentSerializer.legacyAmpersand(); + + @Override + public void onEnable() { + saveDefaultConfig(); + Bukkit.getPluginManager().registerEvents(new FirstJoinListener(this), this); + + if (getCommand("dirtjoin") != null) { + getCommand("dirtjoin").setExecutor(this); + getCommand("dirtjoin").setTabCompleter(this); + } + + getLogger().info("DirtJoin enabled."); + } + + @Override + public void onDisable() { + for (BukkitTask task : activeParticleTasks.values()) { + if (task != null) { + task.cancel(); + } + } + activeParticleTasks.clear(); + } + + public void runFirstJoinEffects(Player player) { + FileConfiguration config = getConfig(); + + if (!config.getBoolean("enabled", true)) { + return; + } + + long delay = config.getLong("delay.join-effect-start-ticks", 20L); + + Bukkit.getScheduler().runTaskLater(this, () -> { + if (!player.isOnline()) { + return; + } + + handleBlindness(player); + handleSound(player); + handleTitle(player); + handleParticles(player); + }, delay); + } + + public void runFirstJoinEffectsNow(Player player) { + FileConfiguration config = getConfig(); + + if (!config.getBoolean("enabled", true)) { + return; + } + + if (!player.isOnline()) { + return; + } + + handleBlindness(player); + handleSound(player); + handleTitle(player); + handleParticles(player); + } + + private void handleBlindness(Player player) { + FileConfiguration config = getConfig(); + if (!config.getBoolean("blindness.enabled", true)) { + return; + } + + int duration = config.getInt("blindness.duration-ticks", 40); + int amplifier = config.getInt("blindness.amplifier", 0); + boolean ambient = config.getBoolean("blindness.ambient", false); + boolean particles = config.getBoolean("blindness.particles", false); + boolean icon = config.getBoolean("blindness.icon", false); + + player.addPotionEffect(new PotionEffect( + PotionEffectType.BLINDNESS, + duration, + amplifier, + ambient, + particles, + icon + )); + } + + private void handleSound(Player player) { + FileConfiguration config = getConfig(); + if (!config.getBoolean("sound.enabled", true)) { + return; + } + + String soundName = config.getString("sound.name", "entity.ender_dragon.death"); + float volume = (float) config.getDouble("sound.volume", 0.7); + float pitch = (float) config.getDouble("sound.pitch", 1.2); + + try { + Sound sound = Registry.SOUNDS.get(NamespacedKey.minecraft(soundName.toLowerCase(Locale.ROOT))); + if (sound != null) { + player.playSound(player.getLocation(), sound, SoundCategory.MASTER, volume, pitch); + } else { + player.playSound(player.getLocation(), soundName, SoundCategory.MASTER, volume, pitch); + } + } catch (Exception ex) { + getLogger().warning("Invalid sound in config: " + soundName); + } + } + + private void handleTitle(Player player) { + FileConfiguration config = getConfig(); + if (!config.getBoolean("title.enabled", true)) { + return; + } + + int fadeIn = config.getInt("title.fade-in-ticks", 10); + int stay = config.getInt("title.stay-ticks", 40); + int fadeOut = config.getInt("title.fade-out-ticks", 10); + + String main = config.getString("title.main", "&6Welcome to Dirtbag MC"); + String sub = config.getString("title.sub", "&eStart Your Grind"); + + player.showTitle(net.kyori.adventure.title.Title.title( + legacy.deserialize(main), + legacy.deserialize(sub), + net.kyori.adventure.title.Title.Times.times( + Duration.ofMillis(fadeIn * 50L), + Duration.ofMillis(stay * 50L), + Duration.ofMillis(fadeOut * 50L) + ) + )); + } + + private void handleParticles(Player player) { + FileConfiguration config = getConfig(); + if (!config.getBoolean("particles.enabled", true)) { + return; + } + + final Particle particle; + try { + particle = Particle.valueOf(config.getString("particles.type", "PORTAL").toUpperCase(Locale.ROOT)); + } catch (Exception ex) { + getLogger().warning("Invalid particle in config. Using PORTAL."); + return; + } + + int durationTicks = config.getInt("particles.duration-ticks", 60); + long intervalTicks = config.getLong("particles.interval-ticks", 5L); + int count = config.getInt("particles.count-per-burst", 40); + double offsetX = config.getDouble("particles.offset-x", 1.0); + double offsetY = config.getDouble("particles.offset-y", 1.0); + double offsetZ = config.getDouble("particles.offset-z", 1.0); + double extra = config.getDouble("particles.extra", 0.2); + + UUID uuid = player.getUniqueId(); + + BukkitTask oldTask = activeParticleTasks.remove(uuid); + if (oldTask != null) { + oldTask.cancel(); + } + + long repeats = Math.max(1L, durationTicks / Math.max(1L, intervalTicks)); + final long[] ran = {0}; + + BukkitTask task = Bukkit.getScheduler().runTaskTimer(this, () -> { + if (!player.isOnline()) { + BukkitTask active = activeParticleTasks.remove(uuid); + if (active != null) { + active.cancel(); + } + return; + } + + Location loc = player.getLocation().clone().add(0, 1, 0); + player.getWorld().spawnParticle(particle, loc, count, offsetX, offsetY, offsetZ, extra); + + ran[0]++; + if (ran[0] >= repeats) { + BukkitTask active = activeParticleTasks.remove(uuid); + if (active != null) { + active.cancel(); + } + } + }, 0L, intervalTicks); + + activeParticleTasks.put(uuid, task); + } + + public Component color(String text) { + return legacy.deserialize(text == null ? "" : text); + } + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length == 0) { + sender.sendMessage(color("&eUsage: /dirtjoin ")); + return true; + } + + if (args[0].equalsIgnoreCase("reload")) { + if (!sender.hasPermission("dirtjoin.reload")) { + sender.sendMessage(color(getConfig().getString("messages.no-permission", "&cYou do not have permission."))); + return true; + } + + reloadConfig(); + sender.sendMessage(color(getConfig().getString("messages.reloaded", "&aDirtJoin config reloaded."))); + return true; + } + + if (args[0].equalsIgnoreCase("test")) { + if (!sender.hasPermission("dirtjoin.test")) { + sender.sendMessage(color(getConfig().getString("messages.no-permission", "&cYou do not have permission."))); + return true; + } + + if (!(sender instanceof Player player)) { + sender.sendMessage(color("&cOnly players can use /dirtjoin test.")); + return true; + } + + runFirstJoinEffectsNow(player); + sender.sendMessage(color("&aTriggered DirtJoin effects on yourself.")); + return true; + } + + sender.sendMessage(color("&eUsage: /dirtjoin ")); + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + List completions = new ArrayList<>(); + + if (args.length == 1) { + if ("reload".startsWith(args[0].toLowerCase(Locale.ROOT))) { + completions.add("reload"); + } + if ("test".startsWith(args[0].toLowerCase(Locale.ROOT))) { + completions.add("test"); + } + } + + return completions; + } +} diff --git a/src/main/java/com/dirtbagmc/dirtjoin/FirstJoinListener.java b/src/main/java/com/dirtbagmc/dirtjoin/FirstJoinListener.java new file mode 100644 index 0000000..68b6fc1 --- /dev/null +++ b/src/main/java/com/dirtbagmc/dirtjoin/FirstJoinListener.java @@ -0,0 +1,30 @@ +package com.dirtbagmc.dirtjoin; + +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; + +public class FirstJoinListener implements Listener { + + private final DirtJoinPlugin plugin; + + public FirstJoinListener(DirtJoinPlugin plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onJoin(PlayerJoinEvent event) { + Player player = event.getPlayer(); + FileConfiguration config = plugin.getConfig(); + + boolean firstJoinOnly = config.getBoolean("first-join-only", true); + + if (firstJoinOnly && player.hasPlayedBefore()) { + return; + } + + plugin.runFirstJoinEffects(player); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..e70d9a7 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,43 @@ +enabled: true + +first-join-only: true + +title: + enabled: true + fade-in-ticks: 10 + stay-ticks: 40 + fade-out-ticks: 10 + main: "&6Welcome to Dirtbag MC" + sub: "&eStart Your Grind" + +blindness: + enabled: true + duration-ticks: 40 + amplifier: 0 + ambient: false + particles: false + icon: false + +sound: + enabled: true + name: "entity.ender_dragon.death" + volume: 0.7 + pitch: 1.2 + +particles: + enabled: true + type: "portal" + duration-ticks: 60 + interval-ticks: 5 + count-per-burst: 40 + offset-x: 1.0 + offset-y: 1.0 + offset-z: 1.0 + extra: 0.2 + +delay: + join-effect-start-ticks: 20 + +messages: + no-permission: "&cYou do not have permission." + reloaded: "&aDirtJoin config reloaded." diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..59c61da --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,23 @@ +name: DirtJoin +version: 1.0-SNAPSHOT +main: com.dirtbagmc.dirtjoin.DirtJoinPlugin +api-version: '1.21' +author: DirtbagMC +description: First join effects plugin + +commands: + dirtjoin: + description: Main DirtJoin command + usage: /dirtjoin + permission: dirtjoin.use + +permissions: + dirtjoin.use: + description: Allows use of DirtJoin commands + default: op + dirtjoin.reload: + description: Allows reloading DirtJoin config + default: op + dirtjoin.test: + description: Allows testing DirtJoin effects + default: op diff --git a/target/DirtJoin-1.0-SNAPSHOT.jar b/target/DirtJoin-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..458f22632d03868a2931d4901e135b5e6cbfc98b GIT binary patch literal 9628 zcmb7qbzGF&7WU8`Lkmbq4>dH>-Q6PH-O?x_9n#Vu-Q6W24Z_eMh)9EyL)VA*9FON- z@A<8^A_X^t-& zE=+PC2btuV#gLKK^R*HQ7`v!FTQVZmaOKt1-7-NHc%*1J2^?zpzPKZ5CwNh(OwduU zmJB%#SGlfQ*;E>@RDA3>JpHOfJ4OVm9A@v3kaoRxJ;2ZD{k{tLhv}I*+W)nH-#sw@ z^f0q_aWgTtv^V{~_!9o+`vYa;XzlP92>D-uWSM3`I(cw@0t*2A2(Odf3rlMU7B71{ zzt}OQUNH9SgO?EkX?ty>&4Ov89RW-3-vG8_&L#JGu>TNS_D&=9H~KGn zuu_of{dh1VU>k zJee#vyRJ)`YO~glOs?kFG_!Iu_ef(HRa7TXbl#V@2uDaipUxkl8M!o-o_h#OJpus0 z^3U;aNlt80>mzA~{Wo*>mWYM`zLh@e5Y!vD*x&3B|( zt%^eHL#l?=fF=Y)QhkfD+LR0R8#F%-Yx~8}JO4ZSDgK~Ss@GEDDJ|#w89w73uI~4G zH&+-&__m^MU6x(sVsx!US6JnyBlXPBxI7||+Sl3Kn9&&8@evK5q+;cez`%85dt;l( zBxa;NBdFA_FKvi##3ZF0Q(T?xP&V6;SYC^7OWYiE&qYyWCKkc@|?%3v- zAn$>bK;CTDtefW*z{?tX(*hl(`oyF2X0%*zy_zMFVm-MByCcOIwr$IxZCpN% z2c9(h_!mQuVTp29I_edN>4>FU6MXv!2^XcI+LL6)#8;1?KG%WBg^T!Badyd^douXO zGAj;y!pBpid|v9|L;QKrYY6GB%r(kn$z;Ld<^eN*h|`AQ8~%J=M6I0pEXyR!rt-WI zwmu=AVzcNiNqrR~O}T+7&$MMvTmH0LY58P(Mb_pm&Lte}KH1mIRGI3zAK?AO`MSXJ z_hDBt6K`cMGY2R5q(9SMKCVYn7w%H4TQSbq;h?SPID`;~WS0Z34x`$wPB=G@NGFnq zFLPJTaXvrU*(aJ?92`<=c^gO;KvtEl14`qr&vGh zB0WJ8hg{?c2@u3qWYTh5iRa-)?S9dg?B`n|l+Y`W>1 z1w6;~H?c@qBt%sg&;ea zp)j|Yjj1uJ5iPjKgQa9F@dI|p9iDnc9cp-m{<@`0fex;&K_vvW)qe;hxEsfGQd(

N{wU9DGOF0H^w^V| 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 N7AY-CNLfa;{{)T<;@|)P literal 0 HcmV?d00001 diff --git a/target/classes/com/dirtbagmc/dirtjoin/FirstJoinListener.class b/target/classes/com/dirtbagmc/dirtjoin/FirstJoinListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a43b4bfaa8a0a6735bd0eedcbf5dfa6d2334cdd5 GIT binary patch literal 1460 zcma)6TTdE66#j;btGI~uLdANiRx2Q|wOV_@+N#ww4PH_k9(Y?|z|m#aEQ^Uh#lO%u zla{7^=nv?RGCi|U#WWg1I5X$$xqkD_{JHw|8^8uOL-4_`A)q6O9)`hV^UO3XQ&x@r z;xR9|3_WW?3U{5sA5Y}_(2G6|AszkD8R8|oW|W2F7R_p{SBj^L=Q85ReV>W~VL^KTQcz_`avz@9@Y@D13*WhPdy2hzxo^!`I z@D>%gt;`I4RqnQo3={E0t}{@&!aZ+?P=yhUYKZE1h%tuwuKH@_-?C*zR2i0U=P!BY zhGV+ImPSQboS?9H%e!sP_F|kNQc)146p#hQO9xrp6*UA^BdT zR^-kXvuKfJC})>UD{neN>1|`cJrdMl@~#5cv;6BOOPsZ(;uS;c_E`7OFRMBWdIV*- z&At1gy!)Z(%rJg8g5=dA1H)3MS2qlyal#(w)I|HlI0jZA+o5ZgPIk@HHcYY44Pru# z=S5u*cpFmMuE%D=Zo0E(>kfKX?xQKo7I&yZ=+JIBC9XJ6B>WH3j3Omw=ne6KVUhkr z>K&n%Na;bONoGjfA>Bu7DER{{x%eI0rRQUi9Dtu>7y;V#A%bV5MO)rj!gJCn&dW*z zVi_y+P38PbaY0%$i%o=gli#2F%>Oe*vc_g!}*i literal 0 HcmV?d00001 diff --git a/target/classes/config.yml b/target/classes/config.yml new file mode 100644 index 0000000..e70d9a7 --- /dev/null +++ b/target/classes/config.yml @@ -0,0 +1,43 @@ +enabled: true + +first-join-only: true + +title: + enabled: true + fade-in-ticks: 10 + stay-ticks: 40 + fade-out-ticks: 10 + main: "&6Welcome to Dirtbag MC" + sub: "&eStart Your Grind" + +blindness: + enabled: true + duration-ticks: 40 + amplifier: 0 + ambient: false + particles: false + icon: false + +sound: + enabled: true + name: "entity.ender_dragon.death" + volume: 0.7 + pitch: 1.2 + +particles: + enabled: true + type: "portal" + duration-ticks: 60 + interval-ticks: 5 + count-per-burst: 40 + offset-x: 1.0 + offset-y: 1.0 + offset-z: 1.0 + extra: 0.2 + +delay: + join-effect-start-ticks: 20 + +messages: + no-permission: "&cYou do not have permission." + reloaded: "&aDirtJoin config reloaded." diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..59c61da --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,23 @@ +name: DirtJoin +version: 1.0-SNAPSHOT +main: com.dirtbagmc.dirtjoin.DirtJoinPlugin +api-version: '1.21' +author: DirtbagMC +description: First join effects plugin + +commands: + dirtjoin: + description: Main DirtJoin command + usage: /dirtjoin + permission: dirtjoin.use + +permissions: + dirtjoin.use: + description: Allows use of DirtJoin commands + default: op + dirtjoin.reload: + description: Allows reloading DirtJoin config + default: op + dirtjoin.test: + description: Allows testing DirtJoin effects + default: op diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..eebaa96 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Sat Jun 13 16:41:36 EDT 2026 +artifactId=DirtJoin +groupId=com.dirtbagmc +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..43c1899 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,2 @@ +com/dirtbagmc/dirtjoin/FirstJoinListener.class +com/dirtbagmc/dirtjoin/DirtJoinPlugin.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..18808bb --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,2 @@ +/home/bitnix/Desktop/DirtJoin/src/main/java/com/dirtbagmc/dirtjoin/DirtJoinPlugin.java +/home/bitnix/Desktop/DirtJoin/src/main/java/com/dirtbagmc/dirtjoin/FirstJoinListener.java