From 1dc1c19c7a359f12344a8a8bb34efad96515fd71 Mon Sep 17 00:00:00 2001 From: diademiemi Date: Tue, 2 Apr 2024 01:40:51 -0400 Subject: [PATCH] Release 1.0, this is what was used on the server on 2024-04-01 --- .github/workflows/build-release.yml | 70 +++ .github/workflows/ci.yml | 42 ++ README.md | 55 +++ build.gradle | 14 +- .../aprilfools2024/AprilFools2024.java | 10 + .../command/CommandHandler.java | 418 ++++++++++++++++++ .../aprilfools2024/dialogs/DgFirstJoin1.java | 68 +++ .../aprilfools2024/dialogs/DgFirstJoin2.java | 87 ++++ .../aprilfools2024/dialogs/DgFirstJoin3.java | 85 ++++ .../aprilfools2024/dialogs/DgFirstJoin4.java | 90 ++++ .../aprilfools2024/dialogs/DgFirstJoin5.java | 78 ++++ .../aprilfools2024/dialogs/DgFirstJoin6.java | 158 +++++++ .../aprilfools2024/dialogs/DgFirstJoin7.java | 50 +++ .../aprilfools2024/dialogs/DgFirstJoin8.java | 65 +++ .../dialogs/DgFirstJoinFail.java | 60 +++ .../dialogs/DgGlobalCaptcha.java | 241 ++++++++++ .../dialogs/DgGlobalCaptchaFail.java | 47 ++ .../dialogs/DgGlobalCaptchaSuccess.java | 45 ++ .../dialogs/DgGlobalCelestialClock.java | 58 +++ .../DgGlobalGlutenRelatedEstablishment.java | 62 +++ .../dialogs/DgGlobalHasScienceGoneTooFar.java | 57 +++ .../dialogs/DgGlobalHaveYouSeenThisShark.java | 82 ++++ .../dialogs/DgGlobalMarbleHacks.java | 58 +++ .../dialogs/DgGlobalMesothelioma.java | 59 +++ .../dialogs/DgGlobalStriders.java | 58 +++ .../dialogs/DgGlobalVillagersHateHim.java | 58 +++ .../dialogs/DgPopupBlocksPlaced.java | 57 +++ .../dialogs/DgPopupCartographyTable.java | 91 ++++ .../dialogs/DgPopupChatMessages.java | 57 +++ .../dialogs/DgPopupDistanceByBoat.java | 58 +++ .../dialogs/DgPopupDistanceFlown.java | 67 +++ .../dialogs/DgPopupDistanceWalked.java | 58 +++ .../aprilfools2024/dialogs/DgPopupJumps.java | 60 +++ .../dialogs/DgPopupLowHealth.java | 91 ++++ .../dialogs/DgPopupMusicDiscs.java | 63 +++ .../dialogs/DgPopupRedstonePlaced.java | 62 +++ .../dialogs/DgPopupTimeCrouched.java | 97 ++++ .../dialogs/DgPopupWalkedOnWater.java | 90 ++++ .../listener/EventListener.java | 226 ++++++++++ .../listener/RandomScheduler.java | 67 +++ .../listener/TrackingListener.java | 9 +- .../aprilfools2024/player/TrackedPlayer.java | 57 ++- .../player/TrackedPlayerUtil.java | 133 ++++++ src/main/resources/plugin.yml | 8 + 44 files changed, 3517 insertions(+), 9 deletions(-) create mode 100755 .github/workflows/build-release.yml create mode 100644 .github/workflows/ci.yml create mode 100644 README.md create mode 100644 src/main/java/me/diademiemi/aprilfools2024/command/CommandHandler.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin1.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin2.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin3.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin4.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin5.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin6.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin7.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin8.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoinFail.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptcha.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaFail.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaSuccess.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCelestialClock.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalGlutenRelatedEstablishment.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHasScienceGoneTooFar.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHaveYouSeenThisShark.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMarbleHacks.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMesothelioma.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalStriders.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalVillagersHateHim.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupBlocksPlaced.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupCartographyTable.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupChatMessages.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceByBoat.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceFlown.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceWalked.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupJumps.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupLowHealth.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupMusicDiscs.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupRedstonePlaced.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupTimeCrouched.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupWalkedOnWater.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/listener/EventListener.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/listener/RandomScheduler.java create mode 100644 src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayerUtil.java diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml new file mode 100755 index 0000000..db49196 --- /dev/null +++ b/.github/workflows/build-release.yml @@ -0,0 +1,70 @@ +# This workflow will build a Java project with Gradle +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle + +name: Build JAR for release + +on: + release: + types: [published] + workflow_dispatch: + +jobs: + build-and-push: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - arch: amd64 + qemu_arch: x86_64 + tag_suffix: '' + latest_tag: latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Cache Gradle packages + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build native image with Gradle + run: ./gradlew build + + - name: Upload JAR as an artifact + uses: actions/upload-artifact@v2 + with: + name: "AprilFools2024 Jar" + path: build/libs/AprilFools2024-*.jar + if-no-files-found: error + + - name: Publish package + uses: gradle/gradle-build-action@v2 + # Only run on amd64 + if: matrix.arch == 'amd64' + with: + arguments: publish + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload STLs to release + uses: svenstaro/upload-release-action@v2 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: "build/libs/AprilFools2024-*.jar" + tag: ${{ github.ref }} + overwrite: true + file_glob: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fc8c16a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,42 @@ +name: Build and Push Packages + +on: + push: + branches: + - 'main' + +jobs: + build-and-push: + runs-on: ubuntu-latest + strategy: + matrix: + include: + - arch: amd64 + qemu_arch: x86_64 + tag_suffix: '' + latest_tag: latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Cache Gradle packages + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build native image with Gradle + run: ./gradlew build diff --git a/README.md b/README.md new file mode 100644 index 0000000..8324a58 --- /dev/null +++ b/README.md @@ -0,0 +1,55 @@ +# April Fools 2024 + +This is a simple quick and dirty plugin making use of my `InvUILib` library which you can find here [diademiemi/InvUILib](https://github.com/diademiemi/InvUILib). + +This was made for Queercraft's April Fools 2024 event. The joke was that the server needed extra security, which costed too much. This would explain the "CAPTCHA" which this plugin adds, along with the "popup ads". + +## Installation +You can get a copy of the plugin from the [releases page](https://github.com/Queercraft/AprilFools2024/releases). +The plugin requires `InvUILib` to be installed on your server. You can get a copy of `InvUILib` from the [InvUILib releases page](https://github.com/diademiemi/InvUILib/releases). + +## Usage +When a player joins with the `aprilfools2024.track` permission, they will be tracked by the plugin. This will include some of their actions. + +Upon a tracked player joining, they will be greeted with a popup prompting them to accept cookies, a terms of service, privacy policy, EULA and complete a CAPTCHA. These are all humorous and do not actually do anything. +When accepting the cookie, the player will be given a cookie item. This item is purely cosmetic and does not do anything, it includes special lore because people love their collectible items from events... + +All these are tracked in a jsonData field in the player's data, this is to track whether they've already received a reward or seen a popup. + +Certain tasks will be tracked. For example, placing 64 blocks gives you a popup to "Renew your Minecraft license". Upon getting this popup, a boolean is stored in the player's data to prevent them from getting the popup again. + +The plugin also includes a "popup ad" feature. This is a simple scheduler which shows a random popup to every online player once every 10-30 minutes (random interval). + +## Commands +- `/aprilfools2024 get ` - Get a flag from a player's data. +- `/aprilfools2024 setbool ` - Set a boolean flag in a player's data. +- `/aprilfools2024 setint ` - Set an integer flag in a player's data. +- `/aprilfools2024 setstring ` - Set a string flag in a player's data. +- `/aprilfools2024 clear ` - Reset a player's data. +- `/aprilfools2024 save` - Save the plugin's data to data.yml. +- `/aprilfools2024 test ` - Test a popup on a player. + +## Permissions +- `aprilfools2024.track` - Allows a player to be tracked by the plugin. +- `aprilfools2024.admin` - Allows a player to use the commands. + +## the funny bit + +ok so im done writing as if this is a serious plugin lmfao. this shit SUCKS. the code is abysmal and was written on a huge time crunch bcs i never EVER start on time with any project with a deadline. + +you can use this as inspo for how to use InvUILib, but for the love of god, the code sucks. + +gonna write some interesting files + +[DgFirstJoin1](src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin1.java) contains the code for the initial login prompt. this i wrote when i still thought i had time, so its a bit nicer. There are 8 of these DgFirstJoin files. +[DgFirstJoin6](src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin6.java) contins an easy captcha (BOOBIES!!!). It keeps calling itself until the proper digits are entered. + +[DgGlobalCaptcha](src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptcha.java) is the file that shows the FUCKED UP captcha. this is 15 digits. wanna know the fun bit? after 8 digits, the keypad shuffles itself. its awful!!!!!! +Wanna shut someone up? `/aprilfools2024 test GlobalCaptcha`. Wanna halve your playerbase? `/aprilfools2024 test * GlobalCaptcha`. Bam. Now everyones pissed. I LOVED it when this randomly happened. God this is the best fucking file I've ever written. +OH PLEASE DONT LOOK AT THE CODE ITS SO UGLY BUT I MADE IT IN LIKE 5 MINUTES BCS I HAD TO RUSH. + +boring files incoming!!! + +[TrackedPlayer](src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayer.java) contains the data structure for the players. This is what gets saved to disk and makes it persistent. Getting this right at first made it easy to add new dialogs. + +[EventListener](src/main/java/me/diademiemi/aprilfools2024/event/EventListener.java) contains the tracking code that actually sees what players do like tracking stats, block places, movement. Based on this it shows the popups dependent on booleans and sets those booleans. \ No newline at end of file diff --git a/build.gradle b/build.gradle index abb18d5..8383933 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { } group = 'me.diademiemi' -version = '1.0-SNAPSHOT' +version = '1.0' repositories { mavenCentral() @@ -15,19 +15,23 @@ repositories { name = "sonatype" url = "https://oss.sonatype.org/content/groups/public/" } + maven { + url = uri("https://repo.opencollab.dev/main/") + } maven { name = "invuilib" url = uri("https://maven.pkg.github.com/diademiemi/invuilib") credentials { - username = System.getenv("GITHUB_ACTOR") - password = System.getenv("GITHUB_TOKEN") + username = "$System.env.GITHUB_ACTOR" + password = "$System.env.GITHUB_TOKEN" } } } dependencies { - compileOnly "org.spigotmc:spigot-api:1.13-R0.1-SNAPSHOT" - compileOnly "me.diademiemi:invuilib:1.0-SNAPSHOT" + compileOnly "org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT" + compileOnly "me.diademiemi:invuilib:0.1" + compileOnly "org.geysermc.geyser:api:2.2.0-SNAPSHOT" } def targetJavaVersion = 8 diff --git a/src/main/java/me/diademiemi/aprilfools2024/AprilFools2024.java b/src/main/java/me/diademiemi/aprilfools2024/AprilFools2024.java index 9dcae88..93042e3 100644 --- a/src/main/java/me/diademiemi/aprilfools2024/AprilFools2024.java +++ b/src/main/java/me/diademiemi/aprilfools2024/AprilFools2024.java @@ -1,5 +1,8 @@ package me.diademiemi.aprilfools2024; +import me.diademiemi.aprilfools2024.command.CommandHandler; +import me.diademiemi.aprilfools2024.listener.EventListener; +import me.diademiemi.aprilfools2024.listener.RandomScheduler; import me.diademiemi.aprilfools2024.listener.TrackingListener; import me.diademiemi.aprilfools2024.player.TrackedPlayer; import org.bukkit.configuration.serialization.ConfigurationSerialization; @@ -30,6 +33,13 @@ public void onEnable() { // Register the tracking listener (join and quit) getServer().getPluginManager().registerEvents(new TrackingListener(), this); + getServer().getPluginManager().registerEvents(new EventListener(), this); + + // Register CommandHandler + getCommand("aprilfools2024").setExecutor(new CommandHandler()); + + // Schedule the random global dialogues + RandomScheduler.scheduleRandom(); } diff --git a/src/main/java/me/diademiemi/aprilfools2024/command/CommandHandler.java b/src/main/java/me/diademiemi/aprilfools2024/command/CommandHandler.java new file mode 100644 index 0000000..9326f0d --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/command/CommandHandler.java @@ -0,0 +1,418 @@ +package me.diademiemi.aprilfools2024.command; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.AprilFools2024IO; +import me.diademiemi.aprilfools2024.listener.RandomScheduler; +import me.diademiemi.aprilfools2024.dialogs.*; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * Very ugly CommandHandler with no tab completion. + * I would've made this better but... honestly no i wouldn't have, it's just for an april fools joke + * You think im putting EFFORT into this??? + */ +public class CommandHandler implements CommandExecutor, TabCompleter { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (sender.hasPermission("aprilfools2024.admin")) { + if (args.length == 0) { + sender.sendMessage("Usage: /aprilfools2024 unset/setbool/setstring/setint "); + return true; + } + + switch (args[0].toLowerCase()) { + case "unset": + return unsetCommand(sender, args); + case "setbool": + return setBoolCommand(sender, args); + case "setstring": + return setStringCommand(sender, args); + case "setint": + return setIntCommand(sender, args); + case "get": + return getCommand(sender, args); + case "clear": + return clearCommand(sender, args); + case "save": + AprilFools2024IO.writeConfig(); + sender.sendMessage("Data saved."); + return true; + case "global": + RandomScheduler.showToAll(); + return true; + case "test": + return testCommand(sender, args); + default: + sender.sendMessage("Unknown subcommand. Usage: /aprilfools2024 unset/set "); + return true; + } + } else { + sender.sendMessage("You do not have permission to use this command."); + return true; + } + + } + + public boolean testCommand(CommandSender sender, String[] args) { + if (args.length < 3) { + sender.sendMessage("Usage: /aprilfools2024 test "); + return true; + } + + // Get player by name or UUID (args[1]) here + // If args[1] == all, get all players + ArrayList players = new ArrayList<>(); + if (!Objects.equals(args[1], "*")) { + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + players.add(player); + } else { + players.addAll(AprilFools2024.getPlugin().getServer().getOnlinePlayers()); + } + + + for (Player p : players) { + switch (args[2].toLowerCase()) { + case "firstjoin1": + new DgFirstJoin1().show(p); + break; + case "firstjoin2": + new DgFirstJoin2().show(p); + break; + case "firstjoin3": + new DgFirstJoin3().show(p); + break; + case "firstjoin4": + new DgFirstJoin4().show(p); + break; + case "firstjoin5": + new DgFirstJoin5().show(p); + break; + case "firstjoin6": + new DgFirstJoin6().show(p); + break; + case "firstjoin7": + new DgFirstJoin7().show(p); + break; + case "firstjoin8": + new DgFirstJoin8().show(p); + break; + case "globalcaptcha": + new DgGlobalCaptcha().show(p); + break; + case "globalcelestialclock": + new DgGlobalCelestialClock().show(p); + break; + case "globalglutenrelatedestablishment": + new DgGlobalGlutenRelatedEstablishment().show(p); + break; + case "globalhassciencegonetoofar": + new DgGlobalHasScienceGoneTooFar().show(p); + break; + case "globalhaveyouseenthisshark": + new DgGlobalHaveYouSeenThisShark().show(p); + break; + case "globalmarblehacks": + new DgGlobalMarbleHacks().show(p); + break; + case "globalmesothelioma": + new DgGlobalMesothelioma().show(p); + break; + case "globalstriders": + new DgGlobalStriders().show(p); + break; + case "globalvillagershatehim": + new DgGlobalVillagersHateHim().show(p); + break; + case "firstjoinfail": + new DgFirstJoinFail().show(p); + break; + case "popupblocksplaced": + new DgPopupBlocksPlaced().show(p); + break; + case "popupcartographytable": + new DgPopupCartographyTable().show(p); + break; + case "popupchatmessages": + new DgPopupChatMessages().show(p); + break; + case "popupdistancebyboat": + new DgPopupDistanceByBoat().show(p); + break; + case "popupdistanceflown": + new DgPopupDistanceFlown().show(p); + break; + case "popupdistancewalked": + new DgPopupDistanceWalked().show(p); + break; + case "popupjumps": + new DgPopupJumps().show(p); + break; + case "popuplowhealth": + new DgPopupLowHealth().show(p); + break; + case "popupmusicdiscs": + new DgPopupMusicDiscs().show(p); + break; + case "popupredstoneplaced": + new DgPopupRedstonePlaced().show(p); + break; + case "popuptimecrouched": + new DgPopupTimeCrouched().show(p); + break; + case "popupwalkedonwater": + new DgPopupWalkedOnWater().show(p); + break; + default: + sender.sendMessage("Unknown dialog."); + return true; + } + + } + + return true; + } + + public boolean clearCommand(CommandSender sender, String[] args) { + if (args.length < 2) { + sender.sendMessage("Usage: /aprilfools2024 clear "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Clear the player's data + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + trackedPlayer.clearData(); + + sender.sendMessage("Data cleared for " + player.getName()); + return true; + } + + // Example command: /aprilfools2024 unset + public boolean unsetCommand(CommandSender sender, String[] args) { + if (args.length < 3) { + sender.sendMessage("Usage: /aprilfools2024 unset "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Unset the flag + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + trackedPlayer.unsetFlag(args[2]); + + sender.sendMessage("Flag " + args[2] + " unset for " + player.getName()); + return true; + } + + // Example command: /aprilfools2024 setbool + public boolean setBoolCommand(CommandSender sender, String[] args) { + if (args.length < 4) { + sender.sendMessage("Usage: /aprilfools2024 setbool "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Set the flag + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + trackedPlayer.setBoolFlag(args[2], Boolean.parseBoolean(args[3])); + + sender.sendMessage("Flag " + args[2] + " set to " + args[3] + " for " + player.getName()); + return true; + } + + // Example command: /aprilfools2024 setstring + public boolean setStringCommand(CommandSender sender, String[] args) { + if (args.length < 4) { + sender.sendMessage("Usage: /aprilfools2024 setstring "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Set the flag + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + trackedPlayer.setStringFlag(args[2], args[3]); + + sender.sendMessage("Flag " + args[2] + " set to " + args[3] + " for " + player.getName()); + return true; + } + + // Example command: /aprilfools2024 setint + public boolean setIntCommand(CommandSender sender, String[] args) { + if (args.length < 4) { + sender.sendMessage("Usage: /aprilfools2024 setint "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Set the flag + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + trackedPlayer.setIntFlag(args[2], Integer.parseInt(args[3])); + + sender.sendMessage("Flag " + args[2] + " set to " + args[3] + " for " + player.getName()); + return true; + } + + // Example command: /aprilfools2024 get + public boolean getCommand(CommandSender sender, String[] args) { + if (args.length < 3) { + sender.sendMessage("Usage: /aprilfools2024 get "); + return true; + } + + // Get player by name or UUID (args[1]) here + Player player = null; + + try { + player = AprilFools2024.getPlugin().getServer().getPlayer(args[1]); + } catch (Exception e) { + player = AprilFools2024.getPlugin().getServer().getPlayer(java.util.UUID.fromString(args[1])); + } + + if (player == null) { + sender.sendMessage("Player not found."); + return true; + } + + // Get the flag + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + sender.sendMessage("Player not tracked."); + return true; + } + + if (!trackedPlayer.getFlagExists(args[2])) { + sender.sendMessage("Flag " + args[2] + " does not exist for " + player.getName()); + return true; + } + + if (trackedPlayer.getFlagExists(args[2])) { + + } else { + sender.sendMessage("Flag " + args[2] + " does not exist for " + player.getName()); + return true; + } + + return true; + } + + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + return null; + } +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin1.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin1.java new file mode 100644 index 0000000..1682406 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin1.java @@ -0,0 +1,68 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import me.diademiemi.invuilib.menu.MenuBuilder; +import org.geysermc.api.util.UiProfile; +import org.geysermc.geyser.api.GeyserApi; +import org.geysermc.geyser.api.connection.GeyserConnection; + + +public class DgFirstJoin1 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Welcome back to QC!", MenuSize.THREE_ROWS, p); + + // Set the text based on the player's platform + GeyserConnection connection = GeyserApi.api().connectionByUuid(p.getUniqueId()); + + String item3Text; + String item4Text; + + if (connection == null) { + // We can assume this is a Java player + item3Text = "Hover over buttons to read them"; + item4Text = "Click this button to continue!"; + } else { + // We can assume this is a Bedrock player + item3Text = "Single tap buttons to read them"; + item4Text = "Double tap this button to continue!"; + } + + // Add info buttons + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, "Hello! Welcome back to Queercraft"), 2, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, "Text will be shown in these pieces of paper"), 3, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, item3Text), 4, 0, true); + + // Add continue button + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, item4Text) { + @Override + public void onLeftClick(Player p) { + new DgFirstJoin2().show(p); + } + + }, 3, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin1().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin2.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin2.java new file mode 100644 index 0000000..d557bfd --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin2.java @@ -0,0 +1,87 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import me.diademiemi.invuilib.menu.MenuBuilder; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.Map; + + +public class DgFirstJoin2 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Please accept our cookies!", MenuSize.THREE_ROWS, p); + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "By clicking “Accept cookies”, you agree Queercraft can store cookies", + "on your device in accordance with our Cookie Policy."), 3, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Cookies are stored locally in your inventory. These allow us to track logins into the server.", + "Our services include \"Third-Party Cookies\" for advertising purposes.", + "Of course, you can also just eat the cookies."), 3, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Deny cookies") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoinFail().show(p); + } + + }, 2, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.COOKIE, 16, "Accept cookies") { + @Override + public void onLeftClick(Player p) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + + if (trackedPlayer != null) { + // If getFlagExists is false or getBoolFlag is false + if (!trackedPlayer.getBoolFlag("firstJoinCookies")) { + ItemStack cookiesItemStack = new ItemStack(Material.COOKIE, 16); + ItemMeta cookiesItemMeta = cookiesItemStack.getItemMeta(); + cookiesItemMeta.setDisplayName("Cookies"); + ArrayList cookiesItemLore = new ArrayList<>(); + cookiesItemLore.add("Queercraft April Fools 2024"); + cookiesItemMeta.setLore(cookiesItemLore); + cookiesItemStack.setItemMeta(cookiesItemMeta); + + final Map cookiesDidntFit = p.getInventory().addItem(cookiesItemStack); + for (final ItemStack item : cookiesDidntFit.values()) { + p.getWorld().dropItemNaturally(p.getLocation(), item); + } + + trackedPlayer.setBoolFlag("firstJoinCookies", true); + } + } + + + new DgFirstJoin3().show(p); + } + + }, 4, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin2().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin3.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin3.java new file mode 100644 index 0000000..55a977a --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin3.java @@ -0,0 +1,85 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgFirstJoin3 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Accept the Terms of Service", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Please read and accept our Terms of Service located below before proceeding."), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- You must be at least 13 years old or have written permission from your cat.", + "Dogs are prohibited."), 1, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- The first rule of Queercraft is is you do not-- wait, too late for that one."), 2, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- It's \"Queercraft\", not \"QueerCraft\".", + "Except when you're trying to annoy Beau. Then it's always QueerCraft."), 3, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- You waive your right to be heterosexual. Them's the breaks, kid."), 4, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- Queercraft does not assume liability for any revelations regarding gender identity.", + "Besides, if you wanna make an omelet, you gotta crack a few eggs."), 5, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- The #memes channel on Discord is strictly reserved for genuine,", + "deep conversation about real-world news and politics with your peers.", + "Please do not clutter the channel with shitposts."), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- The #news-politics-activism channel on Discord is strictly reserved for shitposting."), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- You will attend /warp radio at 8 PM ET on Saturday nights to listen to Queercraft Live."), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- Griefing is forbidden, except for Satanic Temples, because we love Jesus."), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- In the event of staff misconduct, inform twitter.com immediately."), 5, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Deny Terms of Service") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoinFail().show(p); + } + + }, 2, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, "Accept Terms of Service") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoin4().show(p); + } + + }, 4, 2, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin3().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin4.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin4.java new file mode 100644 index 0000000..b4ee45b --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin4.java @@ -0,0 +1,90 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.checkerframework.common.returnsreceiver.qual.This; + + +public class DgFirstJoin4 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Accept the Privacy Policy", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "We care about your privacy!", + "Please read the Privacy Policy located below before proceeding."), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- All of your data are belong to us."), 1, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- In rare circumstances, select members of our tech team,", + "may be able to see your private messages in server logs.", + "This is not fair for the rest of us, so please ensure any", + "roleplay is kept in main chat for public critique."), 2, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- If you make a typo in the chat, it will be permanently immortalized via the", + "QC Chat bot on our Discord server for people to laugh at.", + "Better be careful with \"flag.\" It's happened before."), 3, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- Train A is traveling at 60 mph and Train B is traveling 80 mph.", + "Train A passes a station at 9:10 pm. If Train B passes the same station at 9:25 pm,", + "at what time will Train B catch up to train A?."), 4, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- We know about that really, really embarrassing thing you did", + "in middle school that keeps you up at night.", + "We won't tell anyone, promise."), 5, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- We reserve the right to do things we won't tell you about,", + "because in a privacy policy all about you, we were feeling left out."), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- There's nothing to worry about if you have nothing to hide.", + "Except for the state of Ohio. We are very worried about Ohio."), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- In the event of a GDPR takeout request, your personal information will be given", + "in the form of in-game books."), 4, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Deny Privacy Policy") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoinFail().show(p); + } + + }, 2, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, "Accept Privacy Policy") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoin5().show(p); + } + + }, 4, 2, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin4().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin5.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin5.java new file mode 100644 index 0000000..667a46e --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin5.java @@ -0,0 +1,78 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgFirstJoin5 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Accept the EULA", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Please read and agree to our End User License Agreement to continue."), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- Prism is a legal entity under intergalactic law operating", + "from the planet Transsexual in the galaxy of Transylvania."), 1, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- In the event of any legal claim, dispute, controversy,", + "or other dumb bullshit, you agree not to sue us."), 2, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- If you decide to sue us anyway, you may only pursue", + "legal action in a Scottish court of law."), 3, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- You agree not to use any skins depicting Bob the", + "Builder or characters from the Bob the Builder Cinematic Universe.", + "It upsets Beaupedia."), 4, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- You agree that it's pronounced \"jif.\"", + "(todo, remove before publication: Ryan, why is this here?)"), 5, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "- Alcohol is not allowed on Zoom unless it's Bud Light."), 3, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Deny EULA") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoinFail().show(p); + } + + }, 2, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, "Accept EULA") { + @Override + public void onLeftClick(Player p) { + new DgFirstJoin6().show(p, ""); + } + + }, 4, 2, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin5().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin6.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin6.java new file mode 100644 index 0000000..9ba4483 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin6.java @@ -0,0 +1,158 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgFirstJoin6 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Confirm you're not a bot.", MenuSize.SIX_ROWS, p); + + // arg 1 is string + if (args.length == 0) { + args = new Object[]{""}; + } + String captcha = (String) args[0]; + String goalString = "8008135"; + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Please solve the CAPTCHA below.", "Click the numbers in order \"8008135\""), 2, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Currently entered:", captcha), 4, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, "7") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "7")) { + new DgFirstJoin6().show(p, captcha + "7"); + } else { + new DgFirstJoinFail().show(p); + } + + } + }, 2, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_CONCRETE, 1, "8") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "8")) { + new DgFirstJoin6().show(p, captcha + "8"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 3, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_CONCRETE, 1, "9") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "9")) { + new DgFirstJoin6().show(p, captcha + "9"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 4, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_CONCRETE, 1, "4") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "4")) { + new DgFirstJoin6().show(p, captcha + "4"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 2, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_CONCRETE, 1, "5") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "5")) { + if ((captcha + "5").equals("8008135")) { + new DgFirstJoin7().show(p); + } else { + new DgFirstJoinFail().show(p); + } + } else { + new DgFirstJoinFail().show(p); + } + } + }, 3, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.CYAN_CONCRETE, 1, "6") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "6")) { + new DgFirstJoin6().show(p, captcha + "6"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 4, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_CONCRETE, 1, "1") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "1")) { + new DgFirstJoin6().show(p, captcha + "1"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 2, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_CONCRETE, 1, "2") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "2")) { + new DgFirstJoin6().show(p, captcha + "2"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 3, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_CONCRETE, 1, "3") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "3")) { + new DgFirstJoin6().show(p, captcha + "3"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 4, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAGENTA_CONCRETE, 1, "0") { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + "0")) { + new DgFirstJoin6().show(p, captcha + "0"); + } else { + new DgFirstJoinFail().show(p); + } + } + }, 3, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin6().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin7.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin7.java new file mode 100644 index 0000000..a4231e4 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin7.java @@ -0,0 +1,50 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgFirstJoin7 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Thank you!", MenuSize.THREE_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "You've proven you're a human!", "You can now play on Queercraft!"), 3, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.DIAMOND_BLOCK, 1, "Play on the server!") { + @Override + public void onLeftClick(Player p) { + close(p); + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + trackedPlayer.setBoolFlag("firstJoinComplete", true); + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin8().show(p); + }, 600); + } + + }, 3, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin7().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin8.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin8.java new file mode 100644 index 0000000..4ec9e6e --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoin8.java @@ -0,0 +1,65 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgFirstJoin8 implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Subscribe to notifications", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Do you agree to Queercraft sending you notifications?", "Location permission required."), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Deny notifications") { + @Override + public void onLeftClick(Player p) { + close(p); + } + + }, 2, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, "Accept notifications") { + @Override + public void onLeftClick(Player p) { + close(p); + } + + }, 4, 2, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoin8().show(p); + }, 20); + }); + + builder.setOnClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + p.sendMessage("Great! We'll send you notifications from now on."); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoinFail.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoinFail.java new file mode 100644 index 0000000..98fe7cc --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgFirstJoinFail.java @@ -0,0 +1,60 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.geysermc.geyser.api.GeyserApi; +import org.geysermc.geyser.api.connection.GeyserConnection; + + +public class DgFirstJoinFail implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("I'm sorry...", MenuSize.THREE_ROWS, p); + + // Set the text based on the player's platform + GeyserConnection connection = GeyserApi.api().connectionByUuid(p.getUniqueId()); + + String item1Text; + + if (connection == null) { + // We can assume this is a Java player + item1Text = "Hover over buttons to read them. Click this button to retry!"; + } else { + // We can assume this is a Bedrock player + item1Text = "Single tap buttons to read them. Double tap this button to retry!"; + } + + // Add info buttons + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, "I'm sorry, our systems have detected you are a bot", "Please try again to proceed."), 3, 0, true); + + // Add continue button + builder.addButtonByColumnRow(new MenuButton(Material.MAGENTA_GLAZED_TERRACOTTA, 1, item1Text) { + @Override + public void onLeftClick(Player p) { + new DgFirstJoin1().show(p); + } + + }, 3, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgFirstJoinFail().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptcha.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptcha.java new file mode 100644 index 0000000..19a02ed --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptcha.java @@ -0,0 +1,241 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.geysermc.geyser.api.GeyserApi; +import org.geysermc.geyser.api.connection.GeyserConnection; + +import java.util.*; + + +/** + * Fucking awful code but i dont give a shit, time crunch and its 5am + */ +public class DgGlobalCaptcha implements Dialog { + + public String generateRandomDigits(int length) { + Random random = new Random(); + StringBuilder sb = new StringBuilder(length); + for (int i = 0; i < length; i++) { + sb.append(random.nextInt(10)); // Append a random digit (0-9) + } + return sb.toString(); + } + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Confirm you're not a bot.", MenuSize.SIX_ROWS, p); + + // arg 1 is string + if (args.length == 0) { + args = new Object[]{"", ""}; + } + + String captcha = (String) args[0]; + + // Random 8 character string of numbers + String goalStringTmp = args[1].toString(); + + + + if (goalStringTmp.isEmpty()) { + goalStringTmp = generateRandomDigits(15); + } + + String goalString = goalStringTmp; + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Please solve the CAPTCHA below.", "Click the numbers in order " + goalString), 2, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Currently entered:", captcha), 4, 1, true); + + // Array of 7,8,9,4,5,6,1,2,3,0 + List numbers = Arrays.asList(7, 8, 9, 4, 5, 6, 1, 2, 3, 0); + + + GeyserConnection connection = GeyserApi.api().connectionByUuid(p.getUniqueId()); + + if (captcha.length() >= 8 && connection == null) { // Ignore Bedrock edition players. They're suffering enough. + // Shuffle the numbers + Collections.shuffle(numbers); + } + + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, numbers.get(0).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(0).toString())) { + if ((captcha + numbers.get(0).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(0).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 2, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_CONCRETE, 1, numbers.get(1).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(1).toString())) { + if ((captcha + numbers.get(1).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(1).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 3, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_CONCRETE, 1, numbers.get(2).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(2).toString())) { + if ((captcha + numbers.get(2).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(2).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 4, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_CONCRETE, 1, numbers.get(3).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(3).toString())) { + if ((captcha + numbers.get(3).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(3).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 2, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_CONCRETE, 1, numbers.get(4).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(4).toString())) { + if ((captcha + numbers.get(4).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(4).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 3, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.CYAN_CONCRETE, 1, numbers.get(5).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(5).toString())) { + if ((captcha + numbers.get(5).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(5).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 4, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_CONCRETE, 1, numbers.get(6).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(6).toString())) { + if ((captcha + numbers.get(6).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(6).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 2, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_CONCRETE, 1, numbers.get(7).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(7).toString())) { + if ((captcha + numbers.get(7).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(7).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 3, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_CONCRETE, 1, numbers.get(8).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(8).toString())) { + if ((captcha + numbers.get(8).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(8).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 4, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAGENTA_CONCRETE, 1, numbers.get(9).toString()) { + @Override + public void onLeftClick(Player p) { + if (goalString.startsWith(captcha + numbers.get(9).toString())) { + if ((captcha + numbers.get(9).toString()).equals(goalString)) { + new DgGlobalCaptchaSuccess().show(p); + } else { + new DgGlobalCaptcha().show(p, captcha + numbers.get(9).toString(), goalString); + } + } else { + new DgGlobalCaptchaFail().show(p); + } + } + + }, 3, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.PURPLE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalCaptcha().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaFail.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaFail.java new file mode 100644 index 0000000..77ee2ce --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaFail.java @@ -0,0 +1,47 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.geysermc.geyser.api.GeyserApi; +import org.geysermc.geyser.api.connection.GeyserConnection; + + +public class DgGlobalCaptchaFail implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("I'm sorry...", MenuSize.THREE_ROWS, p); + + // Add info buttons + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, "I'm sorry, our systems have detected you are a bot", "Please try again to proceed."), 3, 0, true); + + // Add continue button + builder.addButtonByColumnRow(new MenuButton(Material.MAGENTA_GLAZED_TERRACOTTA, 1, "Try again") { + @Override + public void onLeftClick(Player p) { + new DgGlobalCaptcha().show(p); + } + + }, 3, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalCaptchaFail().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaSuccess.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaSuccess.java new file mode 100644 index 0000000..e233202 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCaptchaSuccess.java @@ -0,0 +1,45 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalCaptchaSuccess implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Thanks!", MenuSize.THREE_ROWS, p); + + // Add info buttons + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, "You have verified you are a human being! Enjoy Queercraft!"), 3, 0, true); + + // Add continue button + builder.addButtonByColumnRow(new MenuButton(Material.DIAMOND_BLOCK, 1, "Continue") { + @Override + public void onLeftClick(Player p) { + close(p); + } + + }, 3, 1, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.GREEN_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + + // Prevent the player from closing the menu + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalCaptchaSuccess().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCelestialClock.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCelestialClock.java new file mode 100644 index 0000000..aaa7fa0 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalCelestialClock.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalCelestialClock implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Need to see the time?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.CLOCK, 1, + "Now you can!"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_NUGGET, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_INGOT, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_BLOCK, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_INGOT, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_NUGGET, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalCelestialClock().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalGlutenRelatedEstablishment.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalGlutenRelatedEstablishment.java new file mode 100644 index 0000000..ebb18bd --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalGlutenRelatedEstablishment.java @@ -0,0 +1,62 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalGlutenRelatedEstablishment implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Enjoying Queercraft?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "You might also like..."), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, + "Bakeries"), 2, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.WHEAT, 1, + "Markets"), 3, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.GRASS_BLOCK, 1, + "Bisexuals"), 4, 3, true); + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.BREAD, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalGlutenRelatedEstablishment().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHasScienceGoneTooFar.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHasScienceGoneTooFar.java new file mode 100644 index 0000000..a52618c --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHasScienceGoneTooFar.java @@ -0,0 +1,57 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalHasScienceGoneTooFar implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("HAS SCIENCE GONE TOO FAR?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.ITEM_FRAME, 1, + "ERROR: You do not have the required resource pack to view this image"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.DIAMOND_BLOCK, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_BLOCK, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.COAL_BLOCK, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.IRON_BLOCK, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalHasScienceGoneTooFar().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHaveYouSeenThisShark.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHaveYouSeenThisShark.java new file mode 100644 index 0000000..67d2d95 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalHaveYouSeenThisShark.java @@ -0,0 +1,82 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.SkullMeta; + +import java.util.UUID; + + +public class DgGlobalHaveYouSeenThisShark implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("HAVE YOU SEEN", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "HAVE YOU SEEN THIS SHARK?"), 3, 1, true); + + // Get from url + ItemStack blahajHead = new ItemStack(Material.PLAYER_HEAD); + ItemMeta blahajHeadMeta = blahajHead.getItemMeta(); + blahajHeadMeta.setDisplayName("Blahaj!!!"); + blahajHead.setItemMeta(blahajHeadMeta); + Bukkit.getUnsafe().modifyItemStack(blahajHead, "{SkullOwner: {Name: \"Blahaj\", Id: [I; 67411088, -739686879, -1666252800, -1432143867], Properties: {textures: [{Value: \"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWRmZjkwNDEyNGVmZTQ4NmIzYTU0MjYxZGJiODA3MmIwYTRlMTE2MTVhZDhkNzM5NGQ4MTRlMGU4YzhlZjllYiJ9fX0=\"}]}}}"); + MenuButton blahajButton = new MenuButton(Material.PLAYER_HEAD, 1, "Blahaj!!!") { + @Override + public void onLeftClick(Player p) { + p.sendMessage("You have seen the shark!"); + } + }; + blahajButton.setItemStack(blahajHead); + + builder.addButtonByColumnRow(blahajButton, 3, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Now you have"), 3, 3, true); + + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 5, 5, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalHaveYouSeenThisShark().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMarbleHacks.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMarbleHacks.java new file mode 100644 index 0000000..5d9710a --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMarbleHacks.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalMarbleHacks implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("FREE MARBLE HACKS", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.DIAMOND, 1, + "Made you look"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.HEART_OF_THE_SEA, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalMarbleHacks().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMesothelioma.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMesothelioma.java new file mode 100644 index 0000000..48cdc63 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalMesothelioma.java @@ -0,0 +1,59 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalMesothelioma implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Mesothelioma", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.BLAZE_ROD, 1, + "Attention: If you or a loved one has been diagnosed with Mesothelioma you may to be entitled to financial compensation.", + "Mesothelioma is a rare cancer linked to asbestos exposure.", + "Exposure to asbestos in shipyards, mills, heating, construction, or the automotive industries may put you at risk."), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.POTION, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NETHER_WART, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NETHER_WART, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NETHER_WART, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.POTION, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalMesothelioma().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalStriders.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalStriders.java new file mode 100644 index 0000000..2aa7c53 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalStriders.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalStriders implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("HOT STRIDERS IN YOUR AREA", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Click here to find out more!"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LAVA_BUCKET, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.SADDLE, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WARPED_FUNGUS_ON_A_STICK, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.SADDLE, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.LAVA_BUCKET, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalStriders().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalVillagersHateHim.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalVillagersHateHim.java new file mode 100644 index 0000000..40aba62 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgGlobalVillagersHateHim.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgGlobalVillagersHateHim implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("VILLAGERS HATE HIM", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD, 1, + "Find out how one player generated INFINITE EMERALDS"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.EMERALD_BLOCK, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgGlobalVillagersHateHim().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupBlocksPlaced.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupBlocksPlaced.java new file mode 100644 index 0000000..9ba232f --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupBlocksPlaced.java @@ -0,0 +1,57 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupBlocksPlaced implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Block Placement Limit Reached", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.STONE, 1, + "Please renew your Minecraft license."), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.NAME_TAG, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NAME_TAG, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NAME_TAG, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NAME_TAG, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.NAME_TAG, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupBlocksPlaced().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupCartographyTable.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupCartographyTable.java new file mode 100644 index 0000000..72b4b63 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupCartographyTable.java @@ -0,0 +1,91 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Color; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.inventory.meta.MapMeta; +import org.bukkit.potion.Potion; +import org.bukkit.potion.PotionType; + +import java.util.ArrayList; +import java.util.Map; + + +public class DgPopupCartographyTable implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Are you lost?", MenuSize.SIX_ROWS, p); + + // Close button + + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, + "Get Queercraft Maps today at https://www.queercraft.net/map/") { + public void onLeftClick(Player p) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + + if (trackedPlayer != null) { + // If getFlagExists is false or getBoolFlag is false + if (!trackedPlayer.getBoolFlag("timesUsedCartographyTableComplete")) { + ItemStack itemStack = new ItemStack(Material.FILLED_MAP); + MapMeta itemMeta = (MapMeta) itemStack.getItemMeta(); + itemMeta.setDisplayName("Queercraft Map"); + ArrayList itemLore = new ArrayList<>(); + itemLore.add("Queercraft April Fools 2024"); + itemMeta.setLore(itemLore); + + itemMeta.setColor(Color.AQUA); + itemMeta.setMapId(8895); + + itemStack.setItemMeta(itemMeta); + + final Map itemsDidntFit = p.getInventory().addItem(itemStack); + for (final ItemStack item : itemsDidntFit.values()) { + p.getWorld().dropItemNaturally(p.getLocation(), item); + } + + trackedPlayer.setBoolFlag("timesUsedCartographyTableComplete", true); + } + close(p); + } + } + }, 3, 1, true); + + + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MAP, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupCartographyTable().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupChatMessages.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupChatMessages.java new file mode 100644 index 0000000..25f26a6 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupChatMessages.java @@ -0,0 +1,57 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupChatMessages implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Your free trial has expired", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Subscribe to LGBTQ+ for the full Queercraft experience"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.ORANGE_CONCRETE, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.YELLOW_CONCRETE, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIME_CONCRETE, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.BLUE_CONCRETE, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupChatMessages().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceByBoat.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceByBoat.java new file mode 100644 index 0000000..a4786bd --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceByBoat.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupDistanceByBoat implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("You don't have life jackets...", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "FINE: M250.00"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WHITE_CONCRETE, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WHITE_CONCRETE, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.RED_CONCRETE, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupDistanceByBoat().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceFlown.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceFlown.java new file mode 100644 index 0000000..c832db7 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceFlown.java @@ -0,0 +1,67 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupDistanceFlown implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Thank you for flying!", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Please rate your experience"), 3, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.COAL, 1, + "1 Star"), 1, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, + "2 Stars"), 2, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.IRON_INGOT, 1, + "3 Stars"), 3, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.GOLD_INGOT, 1, + "4 Stars"), 4, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.DIAMOND, 1, + "5 Stars") { + @Override + public void onLeftClick(Player p) { + close(p); + } + + }, 5, 3, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + p.sendMessage("Error: You cannot close this menu. Please rate your experience."); + } + }, 6, 0, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupDistanceFlown().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceWalked.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceWalked.java new file mode 100644 index 0000000..ce0001e --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupDistanceWalked.java @@ -0,0 +1,58 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupDistanceWalked implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("That's one small step for man...", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Or about two hundred if you were really counting"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.END_STONE, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.END_STONE, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.END_STONE, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.END_STONE, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.END_STONE, 1, " "), 5, 5, true); + + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupDistanceWalked().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupJumps.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupJumps.java new file mode 100644 index 0000000..59e14fd --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupJumps.java @@ -0,0 +1,60 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupJumps implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("You must be hopping mad", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Take a listen..."), 3, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_WAIT, 1, + "Van Halen - Jump"), 3, 3, true); + + builder.addButtonByColumnRow(new MenuButton(Material.JUKEBOX, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.JUKEBOX, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.JUKEBOX, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.JUKEBOX, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.JUKEBOX, 1, " "), 5, 5, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupJumps().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupLowHealth.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupLowHealth.java new file mode 100644 index 0000000..27f9a52 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupLowHealth.java @@ -0,0 +1,91 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.Potion; +import org.bukkit.potion.PotionType; + +import java.util.ArrayList; +import java.util.Map; + + +public class DgPopupLowHealth implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("HEY! LISTEN!", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "It's dangerous to go alone, take this!"), 3, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.POTION, 1, + "Red Potion") { + public void onLeftClick(Player p) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + + if (trackedPlayer != null) { + // If getFlagExists is false or getBoolFlag is false + if (!trackedPlayer.getBoolFlag("lowHealthComplete")) { + Potion potion = new Potion(PotionType.INSTANT_HEAL, 2); + ItemStack itemStack = potion.toItemStack(1); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.setDisplayName("Red Potion"); + ArrayList itemLore = new ArrayList<>(); + itemLore.add("Queercraft April Fools 2024"); + itemMeta.setLore(itemLore); + itemStack.setItemMeta(itemMeta); + + final Map itemsDidntFit = p.getInventory().addItem(itemStack); + for (final ItemStack item : itemsDidntFit.values()) { + p.getWorld().dropItemNaturally(p.getLocation(), item); + } + + trackedPlayer.setBoolFlag("lowHealthComplete", true); + } + close(p); + } + } + }, 3, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE_BLOCK, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE_BLOCK, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE_BLOCK, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE_BLOCK, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE_BLOCK, 1, " "), 5, 5, true); + + + // Close button +// trackedPlayer.setBoolFlag("lowHealthComplete", true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupLowHealth().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupMusicDiscs.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupMusicDiscs.java new file mode 100644 index 0000000..d1d0650 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupMusicDiscs.java @@ -0,0 +1,63 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupMusicDiscs implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Want something else to listen to?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Listen to Queercraft Radio at https://www.queercraft.net/radio/"), 3, 1, true); + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_WAIT, 1, " "), 1, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_PIGSTEP, 1, " "), 2, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_13, 1, " "), 3, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_11, 1, " "), 4, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_CHIRP, 1, " "), 5, 3, true); + + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_STAL, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_STRAD, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_BLOCKS, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_FAR, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.MUSIC_DISC_CAT, 1, " "), 5, 5, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupMusicDiscs().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupRedstonePlaced.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupRedstonePlaced.java new file mode 100644 index 0000000..bf0c73b --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupRedstonePlaced.java @@ -0,0 +1,62 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.entity.Player; + + +public class DgPopupRedstonePlaced implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("New to Redstone?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Try our new book!"), 3, 1, true); + + + builder.addButtonByColumnRow(new MenuButton(Material.WRITABLE_BOOK, 1, + "Redstone for Dummies"), 3, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.REDSTONE, 1, " "), 5, 5, true); + + + // Close button + builder.addButtonByColumnRow(new MenuButton(Material.BARRIER, 1, "Close") { + @Override + public void onLeftClick(Player p) { + close(p); + } + }, 6, 0, true); + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupRedstonePlaced().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupTimeCrouched.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupTimeCrouched.java new file mode 100644 index 0000000..d79770c --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupTimeCrouched.java @@ -0,0 +1,97 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.potion.Potion; +import org.bukkit.potion.PotionType; + +import java.util.ArrayList; +import java.util.Map; + + +public class DgPopupTimeCrouched implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("Need a cardboard box, Snake?", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Don't Treat It As Another Box. Treat It With Love. Don't Be Rough. Okay?"), 3, 1, true); + + ItemStack boxHead = new ItemStack(Material.PLAYER_HEAD); + ItemMeta boxHeadMeta = boxHead.getItemMeta(); + boxHeadMeta.setDisplayName("Cardboard Box"); + boxHead.setItemMeta(boxHeadMeta); + Bukkit.getUnsafe().modifyItemStack(boxHead, "{SkullOwner: {Name: \"Cardboard Box\", Id: [I; 67411088, -739686879, -1666252800, -1432143867], Properties: {textures: [{Value: \"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWYyNTg0OWU4Y2Q1ZTUzMmMzMGNiYThkZThiZWQwNjQwY2ZiMmVlYzUwOTI5OTk4YjEwNzgzOWJmYjBmMjRkNyJ9fX0=\"}]}}}"); + MenuButton boxButton = new MenuButton(Material.PLAYER_HEAD, 1, "Cardboard Box") { + @Override + public void onLeftClick(Player p) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + + if (trackedPlayer != null) { + // If getFlagExists is false or getBoolFlag is false + if (!trackedPlayer.getBoolFlag("timeCrouchedComplete")) { + ItemStack itemStack = boxHead; + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.setDisplayName("Cardboard Box"); + ArrayList itemLore = new ArrayList<>(); + itemLore.add("Queercraft April Fools 2024"); + itemMeta.setLore(itemLore); + itemStack.setItemMeta(itemMeta); + + final Map itemsDidntFit = p.getInventory().addItem(itemStack); + for (final ItemStack item : itemsDidntFit.values()) { + p.getWorld().dropItemNaturally(p.getLocation(), item); + } + + trackedPlayer.setBoolFlag("timeCrouchedComplete", true); + } + close(p); + } + } + }; + boxButton.setItemStack(boxHead); + + builder.addButtonByColumnRow(boxButton, 3, 2, true); + + builder.addButtonByColumnRow(new MenuButton(Material.GUNPOWDER, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GUNPOWDER, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GUNPOWDER, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GUNPOWDER, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.GUNPOWDER, 1, " "), 5, 5, true); + + // Close button + + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupTimeCrouched().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupWalkedOnWater.java b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupWalkedOnWater.java new file mode 100644 index 0000000..a3b61d3 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/dialogs/DgPopupWalkedOnWater.java @@ -0,0 +1,90 @@ +package me.diademiemi.aprilfools2024.dialogs; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.invuilib.menu.*; +import org.bukkit.Material; +import org.bukkit.enchantments.Enchantment; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +import java.util.ArrayList; +import java.util.Map; + + +public class DgPopupWalkedOnWater implements Dialog { + + @Override + public Menu create(Player p, Object... args) { + MenuBuilder builder = new MenuBuilder("ROMANS HATE HIM", MenuSize.SIX_ROWS, p); + + + builder.addButtonByColumnRow(new MenuButton(Material.PAPER, 1, + "Learn how one man learned how to walk on water with one easy trick!"), 3, 1, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LEATHER_BOOTS, 1, "Sandals") { + @Override + public void onLeftClick(Player p) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(p.getUniqueId()); + + if (trackedPlayer != null) { + // If getFlagExists is false or getBoolFlag is false + if (!trackedPlayer.getBoolFlag("distanceWalkedOnWaterComplete")) { + ItemStack itemStack = new ItemStack(Material.LEATHER_BOOTS); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.setDisplayName("Sandals"); + itemMeta.addEnchant(Enchantment.FROST_WALKER, 2, true); + itemMeta.addEnchant(Enchantment.DURABILITY, 3, true); + + ArrayList itemLore = new ArrayList<>(); + itemLore.add("Queercraft April Fools 2024"); + itemMeta.setLore(itemLore); + itemStack.setItemMeta(itemMeta); + + final Map itemsDidntFit = p.getInventory().addItem(itemStack); + for (final ItemStack item : itemsDidntFit.values()) { + p.getWorld().dropItemNaturally(p.getLocation(), item); + } + + trackedPlayer.setBoolFlag("distanceWalkedOnWaterComplete", true); + } + close(p); + } + } + }, 3, 3, true); + + builder.addButtonByColumnRow(new MenuButton(Material.WATER_BUCKET, 1, " "), 1, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WATER_BUCKET, 1, " "), 2, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WATER_BUCKET, 1, " "), 3, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WATER_BUCKET, 1, " "), 4, 5, true); + builder.addButtonByColumnRow(new MenuButton(Material.WATER_BUCKET, 1, " "), 5, 5, true); + + + // Close button + // Outer decoration + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 0, 5, true); + + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 0, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 1, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 2, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 3, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 4, true); + builder.addButtonByColumnRow(new MenuButton(Material.LIGHT_BLUE_STAINED_GLASS_PANE, 1, " "), 6, 5, true); + + // Prevent the player from force exiting the menu. its gotta be annoying! + builder.setOnForceClose(() -> { + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupWalkedOnWater().show(p); + }, 20); + }); + + return builder.build(); + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/listener/EventListener.java b/src/main/java/me/diademiemi/aprilfools2024/listener/EventListener.java new file mode 100644 index 0000000..76688b4 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/listener/EventListener.java @@ -0,0 +1,226 @@ +package me.diademiemi.aprilfools2024.listener; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.dialogs.*; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import me.diademiemi.aprilfools2024.player.TrackedPlayerUtil; +import org.bukkit.Material; +import org.bukkit.Statistic; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerStatisticIncrementEvent; + +public class EventListener implements Listener { + + /** + * Event handler for when a player joins the server + * Sets shit up for the fuckery we're bout to do! + * @param event The event + */ + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + // Attempt to get tracked player + + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer().getUniqueId()); + // If tracked player is not null + if (trackedPlayer != null) { + + TrackedPlayerUtil.setFlags(trackedPlayer, event.getPlayer()); + + // First join sequence + // DgFirstJoin1 + if (!trackedPlayer.getBoolFlag("firstJoinComplete")) { + // Show the first join dialog + new DgFirstJoin1().show(event.getPlayer()); + } + } + + } + + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) { + // Return if the player is not in world "world" or not in gamemode survival + if (!event.getPlayer().getWorld().getName().equals("world")) { + return; + } + if (event.getPlayer().getGameMode() != org.bukkit.GameMode.SURVIVAL) { + return; + } + + + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + if (!trackedPlayer.getBoolFlag("blocksPlacedComplete")) { + int current = trackedPlayer.getIntFlag("initBlocksPlaced"); + if (current + 1 == 64) { + new DgPopupBlocksPlaced().show(event.getPlayer()); + trackedPlayer.setBoolFlag("blocksPlacedComplete", true); + } else { + trackedPlayer.setIntFlag("initBlocksPlaced", current + 1); + } + } + if (!trackedPlayer.getBoolFlag("redstonePlacedComplete") && event.getBlock().getType() == Material.REDSTONE_WIRE) { + new DgPopupRedstonePlaced().show(event.getPlayer()); + trackedPlayer.setBoolFlag("redstonePlacedComplete", true); + } + } + + @EventHandler + public void onChatMessage(AsyncPlayerChatEvent event) { + // Return if the player is not in world "world" or not in gamemode survival + if (!event.getPlayer().getWorld().getName().equals("world")) { + return; + } + if (event.getPlayer().getGameMode() != org.bukkit.GameMode.SURVIVAL) { + return; + } + + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + if (trackedPlayer.getBoolFlag("chatMessagesComplete")) { + return; + } + int current = trackedPlayer.getIntFlag("initChatMessages"); + if (current + 1 == 15) { + // schedule this bcs we're on an async thread + + AprilFools2024.getPlugin().getServer().getScheduler().runTaskLater(AprilFools2024.getPlugin(), () -> { + new DgPopupChatMessages().show(event.getPlayer()); + }, 1); + trackedPlayer.setBoolFlag("chatMessagesComplete", true); + } else { + trackedPlayer.setIntFlag("initChatMessages", current + 1); + } + } + + @EventHandler + // On player damage + public void onPlayerDamage(org.bukkit.event.entity.EntityDamageEvent event) { + // Return if the entity is not a player + if (!(event.getEntity() instanceof Player)) { + return; + } + // Return if the player is not in world "world" or not in gamemode survival + if (!event.getEntity().getWorld().getName().equals("world")) { + return; + } + if (((Player) event.getEntity()).getGameMode() != org.bukkit.GameMode.SURVIVAL) { + return; + } + + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer((Player) event.getEntity()); + if (trackedPlayer.getBoolFlag("lowHealthComplete")) { + return; + } + if (((Player) event.getEntity()).getHealth() - event.getFinalDamage() <= 6) { + new DgPopupLowHealth().show((Player) event.getEntity()); + } + } + + @EventHandler + public void onPlayerMove(PlayerMoveEvent event) { + // Return if the player is not in world "world" or not in gamemode survival + if (!event.getPlayer().getWorld().getName().equals("world")) { + return; + } + if (event.getPlayer().getGameMode() != org.bukkit.GameMode.SURVIVAL) { + return; + } + + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + + if (trackedPlayer != null) { + if (!trackedPlayer.getBoolFlag("distanceFlownComplete")) { + if (event.getPlayer().getInventory().getChestplate() != null) { + if (event.getPlayer().getInventory().getChestplate().getType() == Material.ELYTRA) { + if (event.getPlayer().getStatistic(Statistic.FLY_ONE_CM) - trackedPlayer.getIntFlag("initDistanceFlown") >= 2000) { + new DgPopupDistanceFlown().show(event.getPlayer()); + trackedPlayer.setBoolFlag("distanceFlownComplete", true); + } + } + } + } + + if (!trackedPlayer.getBoolFlag("distanceWalkedComplete")) { + if (event.getPlayer().getStatistic(Statistic.WALK_ONE_CM) - trackedPlayer.getIntFlag("initDistanceWalked") >= 10000) { + new DgPopupDistanceWalked().show(event.getPlayer()); + trackedPlayer.setBoolFlag("distanceWalkedComplete", true); + } + } + + if (!trackedPlayer.getBoolFlag("distanceByBoatComplete")) { + if (event.getPlayer().getStatistic(Statistic.BOAT_ONE_CM) - trackedPlayer.getIntFlag("initDistanceByBoat") >= 1000) { + new DgPopupDistanceByBoat().show(event.getPlayer()); + trackedPlayer.setBoolFlag("distanceByBoatComplete", true); + } + } + + if (!trackedPlayer.getBoolFlag("distanceWalkedOnWaterComplete")) { + if (event.getPlayer().getStatistic(Statistic.WALK_ON_WATER_ONE_CM) - trackedPlayer.getIntFlag("initDistanceWalkedOnWater") >= 500) { + new DgPopupWalkedOnWater().show(event.getPlayer()); + } + } + + if (!trackedPlayer.getBoolFlag("timeCrouchedComplete")) { + if (event.getPlayer().isSneaking() && event.getPlayer().getStatistic(Statistic.SNEAK_TIME) - trackedPlayer.getIntFlag("initTimeCrouched") >= 100) { + new DgPopupTimeCrouched().show(event.getPlayer()); + } + } + + } + + } + + + /** + * Event handler for when a player's statistics increment + * HORRIBLY INEFFICIENT AND BULLSHIT. but its only for a day so idgaf. + * @param event The event + */ + @EventHandler + public void onPlayerStatistic(PlayerStatisticIncrementEvent event) { + // Return if the player is not in world "world" or not in gamemode survival + if (!event.getPlayer().getWorld().getName().equals("world")) { + return; + } + if (event.getPlayer().getGameMode() != org.bukkit.GameMode.SURVIVAL) { + return; + } + if (event.getStatistic() == Statistic.JUMP) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + if (trackedPlayer != null) { + if (!trackedPlayer.getBoolFlag("jumpsComplete")) { + if (event.getNewValue() - trackedPlayer.getIntFlag("initJumps") >= 75) { + new DgPopupJumps().show(event.getPlayer()); + trackedPlayer.setBoolFlag("jumpsComplete", true); + } + } + } + } + if (event.getStatistic() == Statistic.INTERACT_WITH_CARTOGRAPHY_TABLE) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + if (trackedPlayer != null) { + if (!trackedPlayer.getBoolFlag("timesUsedCartographyTableComplete")) { + if (event.getNewValue() - trackedPlayer.getIntFlag("initTimesUsedCartographyTable") >= 1) { + new DgPopupCartographyTable().show(event.getPlayer()); + } + } + } + } + if (event.getStatistic() == Statistic.RECORD_PLAYED) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(event.getPlayer()); + if (trackedPlayer != null) { + if (!trackedPlayer.getBoolFlag("musicDiscsComplete")) { + if (event.getNewValue() - trackedPlayer.getIntFlag("initMusicDiscsPlayed") >= 1) { + new DgPopupMusicDiscs().show(event.getPlayer()); + trackedPlayer.setBoolFlag("musicDiscsComplete", true); + } + } + } + } + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/listener/RandomScheduler.java b/src/main/java/me/diademiemi/aprilfools2024/listener/RandomScheduler.java new file mode 100644 index 0000000..248a47b --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/listener/RandomScheduler.java @@ -0,0 +1,67 @@ +package me.diademiemi.aprilfools2024.listener; + +import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.dialogs.*; +import me.diademiemi.aprilfools2024.player.TrackedPlayer; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.function.Consumer; + +public class RandomScheduler { + + /** + * Schedule a random global dialogue every randomly between 10 and 30 minutes + * This method will call itself after the random delay so it will loop indefinitely + */ + public static void scheduleRandom() { + // Schedule a random global dialogue every randomly between 10 and 30 minutes + int tickDelay = 20 * 60 * (10 + new Random().nextInt(20)); + AprilFools2024.getPlugin().getServer().getLogger().info("[APRILFOOLS2024] Next global in " + tickDelay + " ticks"); + + Bukkit.getScheduler().runTaskLater(AprilFools2024.getPlugin(), RandomScheduler::showToAll, tickDelay); + Bukkit.getScheduler().runTaskLater(AprilFools2024.getPlugin(), RandomScheduler::scheduleRandom, tickDelay); // Loop + + } + + /** + * Show a random global dialogue to all online players + */ + public static void showToAll() { + + ArrayList players = new ArrayList<>(Bukkit.getOnlinePlayers()); + + List> globals = Arrays.asList( + player -> new DgGlobalCaptcha().show(player), + player -> new DgGlobalCelestialClock().show(player), + player -> new DgGlobalGlutenRelatedEstablishment().show(player), + player -> new DgGlobalHasScienceGoneTooFar().show(player), + player -> new DgGlobalHaveYouSeenThisShark().show(player), + player -> new DgGlobalMarbleHacks().show(player), + player -> new DgGlobalMesothelioma().show(player), + player -> new DgGlobalStriders().show(player), + player -> new DgGlobalVillagersHateHim().show(player) + ); + + // Select a random dialogue once + Consumer selectedGlobal = globals.get(new Random().nextInt(globals.size())); + + AprilFools2024.getPlugin().getServer().getLogger().info("[APRILFOOLS2024] Showing global to all players: " + selectedGlobal.toString()); + + // Show the same dialogue to all players in the list + for (Player player : players) { + TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(player.getUniqueId()); + + if (trackedPlayer == null) { + continue; + } + selectedGlobal.accept(player); + } + + } + +} diff --git a/src/main/java/me/diademiemi/aprilfools2024/listener/TrackingListener.java b/src/main/java/me/diademiemi/aprilfools2024/listener/TrackingListener.java index 2e421c9..b568c4e 100644 --- a/src/main/java/me/diademiemi/aprilfools2024/listener/TrackingListener.java +++ b/src/main/java/me/diademiemi/aprilfools2024/listener/TrackingListener.java @@ -4,13 +4,18 @@ import me.diademiemi.aprilfools2024.player.TrackedPlayer; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; public class TrackingListener implements Listener { - @EventHandler + /** + * Track a player when they join the server and have the permission to be tracked + * @param event + */ + @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) { // Logic for tracking players @@ -37,7 +42,7 @@ public void onPlayerJoin(PlayerJoinEvent event) { } @EventHandler - public void onPlayerQUit(PlayerQuitEvent e) { + public void onPlayerQuit(PlayerQuitEvent e) { // Attempt to get the TrackedPlayer object for the player TrackedPlayer trackedPlayer = TrackedPlayer.getTrackedPlayer(e.getPlayer().getUniqueId()); // If not null diff --git a/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayer.java b/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayer.java index a11412c..dda2abf 100644 --- a/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayer.java +++ b/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayer.java @@ -1,8 +1,10 @@ package me.diademiemi.aprilfools2024.player; import com.google.gson.Gson; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import me.diademiemi.aprilfools2024.AprilFools2024; +import me.diademiemi.aprilfools2024.listener.EventListener; import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.entity.Player; @@ -49,6 +51,20 @@ public static TrackedPlayer getTrackedPlayer(UUID uuid) { return trackedPlayers.get(uuid); } + public static TrackedPlayer getTrackedPlayer(Player player) { + return getTrackedPlayer(player.getUniqueId()); + } + + public static TrackedPlayer getTrackedPlayer(String playerName) { + Player player = AprilFools2024.getPlugin().getServer().getPlayer(playerName); + + if (player == null) { + return null; + } + + return getTrackedPlayer(player); + } + // Store the Player object, is null when the player is offline public Player player; @@ -77,14 +93,51 @@ public void unsetOnlinePlayer() { this.player = null; } + public Player getPlayer() { + return this.player; + } + + public boolean getFlagExists(String flag) { + return jsonData.get(flag) != null; + } + + public void unsetFlag(String flag) { + jsonData.remove(flag); + } + + public void clearData() { + jsonData = new JsonObject(); + TrackedPlayerUtil.setFlags(this, this.getPlayer()); + } + + public JsonElement getFlag(String flag) { + return jsonData.get(flag); + } + // Get a flag from the json data - public boolean getFlag(String flag) { + public boolean getBoolFlag(String flag) { // This can be null, default to false return jsonData.get(flag) != null && jsonData.get(flag).getAsBoolean(); } // Set a flag in the json data - public void setFlag(String flag, boolean value) { + public void setBoolFlag(String flag, boolean value) { + jsonData.addProperty(flag, value); + } + + public int getIntFlag(String flag) { + return jsonData.get(flag).getAsInt(); + } + + public void setIntFlag(String flag, int value) { + jsonData.addProperty(flag, value); + } + + public String getStringFlag(String flag) { + return jsonData.get(flag).getAsString(); + } + + public void setStringFlag(String flag, String value) { jsonData.addProperty(flag, value); } diff --git a/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayerUtil.java b/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayerUtil.java new file mode 100644 index 0000000..eb94ef6 --- /dev/null +++ b/src/main/java/me/diademiemi/aprilfools2024/player/TrackedPlayerUtil.java @@ -0,0 +1,133 @@ +package me.diademiemi.aprilfools2024.player; + +import org.bukkit.Statistic; +import org.bukkit.entity.Player; + +public class TrackedPlayerUtil { + + /** + * This is fucking awful code but im on a time crunch rn + * This sets the flags for the player when they first join / get cleared + * @param trackedPlayer + * @param player + */ + public static void setFlags(TrackedPlayer trackedPlayer, Player player) { + // Initialise player data + + // Jumps + // DgPopupJumps + // Inspo: music disc van halen jump + if (!trackedPlayer.getFlagExists("initJumps")) { + trackedPlayer.setIntFlag("initJumps", player.getStatistic(org.bukkit.Statistic.JUMP)); + } + if (!trackedPlayer.getFlagExists("jumpsComplete")) { + trackedPlayer.setBoolFlag("jumpsComplete", false); + } + + // Distance flown + // DgPopupDistanceFlown + // Inspo: Get your flight insurance today! + if (!trackedPlayer.getFlagExists("initDistanceFlown")) { + trackedPlayer.setIntFlag("initDistanceFlown", player.getStatistic(org.bukkit.Statistic.FLY_ONE_CM)); + } + if (!trackedPlayer.getFlagExists("distanceFlownComplete")) { + trackedPlayer.setBoolFlag("distanceFlownComplete", false); + } + + // Time crouched + // DgPopupTimeCrouched + // Inspo: Need a cardboard box, solid snake? + if (!trackedPlayer.getFlagExists("initTimeCrouched")) { + trackedPlayer.setIntFlag("initTimeCrouched", player.getStatistic(Statistic.SNEAK_TIME)); + } + if (!trackedPlayer.getFlagExists("timeCrouchedComplete")) { + trackedPlayer.setBoolFlag("timeCrouchedComplete", false); + } + + // Distance walked + // DgPopupDistanceWalked + // Inspo: Walking cane for sale + if (!trackedPlayer.getFlagExists("initDistanceWalked")) { + trackedPlayer.setIntFlag("initDistanceWalked", player.getStatistic(org.bukkit.Statistic.WALK_ONE_CM)); + } + if (!trackedPlayer.getFlagExists("distanceWalkedComplete")) { + trackedPlayer.setBoolFlag("distanceWalkedComplete", false); + } + + // Distance by boat + // DgPopupDistanceByBoat + // Inspo: + if (!trackedPlayer.getFlagExists("initDistanceByBoat")) { + trackedPlayer.setIntFlag("initDistanceByBoat", player.getStatistic(org.bukkit.Statistic.BOAT_ONE_CM)); + } + if (!trackedPlayer.getFlagExists("distanceByBoatComplete")) { + trackedPlayer.setBoolFlag("distanceByBoatComplete", false); + } + + // Distance walked on water + // DgPopupWalkedOnWater + // Inspo: ROMANS HATE HIM: Learn how one man learned how to walk on water with one easy trick! + if (!trackedPlayer.getFlagExists("initDistanceWalkedOnWater")) { + trackedPlayer.setIntFlag("initDistanceWalkedOnWater", player.getStatistic(org.bukkit.Statistic.WALK_ON_WATER_ONE_CM)); + } + if (!trackedPlayer.getFlagExists("distanceWalkedOnWaterComplete")) { + trackedPlayer.setBoolFlag("distanceWalkedOnWaterComplete", false); + } + + // Times used cartography table + // DgPopupCartographyTable + // Inspo: Lost? Try Queercraft Maps today! + if (!trackedPlayer.getFlagExists("initTimesUsedCartographyTable")) { + trackedPlayer.setIntFlag("initTimesUsedCartographyTable", player.getStatistic(Statistic.INTERACT_WITH_CARTOGRAPHY_TABLE)); + } + if (!trackedPlayer.getFlagExists("timesUsedCartographyTableComplete")) { + trackedPlayer.setBoolFlag("timesUsedCartographyTableComplete", false); + } + + // Music discs played + // DgPopupMusicDiscs + // Inspo: AD: www.queercraft.net/radio, the old-fashioned way! + if (!trackedPlayer.getFlagExists("initMusicDiscsPlayed")) { + trackedPlayer.setIntFlag("initMusicDiscsPlayed", player.getStatistic(Statistic.RECORD_PLAYED)); + } + if (!trackedPlayer.getFlagExists("musicDiscsComplete")) { + trackedPlayer.setBoolFlag("musicDiscsComplete", false); + } + + // The following ones don't use statistics, these are tracked via events + + // Blocks placed + // DgPopupBlocksPlaced + // Inspo: oi, your block license has ran out. renew it for M0.00. + if (!trackedPlayer.getFlagExists("initBlocksPlaced")) { + trackedPlayer.setIntFlag("initBlocksPlaced", 0); + } + if (!trackedPlayer.getFlagExists("blocksPlacedComplete")) { + trackedPlayer.setBoolFlag("blocksPlacedComplete", false); + } + + // Getting down to 3 hearts + // DgPopupLowHealth + // Inspo: Get Queercraft health insurance + if (!trackedPlayer.getFlagExists("lowHealthComplete")) { + trackedPlayer.setBoolFlag("lowHealthComplete", false); + } + + // After 15 messages in chat + // DgPopupChatMessages + // Inspo: Get LGBTQ+ for the full Queercraft experience + if (!trackedPlayer.getFlagExists("initChatMessages")) { + trackedPlayer.setIntFlag("initChatMessages", 0); + } + if (!trackedPlayer.getFlagExists("chatMessagesComplete")) { + trackedPlayer.setBoolFlag("chatMessagesComplete", false); + } + + // After placing down redstone + // DgPopupRedstonePlaced + // Inspo: Get your "Redstone for dummies" book today + if (!trackedPlayer.getFlagExists("redstonePlacedComplete")) { + trackedPlayer.setBoolFlag("redstonePlacedComplete", false); + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index d75e848..9f66b3e 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -2,3 +2,11 @@ name: AprilFools2024 version: '${version}' main: me.diademiemi.aprilfools2024.AprilFools2024 api-version: '1.13' +authors: [diademiemi] +depend: ["InvUiLib"] +commands: + aprilfools2024: + description: April Fools 2024 + usage: /aprilfools2024 + aliases: [] + permission: aprilfools2024.admin \ No newline at end of file