├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── archive │ └── create-release.yaml └── workflows │ └── run-tests.yaml ├── .gitignore ├── .mvn └── maven.config ├── BetterRTPAddons ├── README.md ├── pom.xml └── src │ └── main │ ├── java │ └── me │ │ └── SuperRonanCraft │ │ └── BetterRTPAddons │ │ ├── Addon.java │ │ ├── AddonMessages.java │ │ ├── AddonsCommand.java │ │ ├── AddonsHandler.java │ │ ├── AddonsMessages.java │ │ ├── Main.java │ │ ├── PermissionNodeAddon.java │ │ ├── addons │ │ ├── commands │ │ │ ├── AddonCommands.java │ │ │ └── CommandsLoader.java │ │ ├── extraEffects │ │ │ ├── AddonExtraEffects.java │ │ │ ├── ExtraEffectsEffect.java │ │ │ └── ExtraEffectsEffect_Skyhigh.java │ │ ├── flashback │ │ │ ├── AddonFlashback.java │ │ │ ├── FlashbackDatabase.java │ │ │ ├── FlashbackMessages.java │ │ │ ├── FlashbackPlayer.java │ │ │ └── FlashbackPlayerInfo.java │ │ ├── interfaces │ │ │ ├── AddonInterface.java │ │ │ ├── InterfaceCommand.java │ │ │ └── InterfaceMenus.java │ │ ├── logger │ │ │ ├── AddonLogger.java │ │ │ └── LoggerDatabase.java │ │ ├── magicStick │ │ │ ├── AddonMagicStick.java │ │ │ ├── MagicStickEvents.java │ │ │ ├── MagicStickMessages.java │ │ │ └── cmds │ │ │ │ ├── MagicStickCommand.java │ │ │ │ ├── MagicStickCommand_Give.java │ │ │ │ └── MagicStickCommands.java │ │ ├── parties │ │ │ ├── AddonParty.java │ │ │ ├── HelperParty.java │ │ │ ├── PartyData.java │ │ │ ├── PartyHandler.java │ │ │ ├── PartyMessages.java │ │ │ └── cmds │ │ │ │ ├── PartyCommand.java │ │ │ │ ├── PartyCommand_Accept.java │ │ │ │ ├── PartyCommand_Invite.java │ │ │ │ ├── PartyCommand_Kick.java │ │ │ │ ├── PartyCommand_Leave.java │ │ │ │ ├── PartyCommand_ReadyUp.java │ │ │ │ ├── PartyCommands.java │ │ │ │ └── PartyCommandsTabable.java │ │ ├── portals │ │ │ ├── AddonPortals.java │ │ │ ├── PortalsDatabase.java │ │ │ ├── PortalsEvents.java │ │ │ ├── PortalsMessages.java │ │ │ ├── cmds │ │ │ │ ├── LocationFinder.java │ │ │ │ ├── PortalsCommand.java │ │ │ │ ├── PortalsCommand_Create.java │ │ │ │ ├── PortalsCommand_List.java │ │ │ │ ├── PortalsCommand_Loc1.java │ │ │ │ ├── PortalsCommand_Loc2.java │ │ │ │ ├── PortalsCommand_Remove.java │ │ │ │ ├── PortalsCommands.java │ │ │ │ └── PortalsCommandsTabable.java │ │ │ └── region │ │ │ │ ├── PortalsCache.java │ │ │ │ └── PortalsRegionInfo.java │ │ └── rtpmenu │ │ │ ├── AddonRTPMenu.java │ │ │ ├── MenuData.java │ │ │ ├── RTPMenuWorldInfo.java │ │ │ ├── RTPMenu_Refresh.java │ │ │ ├── RTPMenu_SelectWorld.java │ │ │ └── RTPMenu_Settings.java │ │ ├── cmds │ │ ├── AddonsCommand_Help.java │ │ ├── AddonsCommand_List.java │ │ ├── AddonsCommand_Version.java │ │ ├── AddonsCommands.java │ │ └── AddonsCommandsTabable.java │ │ ├── database │ │ ├── Database.java │ │ ├── DatabaseColumn.java │ │ ├── Error.java │ │ └── Errors.java │ │ ├── packets │ │ ├── AbstractPacket.java │ │ ├── BlockChangeArray.java │ │ ├── WrapperPlayServerBlockChange.java │ │ ├── WrapperPlayServerMultiBlockChange.java │ │ └── WrapperPlayServerNamedSoundEffect.java │ │ └── util │ │ ├── Files.java │ │ ├── LangFile.java │ │ ├── LocSerialization.java │ │ ├── Message_ADDONS.java │ │ └── ReloadListener.java │ └── resources │ ├── config.yml │ ├── ideas.yml │ ├── lang │ ├── en.yml │ └── tr.yml │ └── plugin.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── NodeServer ├── index.html ├── index.js ├── package.json └── pom.xml ├── README.md ├── RTPEachWorld ├── pom.xml └── src │ └── me │ └── superronancraft │ └── rtpeachworld │ ├── DatabasePlayers.java │ ├── Main.java │ └── PlayerData.java ├── lib ├── FactionsBridge-1.3.8.jar └── Residence5.1.4.1.jar ├── pom.xml ├── settings.xml ├── src └── main │ ├── java │ └── me │ │ └── SuperRonanCraft │ │ └── BetterRTP │ │ ├── BetterRTP.java │ │ ├── player │ │ ├── PlayerInfo.java │ │ ├── commands │ │ │ ├── Commands.java │ │ │ ├── RTPCommand.java │ │ │ ├── RTPCommandHelpable.java │ │ │ ├── RTPCommandType.java │ │ │ ├── RTP_SETUP_TYPE.java │ │ │ └── types │ │ │ │ ├── CmdBiome.java │ │ │ │ ├── CmdDeveloper.java │ │ │ │ ├── CmdEdit.java │ │ │ │ ├── CmdHelp.java │ │ │ │ ├── CmdInfo.java │ │ │ │ ├── CmdLocation.java │ │ │ │ ├── CmdLogger.java │ │ │ │ ├── CmdPlayer.java │ │ │ │ ├── CmdPlayerSudo.java │ │ │ │ ├── CmdQueue.java │ │ │ │ ├── CmdReload.java │ │ │ │ ├── CmdSettings.java │ │ │ │ ├── CmdTeleport.java │ │ │ │ ├── CmdTest.java │ │ │ │ ├── CmdVersion.java │ │ │ │ └── CmdWorld.java │ │ ├── events │ │ │ ├── Click.java │ │ │ ├── Custom.java │ │ │ ├── Damage.java │ │ │ ├── Death.java │ │ │ ├── EventListener.java │ │ │ ├── Interact.java │ │ │ ├── Join.java │ │ │ ├── Leave.java │ │ │ ├── Teleport.java │ │ │ └── WorldLoad.java │ │ └── rtp │ │ │ ├── RTP.java │ │ │ ├── RTPDelay.java │ │ │ ├── RTPLoader.java │ │ │ ├── RTPPlayer.java │ │ │ ├── RTPPluginValidation.java │ │ │ ├── RTPSetupInformation.java │ │ │ ├── RTPTeleport.java │ │ │ ├── RTP_ERROR_REQUEST_REASON.java │ │ │ ├── RTP_PlayerInfo.java │ │ │ ├── RTP_SHAPE.java │ │ │ ├── RTP_TYPE.java │ │ │ ├── effects │ │ │ ├── RTPEffect_Particles.java │ │ │ ├── RTPEffect_Potions.java │ │ │ ├── RTPEffect_Sounds.java │ │ │ ├── RTPEffect_Titles.java │ │ │ └── RTPEffects.java │ │ │ └── packets │ │ │ ├── AbstractPacket.java │ │ │ └── WrapperPlayServerNamedSoundEffect.java │ │ ├── references │ │ ├── PermissionCheck.java │ │ ├── PermissionNode.java │ │ ├── Permissions.java │ │ ├── RTPLogger.java │ │ ├── WarningHandler.java │ │ ├── customEvents │ │ │ ├── RTPEvent.java │ │ │ ├── RTP_CancelledEvent.java │ │ │ ├── RTP_CommandEvent.java │ │ │ ├── RTP_CommandEvent_After.java │ │ │ ├── RTP_FailedEvent.java │ │ │ ├── RTP_FindLocationEvent.java │ │ │ ├── RTP_SettingUpEvent.java │ │ │ ├── RTP_TeleportEvent.java │ │ │ ├── RTP_TeleportPostEvent.java │ │ │ └── RTP_TeleportPreEvent.java │ │ ├── database │ │ │ ├── DatabaseChunkData.java │ │ │ ├── DatabaseCooldowns.java │ │ │ ├── DatabaseHandler.java │ │ │ ├── DatabasePlayers.java │ │ │ ├── DatabaseQueue.java │ │ │ ├── Error.java │ │ │ ├── Errors.java │ │ │ └── SQLite.java │ │ ├── depends │ │ │ ├── DepEconomy.java │ │ │ ├── DepEssentials.java │ │ │ ├── DepPerms.java │ │ │ ├── DepPlaceholderAPI.java │ │ │ └── regionPlugins │ │ │ │ ├── REGIONPLUGINS.java │ │ │ │ ├── RTP_CrashClaim.java │ │ │ │ ├── RTP_FactionsBridge.java │ │ │ │ ├── RTP_FactionsUUID.java │ │ │ │ ├── RTP_GriefDefender.java │ │ │ │ ├── RTP_GriefPrevention.java │ │ │ │ ├── RTP_HuskClaims.java │ │ │ │ ├── RTP_HuskTowns.java │ │ │ │ ├── RTP_KingdomsX.java │ │ │ │ ├── RTP_Lands.java │ │ │ │ ├── RTP_MinePlots.java │ │ │ │ ├── RTP_Pueblos.java │ │ │ │ ├── RTP_RedProtect.java │ │ │ │ ├── RTP_Residence.java │ │ │ │ ├── RTP_SaberFactions.java │ │ │ │ ├── RTP_Towny.java │ │ │ │ ├── RTP_UltimateClaims.java │ │ │ │ ├── RTP_WorldGuard.java │ │ │ │ ├── RTP_hClaims.java │ │ │ │ └── RegionPluginCheck.java │ │ ├── file │ │ │ ├── FileData.java │ │ │ ├── FileLanguage.java │ │ │ ├── FileOther.java │ │ │ └── Files.java │ │ ├── helpers │ │ │ ├── HelperDate.java │ │ │ ├── HelperRTP.java │ │ │ ├── HelperRTP_Check.java │ │ │ ├── HelperRTP_Command.java │ │ │ ├── HelperRTP_EditWorlds.java │ │ │ └── HelperRTP_Info.java │ │ ├── invs │ │ │ ├── RTPInventories.java │ │ │ ├── RTP_INV_SETTINGS.java │ │ │ ├── RTP_SETTINGS.java │ │ │ ├── SETTINGS_TYPE.java │ │ │ ├── enums │ │ │ │ ├── RTPInventory.java │ │ │ │ ├── RTPInventory_Defaults.java │ │ │ │ └── RTP_INV_ITEMS.java │ │ │ └── types │ │ │ │ ├── RTPInvBlacklist.java │ │ │ │ ├── RTPInvCoordinates.java │ │ │ │ ├── RTPInvMain.java │ │ │ │ └── RTPInvWorlds.java │ │ ├── messages │ │ │ ├── Message.java │ │ │ ├── MessageData.java │ │ │ ├── Message_RTP.java │ │ │ ├── MessagesCore.java │ │ │ ├── MessagesHelp.java │ │ │ ├── MessagesUsage.java │ │ │ └── placeholder │ │ │ │ ├── PlaceholderAnalyzer.java │ │ │ │ └── Placeholders.java │ │ ├── player │ │ │ ├── HelperPlayer.java │ │ │ └── playerdata │ │ │ │ ├── PlayerData.java │ │ │ │ ├── PlayerDataManager.java │ │ │ │ └── PlayerData_Menus.java │ │ ├── rtpinfo │ │ │ ├── CooldownData.java │ │ │ ├── CooldownHandler.java │ │ │ ├── PermissionGroup.java │ │ │ ├── QueueData.java │ │ │ ├── QueueGenerator.java │ │ │ ├── QueueHandler.java │ │ │ ├── RandomLocation.java │ │ │ └── worlds │ │ │ │ ├── RTPWorld.java │ │ │ │ ├── RTPWorld_Defaulted.java │ │ │ │ ├── WORLD_TYPE.java │ │ │ │ ├── WorldCustom.java │ │ │ │ ├── WorldDefault.java │ │ │ │ ├── WorldLocation.java │ │ │ │ ├── WorldPermissionGroup.java │ │ │ │ └── WorldPlayer.java │ │ ├── settings │ │ │ ├── Settings.java │ │ │ └── SoftDepends.java │ │ └── web │ │ │ ├── LogUploader.java │ │ │ ├── Metrics.java │ │ │ └── Updater.java │ │ └── versions │ │ ├── AsyncHandler.java │ │ └── FoliaHandler.java │ └── resources │ ├── config.yml │ ├── economy.yml │ ├── effects.yml │ ├── ideas.yml │ ├── lang │ ├── README.md │ ├── br.yml │ ├── chs.yml │ ├── cht.yml │ ├── cs.yml │ ├── da.yml │ ├── de.yml │ ├── en.yml │ ├── es.yml │ ├── fr.yml │ ├── he.yml │ ├── hu.yml │ ├── it.yml │ ├── ja.yml │ ├── nl.yml │ ├── no.yml │ ├── pl.yml │ ├── ro.yml │ ├── ru.yml │ ├── tr.yml │ ├── uk.yml │ └── vi.yml │ ├── locations.yml │ ├── permissions.yml │ ├── placeholders.yml │ ├── plugin.yml │ └── signs.yml └── todo.yml /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a report refering a potential/known bug 4 | 5 | --- 6 | 7 | **Plugin Version**: 8 | 9 | 10 | **Describe The Bug**: 11 | 12 | 13 | **How To Reproduce**: 14 | 15 | 16 | 17 | 18 | 19 | **Expected Behavior**: 20 | 21 | 22 | **Screenshots/Error Log**: 23 | 24 | 25 | **Additional Context**: 26 | 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Suggest an idea for this plugin 4 | 5 | --- 6 | 7 | **Plugin Version**: 8 | 9 | 10 | **Request**: 11 | 12 | 13 | **How/Why**: 14 | 15 | 16 | **Additional Context**: 17 | -------------------------------------------------------------------------------- /.github/archive/create-release.yaml: -------------------------------------------------------------------------------- 1 | #name: Create Release 2 | # 3 | #on: 4 | # push: 5 | # tags: 6 | # - '[0-9]+.[0-9]+.[0-9]+*' 7 | # 8 | #jobs: 9 | # build-and-release: 10 | # runs-on: ubuntu-latest 11 | # 12 | # steps: 13 | # - name: Checkout code 14 | # uses: actions/checkout@v2 15 | # 16 | # - name: Set up JDK 17 | # uses: actions/setup-java@v2 18 | # with: 19 | # distribution: 'adopt' 20 | # java-version: '11' 21 | # 22 | # - name: Extract artifact ID and version from pom.xml 23 | # run: | 24 | # ARTIFACT_ID=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.artifactId}' --non-recursive exec:exec) 25 | # VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec) 26 | # echo "ARTIFACT_ID=$ARTIFACT_ID" >> $GITHUB_ENV 27 | # echo "VERSION=$VERSION" >> $GITHUB_ENV 28 | # 29 | # - name: Build with Maven 30 | # run: mvn clean install --settings settings.xml --batch-mode -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true 31 | # 32 | # - name: Create GitHub Release 33 | # id: create_release 34 | # uses: actions/create-release@v1 35 | # env: 36 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 37 | # with: 38 | # tag_name: ${{ github.ref }} 39 | # release_name: Release ${{ github.ref }} 40 | # body: | 41 | # Changes in this Release 42 | # - Add a summary of changes or refer to the changelog. 43 | # draft: false 44 | # prerelease: false 45 | # 46 | # - name: Upload JAR Artifact to Release 47 | # uses: actions/upload-release-asset@v1 48 | # env: 49 | # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 50 | # with: 51 | # upload_url: ${{ steps.create_release.outputs.upload_url }} 52 | # asset_path: ./target/${{ env.ARTIFACT_ID }}-${{ env.VERSION }}.jar 53 | # asset_name: ${{ env.ARTIFACT_ID }}-${{ env.VERSION }}.jar 54 | # asset_content_type: application/java-archive 55 | -------------------------------------------------------------------------------- /.github/workflows/run-tests.yaml: -------------------------------------------------------------------------------- 1 | name: Maven Tests 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Set up JDK 17 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 17 16 | 17 | - name: Configure Maven settings 18 | run: cp settings.xml $HOME/.m2/settings.xml 19 | 20 | - name: Build and test with Maven 21 | run: mvn test 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | .git/ 3 | .settings/ 4 | .classpath/ 5 | .project/ 6 | target 7 | .idea 8 | *.iml 9 | BetterRTP.wiki/ 10 | .DS_Store 11 | .vscode/ 12 | node_modules/ 13 | -------------------------------------------------------------------------------- /.mvn/maven.config: -------------------------------------------------------------------------------- 1 | -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true 2 | -------------------------------------------------------------------------------- /BetterRTPAddons/README.md: -------------------------------------------------------------------------------- 1 |

2 | Welcome to BetterRTPAddons's repository! 3 |

4 | 5 | BetterRTP-Addons is a paid resource, adding optional middleware to BetterRTP to help financially support the developement of BetterRTP. 6 | But this can be compiled free of charge if you know how to compile maven resources! 7 | 8 | ## Where's the Lang files?/Want to Contribute translating? 9 | All language files are located [here](src/main/resources/lang) 10 | feel free to fork one of the language files and help translate! 11 | 12 | ## Libraries 13 | BetterRTPAddons uses and is compiled with the following libraries: 14 | 15 | - [PaperLib](https://github.com/PaperMC/PaperLib) (included) - Library for interfacing with PaperMC specific APIs, used for async chunk loading. 16 | 17 | ## Where's the Wiki? 18 | The wiki is available [here](../../../wiki)! 19 | 20 |

21 | Chat with us on Discord
22 | Discord
23 | Have a Suggestion? Make an issue!
24 | GitHub issues
25 |
26 | Thank you for viewing the Wiki for BetterRTP!
27 | Did this wiki help you out? Please give it a Star so I know it's getting use!
28 |
29 | Check out my other plugins! 30 |

31 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Addon.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 5 | 6 | public interface Addon { 7 | 8 | //Addon will check if it can be enabled 9 | boolean isEnabled(); 10 | 11 | //Load the addon if enabled 12 | void load(); 13 | 14 | //Unload the addon if enabled 15 | void unload(); 16 | 17 | RTPCommand getCmd(); 18 | 19 | //Ability to grab a file 20 | default Files.FILETYPE getFile(Files.FILETYPE filetype) { 21 | return Main.getInstance().getFiles().getType(filetype); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonMessages.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | public class AddonMessages implements AddonsMessages { 6 | private static final String preM = "Addons."; 7 | 8 | public String getBaseHelp() { 9 | return getLang().getString("Help.Base.Help"); 10 | } 11 | 12 | public String getBaseList() { 13 | return getLang().getString("Help.Base.List"); 14 | } 15 | 16 | public String getListPrefix() { 17 | return getLang().getString(preM + "List.Prefix"); 18 | } 19 | 20 | public String getListDisabled() { 21 | return getLang().getString(preM + "List.Disabled"); 22 | } 23 | 24 | public String getListEnabled() { 25 | return getLang().getString(preM + "List.Enabled"); 26 | } 27 | 28 | public String getHelp() { 29 | return getLang().getString("Help.Addons"); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/AddonsMessages.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.messages.Message; 4 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 5 | import me.SuperRonanCraft.BetterRTPAddons.util.LangFile; 6 | import me.SuperRonanCraft.BetterRTPAddons.util.Message_ADDONS; 7 | import org.bukkit.command.CommandSender; 8 | 9 | import java.util.List; 10 | 11 | public interface AddonsMessages { 12 | 13 | default LangFile getLang() { 14 | return Main.getInstance().getFiles().getLang(); 15 | } 16 | 17 | default void sms(CommandSender sendi, String msg) { 18 | Message_RTP.sms(sendi, msg); 19 | } 20 | 21 | default void sms(CommandSender sendi, List msg) { 22 | Message_ADDONS.sms(sendi, msg, null); 23 | } 24 | 25 | default String color(String str) { 26 | return Message.color(str); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/Main.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 4 | import me.SuperRonanCraft.BetterRTPAddons.util.ReloadListener; 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.plugin.java.JavaPlugin; 7 | 8 | public class Main extends JavaPlugin { 9 | 10 | private static Main instance; 11 | private final AddonsHandler addonsHandler = new AddonsHandler(); 12 | private final Files files = new Files(); 13 | public final AddonMessages msgs = new AddonMessages(); 14 | private final ReloadListener reloadListener = new ReloadListener(); 15 | 16 | @Override 17 | public void onEnable() { 18 | instance = this; 19 | Bukkit.getPluginManager().registerEvents(reloadListener, this); 20 | load(); 21 | } 22 | 23 | @Override 24 | public void onDisable() { 25 | addonsHandler.unload(); 26 | } 27 | 28 | public void load() { 29 | files.load(); 30 | addonsHandler.load(); 31 | } 32 | 33 | public Files getFiles() { 34 | return files; 35 | } 36 | 37 | public AddonsHandler getAddonsHandler() { 38 | return addonsHandler; 39 | } 40 | 41 | public static Main getInstance() { 42 | return instance; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/PermissionNodeAddon.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; 5 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 6 | 7 | public enum PermissionNodeAddon implements PermissionCheck { 8 | 9 | PORTALS("addon.portals"), 10 | MAGICSTICK("addon.magicstick"), 11 | PARTY("addon.party"), 12 | ; 13 | 14 | @Getter private final String node; 15 | 16 | PermissionNodeAddon(String node) { 17 | this.node = PermissionCheck.getPrefix() + node; 18 | } 19 | 20 | @Override public boolean isDev() { 21 | return false; 22 | } 23 | 24 | } -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/AddonCommands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.commands; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 5 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 6 | 7 | public class AddonCommands implements Addon { 8 | 9 | private final String name = "Commands"; 10 | private final CommandsLoader loader = new CommandsLoader(); 11 | 12 | @Override 13 | public boolean isEnabled() { 14 | return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); 15 | } 16 | 17 | @Override 18 | public void load() { 19 | loader.load(); 20 | } 21 | 22 | @Override 23 | public void unload() { 24 | loader.unload(); 25 | } 26 | 27 | @Override 28 | public RTPCommand getCmd() { 29 | return null; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/commands/CommandsLoader.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.commands; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CancelledEvent; 4 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; 5 | import me.SuperRonanCraft.BetterRTPAddons.Main; 6 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 7 | import org.bukkit.Bukkit; 8 | import org.bukkit.entity.Player; 9 | import org.bukkit.event.EventHandler; 10 | import org.bukkit.event.HandlerList; 11 | import org.bukkit.event.Listener; 12 | 13 | import java.util.HashMap; 14 | import java.util.List; 15 | 16 | public class CommandsLoader implements Listener { 17 | 18 | HashMap> commands = new HashMap<>(); 19 | 20 | void load() { 21 | Files.FILETYPE file = getFile(); 22 | String name = "Commands"; 23 | commands.clear(); 24 | for (Command_types type : Command_types.values()) { 25 | String path = name + ".Events." + type.path; 26 | if (file.getBoolean(path + ".Enabled")) { 27 | List cmds = file.getStringList(path + ".Commands"); 28 | commands.put(type, cmds); 29 | } 30 | } 31 | Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); 32 | } 33 | 34 | void unload() { 35 | HandlerList.unregisterAll(this); 36 | } 37 | 38 | private Files.FILETYPE getFile() { 39 | return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); 40 | } 41 | 42 | //Events 43 | @EventHandler 44 | public void eventTeleport(RTP_TeleportEvent event) { 45 | if (!commands.containsKey(Command_types.TELEPORT)) return; 46 | executeCommands(commands.get(Command_types.TELEPORT), event.getPlayer()); 47 | } 48 | 49 | @EventHandler 50 | public void eventCancelled(RTP_CancelledEvent event) { 51 | if (!commands.containsKey(Command_types.CANCELLED)) return; 52 | executeCommands(commands.get(Command_types.CANCELLED), event.getPlayer()); 53 | } 54 | 55 | private void executeCommands(List cmds, Player p) { 56 | for (String cmd : cmds) { 57 | cmd = cmd.replaceAll("%player_name%", p.getName()); 58 | Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd); 59 | } 60 | } 61 | 62 | } 63 | 64 | enum Command_types { 65 | TELEPORT("Teleport"), 66 | CANCELLED("Cancelled"); 67 | 68 | final String path; 69 | 70 | Command_types(String path) { 71 | this.path = path; 72 | } 73 | } -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/AddonExtraEffects.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 5 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 6 | import org.bukkit.event.Listener; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | public class AddonExtraEffects implements Addon { 12 | 13 | private final String name = "ExtraEffects"; 14 | private final List effects = new ArrayList<>(); //List of enabled effects 15 | 16 | @Override 17 | public boolean isEnabled() { 18 | return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); 19 | } 20 | 21 | @Override 22 | public void load() { 23 | this.effects.clear(); 24 | for (Effects effect : Effects.values()) 25 | if (effect.isEnabled()) { 26 | effect.load(); 27 | this.effects.add(effect); 28 | } 29 | } 30 | 31 | @Override 32 | public void unload() { 33 | for (Effects effect : this.effects) 34 | effect.unload(); 35 | this.effects.clear(); 36 | } 37 | 38 | @Override 39 | public RTPCommand getCmd() { 40 | return null; 41 | } 42 | 43 | enum Effects { 44 | SKYHIGH(new ExtraEffectsEffect_Skyhigh()); 45 | 46 | private final ExtraEffectsEffect effect; 47 | 48 | Effects(ExtraEffectsEffect effect) { 49 | this.effect = effect; 50 | } 51 | 52 | boolean isEnabled() { 53 | return effect.isEnabled(); 54 | } 55 | 56 | void load() { 57 | effect.load(); 58 | } 59 | 60 | void unload() { 61 | effect.unload(); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; 2 | 3 | public interface ExtraEffectsEffect { 4 | 5 | void load(); 6 | 7 | boolean isEnabled(); 8 | 9 | void unload(); 10 | 11 | } 12 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/extraEffects/ExtraEffectsEffect_Skyhigh.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.extraEffects; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportEvent; 4 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE; 5 | import me.SuperRonanCraft.BetterRTPAddons.Main; 6 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 7 | import org.bukkit.Bukkit; 8 | import org.bukkit.entity.EntityType; 9 | import org.bukkit.entity.Player; 10 | import org.bukkit.event.EventHandler; 11 | import org.bukkit.event.HandlerList; 12 | import org.bukkit.event.Listener; 13 | import org.bukkit.event.entity.EntityDamageEvent; 14 | 15 | //Teleport the player VERY high into the sky 16 | public class ExtraEffectsEffect_Skyhigh implements ExtraEffectsEffect, Listener { 17 | 18 | private int offset; 19 | 20 | @Override 21 | public void load() { 22 | Files.FILETYPE file = Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG); 23 | this.offset = file.getInt("ExtraEffects.YOffset.Offset"); 24 | Main.getInstance().getServer().getPluginManager().registerEvents(this, Main.getInstance()); 25 | } 26 | 27 | @Override 28 | public boolean isEnabled() { 29 | return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("ExtraEffects.YOffset.Enabled"); 30 | } 31 | 32 | @Override 33 | public void unload() { 34 | HandlerList.unregisterAll(this); 35 | } 36 | 37 | @EventHandler 38 | void tpEvent(RTP_TeleportEvent e) { 39 | if (e.getWorldType() == WORLD_TYPE.NETHER) 40 | return; 41 | e.changeLocation(e.getLocation().add(0, offset, 0)); 42 | new PlayerFalling(e.getPlayer()); 43 | } 44 | 45 | private static class PlayerFalling implements Listener { 46 | Player p; 47 | 48 | PlayerFalling(Player p) { 49 | this.p = p; 50 | Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); 51 | } 52 | 53 | @EventHandler 54 | void event(EntityDamageEvent e) { 55 | if (e.getEntityType() == EntityType.PLAYER && e.getEntity() == p) { 56 | e.setCancelled(true); 57 | unload(); 58 | } 59 | } 60 | 61 | void unload() { 62 | HandlerList.unregisterAll(this); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackMessages.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public class FlashbackMessages implements AddonsMessages { 7 | private static String preM = "Flashback."; 8 | 9 | public void getWarning(CommandSender sendi) { 10 | sms(sendi, getLang().getString(preM + "Warning")); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackPlayer.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; 2 | 3 | import io.papermc.lib.PaperLib; 4 | import me.SuperRonanCraft.BetterRTPAddons.Main; 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.Location; 7 | import org.bukkit.entity.Player; 8 | import org.bukkit.scheduler.BukkitTask; 9 | 10 | import java.util.*; 11 | 12 | public class FlashbackPlayer { 13 | Player p; 14 | Location oldLoc; 15 | AddonFlashback plugin; 16 | List tasks = new ArrayList<>(); 17 | 18 | public FlashbackPlayer(AddonFlashback plugin, Player p, Location oldLoc, Long seconds, HashMap warnings) { 19 | this.plugin = plugin; 20 | this.p = p; 21 | this.oldLoc = oldLoc; 22 | if (warnings != null) 23 | createTimers(seconds, orderMap(warnings)); 24 | tasks.add(Bukkit.getScheduler().runTaskLater(Main.getInstance(), runFlashback(seconds), 20L * seconds)); 25 | } 26 | 27 | void createTimers(Long seconds, TreeMap warnings) { 28 | for (Map.Entry entry : warnings.entrySet()) { 29 | String str = entry.getValue(); 30 | long time = seconds - entry.getKey(); 31 | if (time >= 0) 32 | tasks.add(Bukkit.getScheduler().runTaskLater(Main.getInstance(), runWarning(str), 20L * time)); 33 | } 34 | } 35 | 36 | TreeMap orderMap(HashMap warnings) { 37 | return new TreeMap<>(warnings); 38 | } 39 | 40 | private Runnable runFlashback(Long seconds) { 41 | if (!plugin.database.setPlayer(p, oldLoc, System.currentTimeMillis() + (seconds * 1000))) 42 | p.sendMessage("A Database error has occurred!"); 43 | return () -> { 44 | plugin.msgs.getWarning(p); 45 | PaperLib.teleportAsync(p, oldLoc); 46 | completed(); 47 | }; 48 | } 49 | 50 | private Runnable runWarning(String msg) { 51 | return () -> plugin.msgs.sms(p, msg); 52 | } 53 | 54 | public void cancel() { 55 | for (BukkitTask task : tasks) 56 | task.cancel(); 57 | } 58 | 59 | private void completed() { 60 | plugin.players.remove(this); 61 | plugin.database.removePlayer(p); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/flashback/FlashbackPlayerInfo.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.flashback; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.entity.Player; 5 | 6 | public class FlashbackPlayerInfo { 7 | 8 | private final Player player; 9 | private final Location location; 10 | private final Long time; 11 | 12 | public FlashbackPlayerInfo(Player player, Location location, Long time) { 13 | this.player = player; 14 | this.location = location; 15 | this.time = time; 16 | } 17 | 18 | public Player getPlayer() { 19 | return player; 20 | } 21 | 22 | public Location getLocation() { 23 | return location; 24 | } 25 | 26 | public Long getTime() { 27 | return time; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/AddonInterface.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 5 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 6 | 7 | public class AddonInterface implements Addon { 8 | 9 | private String name = "Interface"; 10 | 11 | @Override 12 | public boolean isEnabled() { 13 | return getFile(Files.FILETYPE.CONFIG).getBoolean(name + "Enabled"); 14 | } 15 | 16 | @Override 17 | public void load() { 18 | 19 | } 20 | 21 | @Override 22 | public void unload() { 23 | 24 | } 25 | 26 | @Override 27 | public RTPCommand getCmd() { 28 | return null; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceCommand.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 6 | import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; 7 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 8 | import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; 9 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Create; 10 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc1; 11 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand_Loc2; 12 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommands; 13 | import org.bukkit.command.CommandSender; 14 | 15 | import java.util.List; 16 | 17 | public class InterfaceCommand implements RTPCommand, RTPCommandHelpable { 18 | AddonInterface pl; 19 | 20 | InterfaceCommand(AddonInterface pl) { 21 | this.pl = pl; 22 | } 23 | 24 | public String getName() { 25 | return "interface"; 26 | } 27 | 28 | @Override 29 | public void execute(CommandSender sendi, String label, String[] args) { 30 | sendi.sendMessage("Interface command!"); 31 | } 32 | 33 | @Override 34 | public List tabComplete(CommandSender sendi, String[] args) { 35 | return null; 36 | } 37 | 38 | @Override 39 | public PermissionCheck permission() { 40 | return PermissionNodeAddon.PORTALS; 41 | } 42 | 43 | @Override 44 | public String getHelp() { 45 | return null;//pl.msgs.getHelp(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/interfaces/InterfaceMenus.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.interfaces; 2 | 3 | public class InterfaceMenus {} 4 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/AddonMagicStick.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; 6 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 7 | import me.SuperRonanCraft.BetterRTPAddons.Main; 8 | import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds.MagicStickCommand; 9 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 10 | import org.bukkit.inventory.ItemStack; 11 | 12 | public class AddonMagicStick implements Addon { 13 | 14 | public MagicStickMessages msgs = new MagicStickMessages(); 15 | MagicStickCommand cmd = new MagicStickCommand(this); 16 | public MagicStickEvents events = new MagicStickEvents(); 17 | 18 | @Override 19 | public boolean isEnabled() { 20 | return Main.getInstance().getFiles().getType(Files.FILETYPE.CONFIG).getBoolean("MagicStick.Enabled"); 21 | } 22 | 23 | @Override 24 | public void load() { 25 | HelperRTP_Command.registerCommand(cmd, false); 26 | events.load(); 27 | } 28 | 29 | @Override 30 | public void unload() { 31 | events.unload(); 32 | } 33 | 34 | @Override 35 | public RTPCommand getCmd() { 36 | return cmd; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/MagicStickMessages.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.AddonsMessages; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public class MagicStickMessages implements AddonsMessages { 7 | private static final String preM = "MagicStick."; 8 | 9 | public String getHelp() { 10 | return getLang().getString("Help.MagicStick"); 11 | } 12 | 13 | //Give 14 | public void getGive(CommandSender sendi, String name) { 15 | sms(sendi, getLang().getString(preM + "Give").replace("%player%", name)); 16 | } 17 | 18 | public void getGiven(CommandSender sendi) { 19 | sms(sendi, getLang().getString(preM + "Given")); 20 | } 21 | 22 | public void getPlayerError(CommandSender sendi, String name) { 23 | sms(sendi, getLang().getString(preM + "Player").replace("%player%", name)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 6 | import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; 7 | import me.SuperRonanCraft.BetterRTPAddons.PermissionNodeAddon; 8 | import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; 9 | import org.bukkit.command.CommandSender; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | public class MagicStickCommand implements RTPCommand, RTPCommandHelpable { 15 | 16 | AddonMagicStick pl; 17 | 18 | public MagicStickCommand(AddonMagicStick pl) { 19 | this.pl = pl; 20 | } 21 | 22 | public String getName() { 23 | return "magicstick"; 24 | } 25 | 26 | @Override 27 | public void execute(CommandSender sendi, String label, String[] args) { 28 | if (args.length > 1) 29 | for (subCmd subCmd : subCmd.values()) { 30 | if (args[1].equalsIgnoreCase(subCmd.name())) { 31 | subCmd.cmd.execute(sendi, label, args, pl); 32 | return; 33 | } 34 | } 35 | sendi.sendMessage("Invalid argument!"); 36 | } 37 | 38 | @Override 39 | public List tabComplete(CommandSender sendi, String[] args) { 40 | List list = new ArrayList<>(); 41 | if (args.length == 2) 42 | for (subCmd subCmd : subCmd.values()) { 43 | if (subCmd.name().toLowerCase().startsWith(args[1].toLowerCase())) { 44 | list.add(subCmd.name().toLowerCase()); 45 | } 46 | } 47 | return list; 48 | } 49 | 50 | @Override 51 | public PermissionCheck permission() { 52 | return PermissionNodeAddon.MAGICSTICK; 53 | } 54 | 55 | @Override 56 | public String getHelp() { 57 | return pl.msgs.getHelp(); 58 | } 59 | 60 | private enum subCmd { 61 | GIVE(new MagicStickCommand_Give()); 62 | 63 | MagicStickCommands cmd; 64 | 65 | subCmd(MagicStickCommands cmd) { 66 | this.cmd = cmd; 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommand_Give.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; 4 | import org.bukkit.Bukkit; 5 | import org.bukkit.command.CommandSender; 6 | import org.bukkit.entity.Player; 7 | 8 | public class MagicStickCommand_Give implements MagicStickCommands { 9 | 10 | @Override 11 | public void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addon) { 12 | if (args.length <= 2 && !(sendi instanceof Player)) { 13 | sendi.sendMessage("Console is not able to give themself this item!"); 14 | return; 15 | } 16 | if (args.length <= 2) { 17 | Player p = (Player) sendi; 18 | p.getInventory().addItem(addon.events.item.clone()); 19 | addon.msgs.getGiven(sendi); 20 | } else { 21 | Player p = null; 22 | for (Player plr : Bukkit.getOnlinePlayers()) { 23 | if (plr.getName().toLowerCase().startsWith(args[2].toLowerCase())) { 24 | p = plr; 25 | break; 26 | } 27 | } 28 | if (p != null) { 29 | p.getInventory().addItem(addon.events.item.clone()); 30 | addon.msgs.getGiven(p); 31 | addon.msgs.getGive(sendi, p.getName()); 32 | } else 33 | addon.msgs.getPlayerError(sendi, args[2]); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/magicStick/cmds/MagicStickCommands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.magicStick.AddonMagicStick; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public interface MagicStickCommands { 7 | 8 | void execute(CommandSender sendi, String label, String[] args, AddonMagicStick addonPortals); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/AddonParty.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; 6 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 7 | import me.SuperRonanCraft.BetterRTPAddons.Main; 8 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds.PartyCommand; 9 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 10 | import org.bukkit.event.HandlerList; 11 | import org.bukkit.plugin.PluginManager; 12 | 13 | import java.util.ArrayList; 14 | import java.util.List; 15 | 16 | public class AddonParty implements Addon { 17 | 18 | private static AddonParty instance; 19 | private final String name = "Parties"; 20 | private final PartyCommand cmd = new PartyCommand(this); 21 | public PartyMessages msgs = new PartyMessages(); 22 | public List parties = new ArrayList<>(); 23 | private final PartyHandler handler = new PartyHandler(); 24 | 25 | @Override 26 | public boolean isEnabled() { 27 | return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); 28 | } 29 | 30 | @Override 31 | public void load() { 32 | instance = this; 33 | PluginManager pm = Main.getInstance().getServer().getPluginManager(); 34 | pm.registerEvents(handler, Main.getInstance()); 35 | HelperRTP_Command.registerCommand(cmd, false); 36 | } 37 | 38 | @Override 39 | public void unload() { 40 | HandlerList.unregisterAll(handler); 41 | } 42 | 43 | public static AddonParty getInstance() { 44 | return instance; 45 | } 46 | 47 | @Override 48 | public RTPCommand getCmd() { 49 | return cmd; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/HelperParty.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | import java.util.List; 6 | 7 | public class HelperParty { 8 | 9 | public static boolean isInParty(Player p) { 10 | List parties = getPl().parties; 11 | for (PartyData party : parties) 12 | if (party.contains(p)) 13 | return true; 14 | return false; 15 | } 16 | 17 | public static PartyData getParty(Player p) { 18 | List parties = getPl().parties; 19 | for (PartyData party : parties) 20 | if (party.contains(p)) 21 | return party; 22 | return null; 23 | } 24 | 25 | private static AddonParty getPl() { 26 | return AddonParty.getInstance(); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/PartyHandler.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_SettingUpEvent; 4 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.event.EventHandler; 7 | import org.bukkit.event.Listener; 8 | import org.bukkit.event.player.PlayerQuitEvent; 9 | 10 | public class PartyHandler implements Listener { 11 | 12 | //Dissallow players from teleporting unless all party members are ready 13 | @EventHandler 14 | public void onRTP(RTP_SettingUpEvent e) { 15 | PartyData party = HelperParty.getParty(e.getPlayer()); 16 | if (party != null) { 17 | if (party.isLeader(e.getPlayer())) { 18 | if (!party.allReady()) { //NOT ALL READY 19 | AddonParty.getInstance().msgs.getMembers_NotReady(e.getPlayer(), party.getNotReady()); 20 | e.setCancelled(true); 21 | } //else rtp! 22 | } else { 23 | AddonParty.getInstance().msgs.getOnlyLeader(e.getPlayer(), party.getLeader().getName()); 24 | e.setCancelled(true); 25 | } 26 | } 27 | } 28 | 29 | @EventHandler 30 | public void onRTP_end(RTP_TeleportPostEvent e) { 31 | PartyData party = HelperParty.getParty(e.getPlayer()); 32 | if (party != null && party.isLeader(e.getPlayer())) { 33 | party.tpAll(e); 34 | } 35 | } 36 | 37 | @EventHandler 38 | public void onLeave(PlayerQuitEvent e) { 39 | PartyData party = HelperParty.getParty(e.getPlayer()); 40 | if (party != null) { 41 | if (party.isLeader(e.getPlayer())) { 42 | AddonParty.getInstance().parties.remove(party); 43 | for (Player member : party.getMembers().keySet()) 44 | AddonParty.getInstance().msgs.getMembers_LeaderLeft(member); 45 | } 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand_Invite.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.HelperParty; 5 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.PartyData; 6 | import org.bukkit.Bukkit; 7 | import org.bukkit.command.CommandSender; 8 | import org.bukkit.entity.Player; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class PartyCommand_Invite implements PartyCommands, PartyCommandsTabable { 14 | 15 | @Override 16 | public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { 17 | Player p = (Player) sendi; 18 | if (args.length >= 3) { 19 | Player member = Bukkit.getPlayer(args[2]); 20 | if (member != null && !member.equals(p)) { 21 | PartyData party = HelperParty.getParty(p); 22 | if (party == null) { 23 | party = new PartyData(p); 24 | AddonParty.getInstance().parties.add(party); 25 | } 26 | if (party.isLeader(p)) { 27 | if (party.invite(member)) { 28 | AddonParty.getInstance().msgs.getInvite_Invited(sendi, member.getName()); 29 | AddonParty.getInstance().msgs.getInvite_Notification(member, p.getName()); 30 | } else 31 | AddonParty.getInstance().msgs.getInvite_Already(sendi, member.getName()); 32 | } else 33 | AddonParty.getInstance().msgs.getOnlyLeader(sendi, party.getLeader().getName()); 34 | } else 35 | AddonParty.getInstance().msgs.getNotExist(sendi, args[2]); 36 | } else 37 | AddonParty.getInstance().msgs.usageInvite(sendi, label); 38 | 39 | } 40 | 41 | //rtp party invite [args] 42 | @Override 43 | public List tabComplete(CommandSender sendi, String[] args, AddonParty addon) { 44 | List list = new ArrayList<>(); 45 | if (args.length == 3) { 46 | for (Player p : Bukkit.getOnlinePlayers()) 47 | if (p.getName().toLowerCase().startsWith(args[2].toLowerCase()) && !p.equals(sendi)) 48 | list.add(p.getName()); 49 | } 50 | return list; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand_Kick.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.HelperParty; 5 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.PartyData; 6 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.PartyMessages; 7 | import org.bukkit.Bukkit; 8 | import org.bukkit.command.CommandSender; 9 | import org.bukkit.entity.Player; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | public class PartyCommand_Kick implements PartyCommands, PartyCommandsTabable { 15 | 16 | @Override 17 | public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { 18 | Player p = (Player) sendi; 19 | PartyMessages msgs = AddonParty.getInstance().msgs; 20 | PartyData party = HelperParty.getParty(p); 21 | if (party != null) { 22 | if (party.isLeader(p)) { 23 | if (args.length >= 3) { 24 | Player member = Bukkit.getPlayer(args[2]); 25 | if (member != null) { 26 | if (party.isMember(member)) { 27 | party.remove(member); 28 | msgs.getKick_Kicked(sendi, member.getName()); 29 | msgs.getKick_Notification(member, sendi.getName()); 30 | } else 31 | msgs.getMembers_NotInParty(sendi, member.getName()); 32 | } else 33 | msgs.getNotExist(sendi, args[2]); 34 | } else 35 | msgs.usageKick(sendi, label); 36 | } else 37 | msgs.getKick_OnlyLeader(sendi, party.getLeader().getName()); 38 | } else 39 | msgs.getNotInParty(sendi); 40 | } 41 | 42 | @Override public List tabComplete(CommandSender sendi, String[] args, AddonParty addon) { 43 | List list = new ArrayList<>(); 44 | if (args.length == 3) { 45 | PartyData party = HelperParty.getParty((Player) sendi); 46 | if (party != null) 47 | for (Player p : party.getMembers().keySet()) 48 | if (p.getName().toLowerCase().startsWith(args[2].toLowerCase()) && !p.equals(sendi)) 49 | list.add(p.getName()); 50 | } 51 | return list; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand_Leave.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.HelperParty; 5 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.PartyData; 6 | import org.bukkit.command.CommandSender; 7 | import org.bukkit.entity.Player; 8 | 9 | public class PartyCommand_Leave implements PartyCommands { 10 | 11 | @Override 12 | public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { 13 | Player p = (Player) sendi; 14 | PartyData party = HelperParty.getParty(p); 15 | if (party != null) { 16 | if (party.isLeader(p)) { //Leader deleted party 17 | AddonParty.getInstance().parties.remove(party); 18 | for (Player member : party.getMembers().keySet()) 19 | AddonParty.getInstance().msgs.getMembers_LeaderLeft(member); 20 | } else { 21 | party.remove(p); 22 | AddonParty.getInstance().msgs.getMembers_Leave(sendi, party.getLeader().getName()); 23 | } 24 | } else 25 | AddonParty.getInstance().msgs.getNotInParty(p); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommand_ReadyUp.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.HelperParty; 5 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.PartyData; 6 | import org.bukkit.command.CommandSender; 7 | import org.bukkit.entity.Player; 8 | 9 | public class PartyCommand_ReadyUp implements PartyCommands { 10 | 11 | @Override 12 | public void execute(CommandSender sendi, String label, String[] args, AddonParty addon) { 13 | Player p = (Player) sendi; 14 | PartyData party = HelperParty.getParty(p); 15 | if (party != null) { 16 | if (!party.isLeader(p)) { 17 | if (party.readyUp(p)) 18 | AddonParty.getInstance().msgs.getReady_Readied(sendi); 19 | else 20 | AddonParty.getInstance().msgs.getReady_Already(sendi); 21 | } else 22 | AddonParty.getInstance().msgs.getReady_Leader(sendi); 23 | } else 24 | AddonParty.getInstance().msgs.getNotInParty(sendi); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public interface PartyCommands { 7 | 8 | void execute(CommandSender sendi, String label, String[] args, AddonParty addonPortals); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/parties/cmds/PartyCommandsTabable.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.parties.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.parties.AddonParty; 4 | import org.bukkit.command.CommandSender; 5 | 6 | import java.util.List; 7 | 8 | public interface PartyCommandsTabable { 9 | 10 | List tabComplete(CommandSender sendi, String[] args, AddonParty addon); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/AddonPortals.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Command; 5 | import me.SuperRonanCraft.BetterRTPAddons.Addon; 6 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds.PortalsCommand; 7 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsCache; 8 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 9 | 10 | //Create portals for rtp'ing 11 | public class AddonPortals implements Addon { 12 | 13 | private final String name = "Portals"; 14 | public PortalsMessages msgs = new PortalsMessages(); 15 | private final PortalsCommand cmd = new PortalsCommand(this); 16 | private final PortalsDatabase database = new PortalsDatabase(); 17 | private final PortalsCache portalsCache = new PortalsCache(this); 18 | private final PortalsEvents events = new PortalsEvents(this); 19 | 20 | public boolean isEnabled() { 21 | return getFile(Files.FILETYPE.CONFIG).getBoolean(name + ".Enabled"); 22 | } 23 | 24 | @Override 25 | public void load() { 26 | HelperRTP_Command.registerCommand(cmd, false); 27 | database.load(PortalsDatabase.Columns.values()); 28 | events.load(); 29 | portalsCache.load(); 30 | } 31 | 32 | @Override 33 | public void unload() { 34 | portalsCache.unload(); 35 | events.unregister(); 36 | } 37 | 38 | @Override 39 | public RTPCommand getCmd() { 40 | return cmd; 41 | } 42 | 43 | public PortalsCache getPortals() { 44 | return portalsCache; 45 | } 46 | 47 | public PortalsDatabase getDatabase() { 48 | return database; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/LocationFinder.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import org.bukkit.Material; 4 | import org.bukkit.block.Block; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.util.BlockIterator; 7 | 8 | public interface LocationFinder { 9 | 10 | default Block getTargetBlock(Player player, int range) { 11 | BlockIterator iter = new BlockIterator(player, range); 12 | Block lastBlock = null; 13 | while (iter.hasNext()) { 14 | Block block = iter.next(); 15 | if (block.getType() != Material.AIR) { 16 | lastBlock = block; 17 | break; 18 | } 19 | } 20 | return lastBlock; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_List.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; 5 | import org.bukkit.Location; 6 | import org.bukkit.command.CommandSender; 7 | 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | public class PortalsCommand_List implements PortalsCommands { 12 | 13 | @Override 14 | public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) { 15 | List portalList = addon.getPortals().getRegisteredPortals(); 16 | if (portalList.isEmpty()) { 17 | addon.msgs.getListNone(sendi); 18 | return; 19 | } 20 | String strPrefix = addon.msgs.getListPrefix(); 21 | List list = new ArrayList<>(); 22 | list.add(strPrefix); 23 | String strPortal = addon.msgs.getListPortal(); 24 | for (PortalsRegionInfo portal : portalList) { 25 | String locInfo = "World: " + portal.getLoc1().getWorld().getName() + 26 | " Loc1: " + locToString(portal.getLoc1()) + 27 | " Loc2: " + locToString(portal.getLoc2()); 28 | list.add(strPortal.replace("%name%", portal.getName()).replace("%location%", locInfo)); 29 | } 30 | addon.msgs.sms(sendi, list); 31 | } 32 | 33 | private String locToString(Location loc) { 34 | return "(" + loc.getBlockX() + ", " + loc.getBlockY() + ", " + loc.getBlockZ() + ")"; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc1.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import com.comphenix.protocol.events.PacketContainer; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 5 | import org.bukkit.Location; 6 | import org.bukkit.block.Block; 7 | import org.bukkit.command.CommandSender; 8 | import org.bukkit.entity.Player; 9 | 10 | public class PortalsCommand_Loc1 implements PortalsCommands, LocationFinder { 11 | 12 | private PacketContainer fakeBlock; 13 | 14 | @Override 15 | public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) { 16 | Player p = (Player) sendi; 17 | Block block = getTargetBlock(p, 10); 18 | if (block != null) { 19 | Location loc = block.getLocation(); 20 | addon.msgs.getLocation_1(sendi, loc); 21 | addon.getPortals().cachePortal(p, loc, false); 22 | } else { 23 | addon.msgs.getLocation_Look(sendi); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Loc2.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 4 | import org.bukkit.Location; 5 | import org.bukkit.block.Block; 6 | import org.bukkit.command.CommandSender; 7 | import org.bukkit.entity.Player; 8 | 9 | public class PortalsCommand_Loc2 implements PortalsCommands, LocationFinder { 10 | 11 | @Override 12 | public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) { 13 | Player p = (Player) sendi; 14 | Block block = getTargetBlock(p, 10); 15 | if (block != null) { 16 | Location loc = block.getLocation(); 17 | addon.msgs.getLocation_2(sendi, loc); 18 | addon.getPortals().cachePortal(p, loc, true); 19 | } else { 20 | addon.msgs.getLocation_Look(sendi); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommand_Remove.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 4 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.region.PortalsRegionInfo; 5 | import org.bukkit.command.CommandSender; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class PortalsCommand_Remove implements PortalsCommands, PortalsCommandsTabable { 11 | 12 | @Override 13 | public void execute(CommandSender sendi, String label, String[] args, AddonPortals addon) { 14 | if (args.length < 3) { 15 | addon.msgs.usageRemove(sendi, label); 16 | return; 17 | } 18 | String portalName = args[2]; 19 | for (PortalsRegionInfo portal : addon.getPortals().getRegisteredPortals()) { 20 | if (portal.getName().equals(portalName)) { 21 | if (addon.getPortals().removeRegisteredPortal(portal)) 22 | addon.msgs.getRemoveConfirm(sendi, portal.getName()); 23 | else 24 | sendi.sendMessage("Error Removing portal " + portalName); 25 | return; 26 | } 27 | } 28 | //None found 29 | addon.msgs.getRemoveNone(sendi, portalName); 30 | } 31 | 32 | @Override 33 | public List tabComplete(CommandSender sendi, String[] args, AddonPortals addonPortals) { 34 | List list = new ArrayList<>(); 35 | if (args.length == 3) { 36 | for (PortalsRegionInfo portal : addonPortals.getPortals().getRegisteredPortals()) { 37 | if (portal.getName().toLowerCase().startsWith(args[2].toLowerCase())) 38 | list.add(portal.getName()); 39 | } 40 | } 41 | return list; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public interface PortalsCommands { 7 | 8 | void execute(CommandSender sendi, String label, String[] args, AddonPortals addonPortals); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/cmds/PortalsCommandsTabable.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.addons.portals.AddonPortals; 4 | import org.bukkit.command.CommandSender; 5 | 6 | import java.util.List; 7 | 8 | public interface PortalsCommandsTabable { 9 | 10 | List tabComplete(CommandSender sendi, String[] args, AddonPortals addonPortals); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/portals/region/PortalsRegionInfo.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.portals.region; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.entity.Player; 5 | 6 | import javax.annotation.Nullable; 7 | 8 | public class PortalsRegionInfo { 9 | 10 | protected Location loc_1, loc_2; 11 | protected String name; 12 | protected String world; 13 | 14 | public Location getLoc1() { 15 | return loc_1; 16 | } 17 | 18 | public Location getLoc2() { 19 | return loc_2; 20 | } 21 | 22 | public void setLoc1(Location loc) { 23 | loc_1 = loc; 24 | } 25 | 26 | public void setLoc2(Location loc) { 27 | loc_2 = loc; 28 | } 29 | 30 | public void setName(String name) { 31 | this.name = name; 32 | } 33 | 34 | public void setWorld(@Nullable String world) { 35 | this.world = world; 36 | } 37 | 38 | public String getName() { 39 | return name; 40 | } 41 | 42 | @Nullable 43 | public String getWorld() { 44 | return world; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/MenuData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import org.bukkit.World; 6 | import org.bukkit.inventory.Inventory; 7 | 8 | import java.util.HashMap; 9 | 10 | public class MenuData { 11 | 12 | @Getter @Setter Inventory menuInv; 13 | @Getter @Setter HashMap worldSlots; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenuWorldInfo.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; 2 | 3 | import org.bukkit.Material; 4 | 5 | import java.util.List; 6 | 7 | public class RTPMenuWorldInfo { 8 | 9 | public final String name; 10 | public final Material item; 11 | public final List lore; 12 | public final int slot; 13 | 14 | RTPMenuWorldInfo(String name, Material item, List lore, int slot) { 15 | this.name = name; 16 | this.item = item; 17 | this.lore = lore; 18 | this.slot = slot; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_Refresh.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.Main; 4 | import org.bukkit.Bukkit; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.event.EventHandler; 7 | import org.bukkit.event.HandlerList; 8 | import org.bukkit.event.Listener; 9 | import org.bukkit.event.inventory.InventoryCloseEvent; 10 | import org.bukkit.event.player.PlayerQuitEvent; 11 | import org.bukkit.scheduler.BukkitRunnable; 12 | import org.bukkit.scheduler.BukkitTask; 13 | 14 | public class RTPMenu_Refresh implements Listener { 15 | 16 | private final AddonRTPMenu addon; 17 | private final Player player; 18 | private final int time; 19 | private BukkitTask task; 20 | private boolean opening = true; 21 | 22 | RTPMenu_Refresh(AddonRTPMenu addon, Player player, int time) { 23 | this.addon = addon; 24 | this.player = player; 25 | this.time = time; 26 | if (time > 0) { 27 | Bukkit.getPluginManager().registerEvents(this, Main.getInstance()); 28 | start(); 29 | } else { 30 | RTPMenu_SelectWorld.createInv(addon, player); 31 | } 32 | } 33 | 34 | private void start() { 35 | opening = true; 36 | if (!RTPMenu_SelectWorld.createInv(addon, player)) { 37 | cancel(); 38 | return; 39 | } 40 | opening = false; 41 | this.task = new BukkitRunnable() { 42 | @Override public void run() { 43 | start(); 44 | } 45 | }.runTaskLater(Main.getInstance(), time); 46 | } 47 | 48 | @EventHandler 49 | void close(InventoryCloseEvent e) { 50 | if (e.getPlayer() == player && !opening) { 51 | cancel(); 52 | } 53 | } 54 | 55 | @EventHandler 56 | void leave(PlayerQuitEvent e) { 57 | if (e.getPlayer() == player) { 58 | cancel(); 59 | } 60 | } 61 | 62 | void cancel() { 63 | if (task != null) 64 | task.cancel(); 65 | HandlerList.unregisterAll(this); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/addons/rtpmenu/RTPMenu_Settings.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.addons.rtpmenu; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTPAddons.util.Files; 5 | 6 | public class RTPMenu_Settings { 7 | @Getter private int refresh, lines; 8 | @Getter private String title; 9 | @Getter private Boolean autoCenter; 10 | 11 | void load(String prefix) { 12 | refresh = Files.FILETYPE.CONFIG.getInt(prefix + ".AutoRefresh"); 13 | lines = Files.FILETYPE.CONFIG.getInt(prefix + ".Lines"); 14 | title = Files.FILETYPE.CONFIG.getString(prefix + ".Title"); 15 | autoCenter = Files.FILETYPE.CONFIG.getBoolean(prefix + ".AutoCenter"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/cmds/AddonsCommand_Help.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 6 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 8 | import me.SuperRonanCraft.BetterRTPAddons.AddonMessages; 9 | import me.SuperRonanCraft.BetterRTPAddons.AddonsCommand; 10 | import me.SuperRonanCraft.BetterRTPAddons.AddonsHandler; 11 | import me.SuperRonanCraft.BetterRTPAddons.Main; 12 | import me.SuperRonanCraft.BetterRTPAddons.util.Message_ADDONS; 13 | import org.bukkit.command.CommandSender; 14 | 15 | import java.util.ArrayList; 16 | import java.util.List; 17 | 18 | public class AddonsCommand_Help implements AddonsCommands, RTPCommandHelpable { 19 | 20 | @Override 21 | public void execute(CommandSender sendi, String label, String[] args) { 22 | List list = new ArrayList<>(); 23 | list.add(MessagesHelp.PREFIX.get()); 24 | for (AddonsCommand.AddonCmds cmds : AddonsCommand.AddonCmds.values()) { 25 | if (cmds.cmd instanceof RTPCommandHelpable) 26 | list.add(((RTPCommandHelpable) cmds.cmd).getHelp().replace("%command%", label)); 27 | } 28 | Main.getInstance().msgs.sms(sendi, list); 29 | } 30 | 31 | @Override 32 | public String getHelp() { 33 | return Main.getInstance().msgs.getBaseHelp(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/cmds/AddonsCommand_List.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 4 | import me.SuperRonanCraft.BetterRTPAddons.AddonMessages; 5 | import me.SuperRonanCraft.BetterRTPAddons.AddonsHandler; 6 | import me.SuperRonanCraft.BetterRTPAddons.Main; 7 | import org.bukkit.command.CommandSender; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | public class AddonsCommand_List implements AddonsCommands, RTPCommandHelpable { 13 | 14 | @Override 15 | public void execute(CommandSender sendi, String label, String[] args) { 16 | AddonMessages msgs = Main.getInstance().msgs; 17 | List list = new ArrayList<>(); 18 | list.add(msgs.getListPrefix()); 19 | for (AddonsHandler.Addons addon : AddonsHandler.Addons.values()) { 20 | String str = msgs.getListDisabled(); 21 | if (addon.isEnabled()) 22 | str = msgs.getListEnabled(); 23 | list.add(str.replace("%addon%", addon.name())); 24 | } 25 | msgs.sms(sendi, list); 26 | } 27 | 28 | @Override 29 | public String getHelp() { 30 | return Main.getInstance().msgs.getBaseList(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/cmds/AddonsCommand_Version.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.cmds; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 5 | import me.SuperRonanCraft.BetterRTP.references.messages.Message; 6 | import me.SuperRonanCraft.BetterRTPAddons.AddonMessages; 7 | import me.SuperRonanCraft.BetterRTPAddons.AddonsHandler; 8 | import me.SuperRonanCraft.BetterRTPAddons.Main; 9 | import me.SuperRonanCraft.BetterRTPAddons.util.Message_ADDONS; 10 | import org.bukkit.command.CommandSender; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | public class AddonsCommand_Version implements AddonsCommands { 16 | 17 | @Override 18 | public void execute(CommandSender sendi, String label, String[] args) { 19 | Message_ADDONS.sms(sendi, "&aVersion #&e" + Main.getInstance().getDescription().getVersion()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/cmds/AddonsCommands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.cmds; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | public interface AddonsCommands { 6 | 7 | void execute(CommandSender sendi, String label, String[] args); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/cmds/AddonsCommandsTabable.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.cmds; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | public interface AddonsCommandsTabable { 6 | 7 | void execute(CommandSender sendi, String label, String[] args); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/database/DatabaseColumn.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.database; 2 | 3 | public abstract interface DatabaseColumn { 4 | 5 | String getName(); 6 | 7 | String getType(); 8 | 9 | } 10 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/database/Error.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.database; 2 | 3 | import me.SuperRonanCraft.BetterRTPAddons.Main; 4 | 5 | import java.util.logging.Level; 6 | 7 | public class Error { 8 | 9 | public static void execute(Main plugin, Exception ex){ 10 | plugin.getLogger().log(Level.SEVERE, "Couldn't execute MySQL statement: ", ex); 11 | } 12 | 13 | public static void close(Main plugin, Exception ex){ 14 | plugin.getLogger().log(Level.SEVERE, "Failed to close MySQL connection: ", ex); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/database/Errors.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.database; 2 | 3 | public class Errors { 4 | public static String sqlConnectionExecute(){ 5 | return "Couldn't execute MySQL statement: "; 6 | } 7 | public static String sqlConnectionClose(){ 8 | return "Failed to close MySQL connection: "; 9 | } 10 | public static String noSQLConnection(){ 11 | return "Unable to retreive MYSQL connection: "; 12 | } 13 | public static String noTableFound(){ 14 | return "Database Error: No Table Found"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/packets/WrapperPlayServerBlockChange.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.packets; 2 | 3 | import org.bukkit.Location; 4 | import org.bukkit.World; 5 | 6 | import com.comphenix.protocol.PacketType; 7 | import com.comphenix.protocol.events.PacketContainer; 8 | import com.comphenix.protocol.wrappers.BlockPosition; 9 | import com.comphenix.protocol.wrappers.WrappedBlockData; 10 | 11 | public class WrapperPlayServerBlockChange extends AbstractPacket { 12 | public static final PacketType TYPE = PacketType.Play.Server.BLOCK_CHANGE; 13 | 14 | public WrapperPlayServerBlockChange() { 15 | super(new PacketContainer(TYPE), TYPE); 16 | handle.getModifier().writeDefaults(); 17 | } 18 | 19 | public WrapperPlayServerBlockChange(PacketContainer packet) { 20 | super(packet, TYPE); 21 | } 22 | 23 | /** 24 | * Retrieve Location. 25 | *

26 | * Notes: block Coordinates 27 | * 28 | * @return The current Location 29 | */ 30 | public BlockPosition getLocation() { 31 | return handle.getBlockPositionModifier().read(0); 32 | } 33 | 34 | /** 35 | * Set Location. 36 | * 37 | * @param value - new value. 38 | */ 39 | public void setLocation(BlockPosition value) { 40 | handle.getBlockPositionModifier().write(0, value); 41 | } 42 | 43 | /** 44 | * Retrieve the Bukkit Location. 45 | * 46 | * @param world World for the location 47 | * @return Bukkit Location 48 | */ 49 | public Location getBukkitLocation(World world) { 50 | return getLocation().toVector().toLocation(world); 51 | } 52 | 53 | /** 54 | * Retrieve Block Data. 55 | * 56 | * @return The current Block Data 57 | */ 58 | public WrappedBlockData getBlockData() { 59 | return handle.getBlockData().read(0); 60 | } 61 | 62 | /** 63 | * Set Block Data. 64 | * 65 | * @param value - new value. 66 | */ 67 | public void setBlockData(WrappedBlockData value) { 68 | handle.getBlockData().write(0, value); 69 | } 70 | } -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/LocSerialization.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.util; 2 | 3 | import org.bukkit.Bukkit; 4 | import org.bukkit.Location; 5 | import org.bukkit.World; 6 | 7 | public class LocSerialization { 8 | 9 | public static String getStringFromLocation(Location loc) { 10 | if (loc == null || loc.getWorld() == null) { 11 | return ""; 12 | } 13 | return loc.getWorld().getName() + ":" + loc.getX() + ":" + loc.getY() + ":" + loc.getZ() + ":" + loc.getYaw() + ":" + loc.getPitch() ; 14 | } 15 | 16 | public static Location getLocationFromString(String s) { 17 | if (s == null || s.trim() == "") { 18 | return null; 19 | } 20 | final String[] parts = s.split(":"); 21 | if (parts.length == 6) { 22 | World w = Bukkit.getServer().getWorld(parts[0]); 23 | double x = Double.parseDouble(parts[1]); 24 | double y = Double.parseDouble(parts[2]); 25 | double z = Double.parseDouble(parts[3]); 26 | float yaw = Float.parseFloat(parts[4]); 27 | float pitch = Float.parseFloat(parts[5]); 28 | return new Location(w, x, y, z, yaw, pitch); 29 | } 30 | return null; 31 | } 32 | 33 | public static String getLiteStringFromLocation(Location loc) { 34 | if (loc == null) { 35 | return ""; 36 | } 37 | return loc.getWorld().getName() + ":" + loc.getBlockX() + ":" + loc.getBlockY() + ":" + loc.getBlockZ() ; 38 | } 39 | 40 | public static Location getLiteLocationFromString(String s) { 41 | if (s == null || s.trim() == "") { 42 | return null; 43 | } 44 | final String[] parts = s.split(":"); 45 | if (parts.length == 4) { 46 | World w = Bukkit.getServer().getWorld(parts[0]); 47 | double x = Double.parseDouble(parts[1]); 48 | double y = Double.parseDouble(parts[2]); 49 | double z = Double.parseDouble(parts[3]); 50 | return new Location(w, x, y, z); 51 | } 52 | return null; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/Message_ADDONS.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.util; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.file.FileData; 5 | import me.SuperRonanCraft.BetterRTP.references.messages.Message; 6 | import org.bukkit.command.CommandSender; 7 | 8 | import java.util.List; 9 | 10 | public class Message_ADDONS implements Message { 11 | 12 | public static Message_ADDONS msg = new Message_ADDONS(); 13 | 14 | public static FileData getLang() { 15 | return BetterRTP.getInstance().getFiles().getLang(); 16 | } 17 | 18 | @Override 19 | public FileData lang() { 20 | return getLang(); 21 | } 22 | 23 | public static void sms(CommandSender sendi, String msg) { 24 | Message.sms(Message_ADDONS.msg, sendi, msg); 25 | } 26 | 27 | public static void sms(CommandSender sendi, String msg, Object placeholderInfo) { 28 | Message.sms(Message_ADDONS.msg, sendi, msg, placeholderInfo); 29 | } 30 | 31 | public static void sms(CommandSender sendi, String msg, List placeholderInfo) { 32 | Message.sms(Message_ADDONS.msg, sendi, msg, placeholderInfo); 33 | } 34 | 35 | public static void sms(CommandSender sendi, List msg, List placeholderInfo) { 36 | Message.sms(sendi, msg, placeholderInfo); 37 | } 38 | 39 | public static String getPrefix() { 40 | return Message.getPrefix(Message_ADDONS.msg); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/java/me/SuperRonanCraft/BetterRTPAddons/util/ReloadListener.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTPAddons.util; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.types.CmdReload; 4 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent; 5 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_CommandEvent_After; 6 | import me.SuperRonanCraft.BetterRTPAddons.Main; 7 | import org.bukkit.Bukkit; 8 | import org.bukkit.event.EventHandler; 9 | import org.bukkit.event.Listener; 10 | 11 | public class ReloadListener implements Listener { 12 | 13 | @EventHandler 14 | void reload(RTP_CommandEvent_After e) { 15 | if (e.getCmd() instanceof CmdReload) 16 | Main.getInstance().load(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/resources/config.yml: -------------------------------------------------------------------------------- 1 | Language-File: 'en.yml' 2 | 3 | ##Addon Flashback 4 | Flashback: 5 | Enabled: false 6 | Timer: 7 | Delay: 600 #In Seconds 8 | Warnings: #Warning messages to send to a player when X amount of time is left 9 | - 600: "&cYou have 10 minutes here, collect and explore and much as you can!" 10 | - 60: "&eYou have 60 seconds left! Grab all your materials quick!" 11 | - 1: "&eHang on! It's going to get bumpy!" 12 | 13 | ##Addon Logger 14 | Logger: 15 | Enabled: true 16 | LogToConsole: true 17 | Format: 'yyyy-MM-dd HH:mm:ss' 18 | 19 | ##Addon Portals 20 | Portals: 21 | Enabled: true 22 | IgnoreDelay: true 23 | IgnoreCooldown: true 24 | 25 | ##Addon ExtraEffects 26 | ExtraEffects: 27 | Enabled: true 28 | YOffset: 29 | Enabled: true 30 | Offset: 50 31 | 32 | ##Addon MagicStick 33 | MagicStick: 34 | Enabled: false 35 | GiveFirstJoin: 36 | Enabled: true 37 | Amount: 1 38 | Item: 39 | Name: '&d&lMagic RTP Stick &8(Right-Click)' 40 | Material: 'Stick' 41 | Lore: 42 | - '' 43 | - '&7Right click this stick and unlock' 44 | - '&7a brand new adventure!' 45 | Take: true 46 | 47 | #Addon Commands 48 | Commands: 49 | Enabled: false 50 | Events: 51 | Teleport: 52 | Enabled: true 53 | Commands: 54 | - 'broadcast &cThe player %player_name% just teleported!' 55 | Cancelled: 56 | Enabled: false 57 | Commands: 58 | - 'broadcast &e%player_name% moved while trying to rtp, chump!' 59 | 60 | #Addon Parties 61 | Parties: 62 | Enabled: true 63 | 64 | #Addon RTPMenu (Enable `/rtp` world select menu) 65 | RTPMenu: 66 | Enabled: false 67 | AutoRefresh: 0 #0 means menu will not refresh! (in ticks) 68 | Title: "Choose World" 69 | AutoCenter: true #If true, will ignore `Slot`, does not work if world list >= 9 70 | Lines: 3 71 | WorldList: 72 | - world: 73 | Name: '&7World' 74 | Item: 'map' 75 | Slot: 3 76 | Lore: 77 | - '' 78 | - '&8Click to rtp in world!' 79 | - '' 80 | - '&7Cooldown&8: &d%betterrtp_cooldown%' 81 | - world_nether: 82 | Name: '&cNether' 83 | Item: 'netherrack' 84 | Slot: 5 85 | Lore: 86 | - '' 87 | - '&8Click to rtp in world!' 88 | - '' 89 | - '&7Cooldown&8: &d%betterrtp_cooldown%' -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/resources/ideas.yml: -------------------------------------------------------------------------------- 1 | - Pre-rtp effects 2 | - Mute/Disable chat feature 3 | - More post-rtp effects 4 | - gui with configured/dynamic parameters 5 | - save previous rtps in database and show in gui 6 | - gui all the things! -------------------------------------------------------------------------------- /BetterRTPAddons/src/main/resources/plugin.yml: -------------------------------------------------------------------------------- 1 | main: me.SuperRonanCraft.BetterRTPAddons.Main 2 | version: ${project.version} 3 | api-version: '1.13' 4 | folia-supported: true 5 | name: BetterRTPAddons 6 | depend: [BetterRTP] 7 | softdepend: [ProtocolLib] 8 | 9 | permissions: 10 | betterrtp.addon.portals: 11 | description: Ability to use the portals addon commands 12 | 13 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Just... don't be rude. 2 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | **Plugin Version**: 2 | 3 | 4 | 5 | 6 | **Issue Type**: 7 | 8 | 9 | **Context**: 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 SuperRonanCraft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /NodeServer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | BetterRTP - API 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /NodeServer/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RonanPlugins/BetterRTP/a5400d18e513e05d2907872a7b1bb298423c24f5/NodeServer/index.js -------------------------------------------------------------------------------- /NodeServer/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nodeserver", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC" 12 | } 13 | -------------------------------------------------------------------------------- /NodeServer/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | me.ronancraft 8 | NodeServer 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 17 13 | 17 14 | 15 | 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | Welcome to BetterRTP's repository! 3 |

4 | 5 | ## Where's the Lang files?/Want to Contribute translating? 6 | All language files are located [here](src/main/resources/lang) 7 | feel free to fork one of the language files and help translate! 8 | 9 | ## Libraries 10 | BetterRTP uses and is compiled with the following libraries: 11 | 12 | - [ParticleLib](https://github.com/ByteZ1337/ParticleLib) (included) - Particles library by ByteZ1337. Find all supported particles [here](https://github.com/ByteZ1337/ParticleLib/blob/master/src/main/java/xyz/xenondevs/particle/ParticleEffect.java) 13 | - [PaperLib](https://github.com/PaperMC/PaperLib) (included) - Library for interfacing with PaperMC specific APIs, used for async chunk loading. 14 | - [FoliaLib](https://github.com/TechnicallyCoded/FoliaLib) (included) - Library for interfacing with Folia specific APIs, used for cross-platform timers. 15 | 16 | ## Build instructions on Ubuntu 17 | 18 | mvn clean install 19 | 20 | The file will be in the Target file. 21 | 22 | ## Where's the Wiki? 23 | The wiki is available [here](../../wiki)! 24 | 25 |

26 | Chat with us on Discord
27 | Discord
28 | Have a Suggestion? Make an issue!
29 | GitHub issues
30 |
31 | Thank you for viewing the Wiki for BetterRTP!
32 | Did this wiki help you out? Please give it a Star so I know it's getting use!
33 |
34 | Check out my other plugins! 35 |

36 | -------------------------------------------------------------------------------- /RTPEachWorld/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | me.SuperRonanCraft 8 | BetterRTP-EachWorld 9 | jar 10 | 3.4.2-1 11 | 12 | 13 | 1.8 14 | 1.8 15 | UTF-8 16 | 17 | 18 | 19 | 20 | 21 | src/main/resources 22 | true 23 | 24 | 25 | ${project.artifactId}-${project.version} 26 | 27 | 28 | 29 | org.apache.maven.plugins 30 | maven-jar-plugin 31 | 3.2.0 32 | 33 | ../../Java/plugins 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | org.spigotmc 42 | spigot-api 43 | 1.8.8-R0.1-SNAPSHOT 44 | provided 45 | 46 | 47 | me.SuperRonanCraft 48 | BetterRTP 49 | 3.4.2-1 50 | provided 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /RTPEachWorld/src/me/superronancraft/rtpeachworld/Main.java: -------------------------------------------------------------------------------- 1 | package me.superronancraft.rtpeachworld; 2 | 3 | public class Main { 4 | } 5 | -------------------------------------------------------------------------------- /RTPEachWorld/src/me/superronancraft/rtpeachworld/PlayerData.java: -------------------------------------------------------------------------------- 1 | package me.superronancraft.rtpeachworld; 2 | 3 | import org.bukkit.World; 4 | import org.bukkit.entity.Player; 5 | 6 | import java.util.HashMap; 7 | 8 | public class PlayerData { 9 | 10 | //HashMap> 11 | 12 | } 13 | -------------------------------------------------------------------------------- /lib/FactionsBridge-1.3.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RonanPlugins/BetterRTP/a5400d18e513e05d2907872a7b1bb298423c24f5/lib/FactionsBridge-1.3.8.jar -------------------------------------------------------------------------------- /lib/Residence5.1.4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RonanPlugins/BetterRTP/a5400d18e513e05d2907872a7b1bb298423c24f5/lib/Residence5.1.4.1.jar -------------------------------------------------------------------------------- /settings.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | ronanplugins-private 8 | ${env.MAVEN_REPO_USERNAME} 9 | ${env.MAVEN_REPO_PASSWORD} 10 | 11 | 12 | 13 | 14 | 15 | mirror-repo 16 | http://nexus.hc.to/content/repositories/pub_releases 17 | http://nexus.hc.to/content/repositories/pub_releases 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/PlayerInfo.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player; 2 | 3 | import java.util.HashMap; 4 | 5 | import org.bukkit.World; 6 | import org.bukkit.entity.Player; 7 | import org.bukkit.inventory.Inventory; 8 | 9 | import lombok.Getter; 10 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 11 | 12 | public class PlayerInfo { 13 | 14 | private final HashMap invs = new HashMap<>(); 15 | //private final HashMap invType = new HashMap<>(); 16 | @Getter private final HashMap invWorld = new HashMap<>(); 17 | @Getter private final HashMap invNextInv = new HashMap<>(); 18 | //private final HashMap cooldown = new HashMap<>(); 19 | @Getter private final HashMap rtping = new HashMap<>(); 20 | //private final HashMap> previousLocations = new HashMap<>(); 21 | //private final HashMap rtpType = new HashMap<>(); 22 | 23 | /*private void setInv(Player p, Inventory inv) { 24 | invs.put(p, inv); 25 | }*/ 26 | 27 | /*private void setInvType(Player p, RTP_INV_SETTINGS type) { 28 | invType.put(p, type); 29 | }*/ 30 | 31 | public void setInvWorld(Player p, World type) { 32 | invWorld.put(p, type); 33 | } 34 | 35 | public void setNextInv(Player p, RTP_INV_SETTINGS type) { 36 | invNextInv.put(p, type); 37 | } 38 | 39 | //--Logic-- 40 | 41 | public Boolean playerExists(Player p) { 42 | return invs.containsKey(p); 43 | } 44 | 45 | private void unloadAll() { 46 | invs.clear(); 47 | //invType.clear(); 48 | invWorld.clear(); 49 | invNextInv.clear(); 50 | //cooldown.clear(); 51 | rtping.clear(); 52 | //previousLocations.clear(); 53 | } 54 | 55 | private void unload(Player p) { 56 | clearInvs(p); 57 | //cooldown.remove(p); 58 | rtping.remove(p); 59 | //previousLocations.remove(p); 60 | } 61 | 62 | public void clearInvs(Player p) { 63 | invs.remove(p); 64 | //invType.remove(p); 65 | invWorld.remove(p); 66 | invNextInv.remove(p); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommand.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands; 2 | 3 | import java.util.List; 4 | 5 | import org.bukkit.command.CommandSender; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | import me.SuperRonanCraft.BetterRTP.references.PermissionCheck; 9 | 10 | public interface RTPCommand { 11 | 12 | void execute(CommandSender sendi, String label, String[] args); 13 | 14 | List tabComplete(CommandSender sendi, String[] args); 15 | 16 | @NotNull PermissionCheck permission(); 17 | 18 | String getName(); 19 | 20 | default boolean isDebugOnly() { 21 | return false; 22 | } 23 | 24 | default boolean enabled() { 25 | return true; 26 | }; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommandHelpable.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands; 2 | 3 | public interface RTPCommandHelpable { 4 | 5 | String getHelp(); 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTPCommandType.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.types.*; 4 | 5 | public enum RTPCommandType { 6 | BIOME(new CmdBiome()), 7 | EDIT(new CmdEdit()), 8 | HELP(new CmdHelp()), 9 | INFO(new CmdInfo()), 10 | LOCATION(new CmdLocation()), 11 | PLAYER(new CmdPlayer()), 12 | PLAYERSUDO(new CmdPlayerSudo()), 13 | QUEUE(new CmdQueue(), true), 14 | RELOAD(new CmdReload()), 15 | //SETTINGS(new CmdSettings(), true), 16 | TEST(new CmdTest(), true), 17 | VERSION(new CmdVersion()), 18 | WORLD(new CmdWorld()), 19 | DEV(new CmdDeveloper(), true), 20 | LOGGER(new CmdLogger(), true), 21 | ; 22 | 23 | private final RTPCommand cmd; 24 | private boolean debugOnly = false; 25 | 26 | RTPCommandType(RTPCommand cmd) { 27 | this.cmd = cmd; 28 | } 29 | 30 | RTPCommandType(RTPCommand cmd, boolean debugOnly) { 31 | this.cmd = cmd; 32 | this.debugOnly = debugOnly; 33 | } 34 | 35 | public boolean isDebugOnly() { 36 | return debugOnly; 37 | } 38 | 39 | public RTPCommand getCmd() { 40 | return cmd; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/RTP_SETUP_TYPE.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands; 2 | 3 | public enum RTP_SETUP_TYPE { 4 | DEFAULT, 5 | CUSTOM_WORLD, 6 | LOCATION, 7 | PERMISSIONGROUP 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdBiome.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 5 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 6 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP_Info; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 8 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesUsage; 9 | import org.bukkit.command.CommandSender; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | public class CmdBiome implements RTPCommand, RTPCommandHelpable { 16 | 17 | public String getName() { 18 | return "biome"; 19 | } 20 | 21 | //rtp biome 22 | public void execute(CommandSender sendi, String label, String[] args) { 23 | if (args.length >= 2) 24 | CmdTeleport.teleport(sendi, label, null, HelperRTP_Info.getBiomes(args, 1, sendi)); 25 | else 26 | usage(sendi, label); 27 | } 28 | 29 | public List tabComplete(CommandSender sendi, String[] args) { 30 | List list = new ArrayList<>(); 31 | if (args.length >= 2) 32 | HelperRTP_Info.addBiomes(list, args); 33 | return list; 34 | } 35 | 36 | @NotNull public PermissionNode permission() { 37 | return PermissionNode.BIOME; 38 | } 39 | 40 | public void usage(CommandSender sendi, String label) { 41 | MessagesUsage.BIOME.send(sendi, label); 42 | } 43 | 44 | @Override 45 | public String getHelp() { 46 | return MessagesHelp.BIOME.get(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdDeveloper.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 5 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.RandomLocation; 6 | import org.bukkit.command.CommandSender; 7 | import org.jetbrains.annotations.NotNull; 8 | 9 | import java.util.List; 10 | 11 | public class CmdDeveloper implements RTPCommand { 12 | 13 | public String getName() { 14 | return "dev"; 15 | } 16 | 17 | public void execute(CommandSender sendi, String label, String[] args) { 18 | RandomLocation.runChunkTest(); 19 | } 20 | 21 | @Override public List tabComplete(CommandSender sendi, String[] args) { 22 | return null; 23 | } 24 | 25 | @NotNull public PermissionNode permission() { 26 | return PermissionNode.DEVELOPER; 27 | //sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts"); 28 | } 29 | 30 | public void usage(CommandSender sendi, String label) { 31 | sendi.sendMessage("This is for Developement use only!"); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdHelp.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 6 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 8 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 9 | import org.bukkit.command.CommandSender; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.ArrayList; 13 | import java.util.Collections; 14 | import java.util.List; 15 | 16 | public class CmdHelp implements RTPCommand, RTPCommandHelpable { 17 | 18 | public String getName() { 19 | return "help"; 20 | } 21 | 22 | public void execute(CommandSender sendi, String label, String[] args) { 23 | List list = new ArrayList<>(); 24 | list.add(MessagesHelp.PREFIX.get()); 25 | list.add(MessagesHelp.MAIN.get()); 26 | for (RTPCommand cmd : BetterRTP.getInstance().getCmd().commands) 27 | if (cmd.permission().check(sendi)) 28 | if (cmd instanceof RTPCommandHelpable) { 29 | String help = ((RTPCommandHelpable) cmd).getHelp(); 30 | list.add(help); 31 | } 32 | Message_RTP.sms(sendi, list, Collections.singletonList(label)); 33 | } 34 | 35 | public List tabComplete(CommandSender sendi, String[] args) { 36 | return null; 37 | } 38 | 39 | 40 | @NotNull public PermissionNode permission() { 41 | return PermissionNode.USE; 42 | } 43 | 44 | @Override 45 | public String getHelp() { 46 | return MessagesHelp.HELP.get(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdReload.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 6 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 8 | import org.bukkit.command.CommandSender; 9 | import org.jetbrains.annotations.NotNull; 10 | 11 | import java.util.List; 12 | 13 | public class CmdReload implements RTPCommand, RTPCommandHelpable { 14 | 15 | public String getName() { 16 | return "reload"; 17 | } 18 | 19 | public void execute(CommandSender sendi, String label, String[] args) { 20 | BetterRTP.getInstance().reload(sendi); 21 | } 22 | 23 | public List tabComplete(CommandSender sendi, String[] args) { 24 | return null; 25 | } 26 | 27 | @NotNull public PermissionNode permission() { 28 | return PermissionNode.RELOAD; 29 | } 30 | 31 | @Override 32 | public String getHelp() { 33 | return MessagesHelp.RELOAD.get(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdSettings.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 5 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 6 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 7 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 8 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 9 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 10 | import org.bukkit.command.CommandSender; 11 | import org.bukkit.entity.Player; 12 | import org.jetbrains.annotations.NotNull; 13 | 14 | import java.util.List; 15 | 16 | public class CmdSettings implements RTPCommand, RTPCommandHelpable { 17 | 18 | public String getName() { 19 | return "settings"; 20 | } 21 | 22 | public void execute(CommandSender sendi, String label, String[] args) { 23 | if (sendi instanceof Player) 24 | BetterRTP.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) sendi); 25 | else 26 | Message_RTP.sms(sendi, "Must be a player to use this command! Try '/" + label + " help'"); 27 | } 28 | 29 | public List tabComplete(CommandSender sendi, String[] args) { 30 | return null; 31 | } 32 | 33 | @NotNull public PermissionNode permission() { 34 | return PermissionNode.SETTINGS; 35 | } 36 | 37 | @Override 38 | public String getHelp() { 39 | return MessagesHelp.SETTINGS.get(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTeleport.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; 5 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 6 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 8 | import org.bukkit.World; 9 | import org.bukkit.command.CommandSender; 10 | import org.bukkit.entity.Player; 11 | import org.jetbrains.annotations.NotNull; 12 | 13 | import java.util.List; 14 | 15 | public class CmdTeleport implements RTPCommand { 16 | 17 | //Label is the %command% placeholder in messages 18 | public static void teleport(CommandSender sendi, String label, World world, List biomes) { 19 | if (sendi instanceof Player) 20 | HelperRTP.tp((Player) sendi, sendi, world, biomes, RTP_TYPE.COMMAND); 21 | else 22 | Message_RTP.sms(sendi, "Must be a player to use this command! Try '/" + label + " help'"); 23 | } 24 | 25 | @Override 26 | public void execute(CommandSender sendi, String label, String[] args) { 27 | teleport(sendi, label, null, null); 28 | } 29 | 30 | @Override 31 | public List tabComplete(CommandSender sendi, String[] args) { 32 | return null; 33 | } 34 | 35 | @NotNull @Override 36 | public PermissionNode permission() { 37 | return PermissionNode.USE; 38 | } 39 | 40 | @Override 41 | public String getName() { 42 | return null; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdTest.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 6 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; 7 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; 8 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 9 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; 10 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 11 | import org.bukkit.command.CommandSender; 12 | import org.bukkit.entity.Player; 13 | import org.jetbrains.annotations.NotNull; 14 | 15 | import java.util.List; 16 | 17 | //Meant to just test particles and effects without actually rtp'ing around the world 18 | public class CmdTest implements RTPCommand, RTPCommandHelpable { 19 | 20 | public String getName() { 21 | return "test"; 22 | } 23 | 24 | @Override 25 | public void execute(CommandSender sendi, String label, String[] args) { 26 | if (sendi instanceof Player) { 27 | Player p = (Player) sendi; 28 | BetterRTP.getInstance().getRTP().getTeleport().afterTeleport(p, p.getLocation(), 29 | HelperRTP.getPlayerWorld(new RTPSetupInformation(p.getWorld(), p, p, false)), 0, p.getLocation(), RTP_TYPE.TEST); 30 | } else 31 | sendi.sendMessage("Console is not able to execute this command! Try '/rtp help'"); 32 | } 33 | 34 | @Override 35 | public List tabComplete(CommandSender sendi, String[] args) { 36 | return null; 37 | } 38 | 39 | @NotNull @Override 40 | public PermissionNode permission() { 41 | return PermissionNode.ADMIN; 42 | } 43 | 44 | @Override 45 | public String getHelp() { 46 | return MessagesHelp.TEST.get(); 47 | } 48 | 49 | @Override 50 | public boolean isDebugOnly() { 51 | return true; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/commands/types/CmdVersion.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.commands.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommandHelpable; 6 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 8 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesHelp; 9 | import org.bukkit.command.CommandSender; 10 | import org.jetbrains.annotations.NotNull; 11 | 12 | import java.util.List; 13 | 14 | public class CmdVersion implements RTPCommand, RTPCommandHelpable { 15 | 16 | public String getName() { 17 | return "version"; 18 | } 19 | 20 | public void execute(CommandSender sendi, String label, String[] args) { 21 | Message_RTP.sms(sendi, "&aVersion #&e" + BetterRTP.getInstance().getDescription().getVersion()); 22 | } 23 | 24 | public List tabComplete(CommandSender sendi, String[] args) { 25 | return null; 26 | } 27 | 28 | @NotNull public PermissionNode permission() { 29 | return PermissionNode.VERSION; 30 | } 31 | 32 | @Override 33 | public String getHelp() { 34 | return MessagesHelp.VERSION.get(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Click.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.invs.RTPInventories; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; 6 | import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; 7 | import org.bukkit.Material; 8 | import org.bukkit.entity.Player; 9 | import org.bukkit.event.inventory.InventoryClickEvent; 10 | 11 | public class Click { 12 | 13 | static void click(InventoryClickEvent e) { 14 | if (!validClick(e)) 15 | return; 16 | e.setCancelled(true); 17 | handler(e); 18 | } 19 | 20 | static private void handler(InventoryClickEvent e) { 21 | try { 22 | Player p = (Player) e.getWhoClicked(); 23 | PlayerData data = HelperPlayer.getData(p); 24 | RTPInventories menu = BetterRTP.getInstance().getInvs(); 25 | menu.getInv(data.getMenu().getInvType()).clickEvent(e); 26 | } catch (NullPointerException ex) { 27 | //ex.printStackTrace(); 28 | } 29 | } 30 | 31 | static private boolean validClick(InventoryClickEvent e) { 32 | //Not a player, or Not our inventory 33 | if (!(e.getWhoClicked() instanceof Player) || e.isCancelled()) 34 | return false; 35 | // Item is clicked 36 | else if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR)) 37 | return false; 38 | else if (e.getWhoClicked() instanceof Player) { 39 | // Clicks the inventory 40 | PlayerData data = HelperPlayer.getData((Player) e.getWhoClicked()); 41 | if (!e.getInventory().equals(data.getMenu().getInv())) 42 | return false; 43 | // Clicks their own inventory 44 | else if (!e.getClickedInventory().equals(data.getMenu().getInv())) { 45 | e.setCancelled(true); 46 | return false; 47 | } 48 | } 49 | return true; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Custom.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; 4 | import me.SuperRonanCraft.BetterRTP.references.depends.DepEssentials; 5 | 6 | public class Custom { 7 | 8 | static void postRTP(RTP_TeleportPostEvent e) { 9 | DepEssentials.setBackLocation(e.getPlayer(), e.getOldLocation()); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Damage.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; 4 | import org.bukkit.entity.Entity; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.event.entity.EntityDamageEvent; 7 | 8 | public class Damage { 9 | static boolean canCancel(EntityDamageEvent.DamageCause damageCause) { 10 | return true; // TODO: Allow for filtering damage causes 11 | } 12 | 13 | static boolean isInInvincibleMode(Player player) { 14 | return HelperPlayer.getData(player).getInvincibleEndTime() > System.currentTimeMillis(); 15 | } 16 | 17 | static void onEntityDamage(EntityDamageEvent event) { 18 | Entity entity = event.getEntity(); 19 | if (!(entity instanceof Player)) return; 20 | Player player = (Player) entity; 21 | 22 | if (!canCancel(event.getCause())) return; 23 | if (!isInInvincibleMode(player)) return; 24 | 25 | event.setCancelled(true); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Death.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTPSetupInformation; 4 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; 5 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; 6 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; 7 | import org.bukkit.entity.Player; 8 | import org.bukkit.event.player.PlayerRespawnEvent; 9 | 10 | public class Death { 11 | 12 | static void respawnEvent(PlayerRespawnEvent e) { 13 | Player p = e.getPlayer(); 14 | WorldPlayer worldPlayer = HelperRTP.getPlayerWorld(new RTPSetupInformation( 15 | p.getWorld(), 16 | p, p, false 17 | )); 18 | if (worldPlayer.getRTPOnDeath()) { 19 | HelperRTP.tp(p, p, p.getWorld(), null, RTP_TYPE.FORCED, true, true); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/EventListener.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.customEvents.RTP_TeleportPostEvent; 5 | import org.bukkit.event.EventHandler; 6 | import org.bukkit.event.Listener; 7 | import org.bukkit.event.block.SignChangeEvent; 8 | import org.bukkit.event.entity.EntityDamageEvent; 9 | import org.bukkit.event.inventory.InventoryClickEvent; 10 | import org.bukkit.event.player.*; 11 | import org.bukkit.event.world.WorldLoadEvent; 12 | import org.bukkit.plugin.PluginManager; 13 | 14 | public class EventListener implements Listener { 15 | private final Interact interact = new Interact(); 16 | private final WorldLoad worldLoad = new WorldLoad(); 17 | 18 | public void registerEvents(BetterRTP pl) { 19 | PluginManager pm = pl.getServer().getPluginManager(); 20 | pm.registerEvents(this, pl); 21 | } 22 | 23 | public void load() { 24 | interact.load(); 25 | } 26 | 27 | @EventHandler 28 | private void onLeave(PlayerQuitEvent e) { 29 | Leave.event(e); 30 | } 31 | 32 | @EventHandler 33 | private void onJoin(PlayerJoinEvent e) { 34 | Join.event(e); 35 | } 36 | 37 | @EventHandler 38 | private void onInteract(PlayerInteractEvent e) { 39 | interact.event(e); 40 | } 41 | 42 | @EventHandler 43 | private void interact(SignChangeEvent e) { 44 | interact.createSign(e); 45 | } 46 | 47 | @EventHandler 48 | private void click(InventoryClickEvent e) { 49 | Click.click(e); 50 | } 51 | 52 | @EventHandler 53 | private void teleport(PlayerTeleportEvent e) { 54 | Teleport.tpEvent(e); 55 | } 56 | 57 | @EventHandler 58 | private void rtpPost(RTP_TeleportPostEvent e) { 59 | Custom.postRTP(e); 60 | } 61 | 62 | @EventHandler 63 | private void worldLoad(WorldLoadEvent e) { 64 | worldLoad.load(e); 65 | } 66 | 67 | @EventHandler 68 | private void onRespawn(PlayerRespawnEvent e) { 69 | Death.respawnEvent(e); 70 | } 71 | 72 | @EventHandler 73 | private void onDamage(EntityDamageEvent e) { 74 | Damage.onEntityDamage(e); 75 | } 76 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Join.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; 5 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 6 | import me.SuperRonanCraft.BetterRTP.references.file.FileOther; 7 | import me.SuperRonanCraft.BetterRTP.references.messages.Message_RTP; 8 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; 9 | import me.SuperRonanCraft.BetterRTP.references.web.Updater; 10 | import me.SuperRonanCraft.BetterRTP.references.helpers.HelperRTP; 11 | import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler; 12 | import org.bukkit.Bukkit; 13 | import org.bukkit.entity.Player; 14 | import org.bukkit.event.player.PlayerJoinEvent; 15 | 16 | import java.util.Arrays; 17 | 18 | public class Join { 19 | 20 | static void event(PlayerJoinEvent e) { 21 | Player p = e.getPlayer(); 22 | updater(p); 23 | AsyncHandler.async(() -> { 24 | getPl().getCooldowns().loadPlayer(p); 25 | }); 26 | rtpOnFirstJoin(p); 27 | } 28 | 29 | //Updater 30 | private static void updater(Player p) { 31 | if (!getPl().getFiles().getType(FileOther.FILETYPE.CONFIG).getBoolean("Settings.DisableUpdater") && PermissionNode.UPDATER.check(p)) { 32 | if (!getPl().getDescription().getVersion().equals(Updater.updatedVersion)) { 33 | String currentVersion = getPl().getDescription().getVersion(); 34 | String newVersion = Updater.updatedVersion; 35 | 36 | MessagesCore.UPDATE.send(p, Arrays.asList(currentVersion, newVersion)); 37 | } 38 | } 39 | } 40 | 41 | 42 | //RTP on first join 43 | private static void rtpOnFirstJoin(Player p) { 44 | if (getPl().getSettings().isRtpOnFirstJoin_Enabled() && !p.hasPlayedBefore()) 45 | HelperRTP.tp(p, Bukkit.getConsoleSender(), 46 | Bukkit.getWorld(getPl().getSettings().getRtpOnFirstJoin_World()), 47 | null, RTP_TYPE.JOIN, true, true); 48 | //Fixed via @kazigk on Github 49 | } 50 | 51 | private static BetterRTP getPl() { 52 | return BetterRTP.getInstance(); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Leave.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; 4 | import org.bukkit.entity.Player; 5 | import org.bukkit.event.player.PlayerQuitEvent; 6 | 7 | class Leave { 8 | 9 | static void event(PlayerQuitEvent e) { 10 | Player p = e.getPlayer(); 11 | HelperPlayer.unload(p); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/Teleport.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; 4 | import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.event.player.PlayerTeleportEvent; 7 | 8 | public class Teleport { 9 | 10 | static void tpEvent(PlayerTeleportEvent e) { 11 | Player p = e.getPlayer(); 12 | PlayerData data = HelperPlayer.getData(p); 13 | //Add data to database 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/events/WorldLoad.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.events; 2 | 3 | import com.tcoded.folialib.wrapper.task.WrappedTask; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler; 6 | import org.bukkit.event.world.WorldLoadEvent; 7 | 8 | public class WorldLoad { 9 | 10 | WrappedTask loader; 11 | 12 | void load(WorldLoadEvent e) { 13 | //BetterRTP.getInstance().getLogger().info("NEW WORLD!"); 14 | if (loader != null) 15 | loader.cancel(); 16 | loader = AsyncHandler.syncLater(() -> { 17 | BetterRTP.debug("New world `" + e.getWorld().getName() + "` detected! Reloaded Databases!"); 18 | BetterRTP.getInstance().getDatabaseHandler().load(); 19 | }, 20L * 5); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTPPluginValidation.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins.REGIONPLUGINS; 4 | import org.bukkit.Location; 5 | 6 | public class RTPPluginValidation { 7 | 8 | /** 9 | * @param loc Location to check 10 | * @return True if valid location 11 | */ 12 | public static boolean checkLocation(Location loc) { 13 | for (REGIONPLUGINS validators : REGIONPLUGINS.values()) 14 | if (!validators.getValidator().check(loc)) 15 | return false; 16 | return true; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_ERROR_REQUEST_REASON.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; 5 | 6 | public enum RTP_ERROR_REQUEST_REASON { 7 | IS_RTPING(MessagesCore.ALREADY), 8 | NO_PERMISSION(MessagesCore.NOPERMISSION_WORLD), 9 | WORLD_DISABLED(MessagesCore.DISABLED_WORLD), 10 | COOLDOWN(MessagesCore.COOLDOWN), 11 | PRICE_ECONOMY(MessagesCore.FAILED_PRICE), 12 | PRICE_HUNGER(MessagesCore.FAILED_HUNGER); 13 | 14 | @Getter private final MessagesCore msg; 15 | 16 | RTP_ERROR_REQUEST_REASON(MessagesCore msg) { 17 | this.msg = msg; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_PlayerInfo.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | public class RTP_PlayerInfo { 7 | 8 | @Getter @Setter boolean 9 | applyDelay, 10 | applyCooldown, 11 | checkCooldown, 12 | takeMoney, 13 | takeHunger; 14 | 15 | public RTP_PlayerInfo() { 16 | this(true, true, true, true, true); 17 | } 18 | 19 | public RTP_PlayerInfo(boolean applyDelay, boolean applyCooldown) { 20 | this(applyDelay, applyCooldown, true); 21 | } 22 | 23 | public RTP_PlayerInfo(boolean applyDelay, boolean applyCooldown, boolean checkCooldown) { 24 | this(applyDelay, applyCooldown, checkCooldown, true, true); 25 | } 26 | 27 | public RTP_PlayerInfo(boolean applyDelay, 28 | boolean applyCooldown, 29 | boolean checkCooldown, 30 | boolean takeMoney, 31 | boolean takeHunger) { 32 | this.applyDelay = applyDelay; 33 | this.applyCooldown = applyCooldown; 34 | this.checkCooldown = checkCooldown; 35 | this.takeMoney = takeMoney; 36 | this.takeHunger = takeHunger; 37 | } 38 | 39 | public enum RTP_PLAYERINFO_FLAG { 40 | NODELAY, NOCOOLDOWN, IGNORECOOLDOWN, IGNOREMONEY, IGNOREHUNGER; 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_SHAPE.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp; 2 | 3 | public enum RTP_SHAPE { 4 | SQUARE, //Square shaped location finder 5 | CIRCLE //Circled area location finder 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/RTP_TYPE.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp; 2 | 3 | public enum RTP_TYPE { 4 | COMMAND, //Player executed command 5 | FORCED, //Player was forced to rtp (/rtp player ) 6 | RESPAWN, //Player respawned and world has RTPOnDeath enabled 7 | JOIN, //Player joined and was rtp'd automatically 8 | TEST, //Player was just testing out effects 9 | ADDON, //Player RTP'd from the external addons plugin 10 | ADDON_PORTAL, //Player RTP'd from the external addons (Portals) 11 | ADDON_MAGICSTICK, //Player RTP'd from the external addons (MagicStick) 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/player/rtp/effects/RTPEffects.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.player.rtp.effects; 2 | 3 | import lombok.Getter; 4 | 5 | public class RTPEffects { 6 | 7 | @Getter final RTPEffect_Particles particles = new RTPEffect_Particles(); 8 | @Getter final RTPEffect_Potions potions = new RTPEffect_Potions(); 9 | @Getter final RTPEffect_Sounds sounds = new RTPEffect_Sounds(); 10 | @Getter final RTPEffect_Titles titles = new RTPEffect_Titles(); 11 | 12 | //public HashMap>> playerLoads = new HashMap<>(); 13 | 14 | public void load() { 15 | particles.load(); 16 | potions.load(); 17 | sounds.load(); 18 | titles.load(); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionCheck.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import org.bukkit.command.CommandSender; 6 | import org.jetbrains.annotations.NotNull; 7 | 8 | public interface PermissionCheck { 9 | 10 | static String getPrefix() { 11 | return "betterrtp."; 12 | } 13 | 14 | default boolean check(CommandSender sendi) { 15 | if (isDev()) 16 | return sendi.getName().equalsIgnoreCase("SuperRonanCraft") || sendi.getName().equalsIgnoreCase("RonanCrafts"); 17 | return BetterRTP.getInstance().getPerms().checkPerm(getNode(), sendi); 18 | } 19 | 20 | static boolean check(CommandSender sendi, String check) { 21 | return BetterRTP.getInstance().getPerms().checkPerm(check, sendi); 22 | } 23 | 24 | static boolean getAWorld(CommandSender sendi, String world) { 25 | return getAWorldText(sendi, world).passed; 26 | } 27 | 28 | static PermissionResult getAWorldText(CommandSender sendi, @NotNull String world) { 29 | String perm = getPrefix() + "world.*"; 30 | if (check(sendi, perm)) { 31 | return new PermissionResult(perm, true); 32 | } else { 33 | perm = getPrefix() + "world." + world; 34 | if (check(sendi, perm)) 35 | return new PermissionResult(perm, true); 36 | } 37 | return new PermissionResult(perm, false); 38 | } 39 | 40 | static boolean getLocation(CommandSender sendi, String location) { 41 | return check(sendi, getPrefix() + "location." + location); 42 | } 43 | 44 | static boolean getPermissionGroup(CommandSender sendi, String group) { 45 | return check(sendi, getPrefix() + "group." + group); 46 | } 47 | 48 | boolean isDev(); 49 | 50 | String getNode(); 51 | 52 | class PermissionResult { 53 | @Getter private final boolean passed; 54 | @Getter private final String string; 55 | PermissionResult(String string, boolean passed) { 56 | this.passed = passed; 57 | this.string = string; 58 | } 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/PermissionNode.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references; 2 | 3 | import lombok.Getter; 4 | 5 | public enum PermissionNode implements PermissionCheck { 6 | 7 | ADMIN("admin"), 8 | USE("use"), 9 | BYPASS_ECONOMY("bypass.economy"), 10 | BYPASS_HUNGER("bypass.hunger"), 11 | BYPASS_COOLDOWN("bypass.cooldown"), 12 | BYPASS_DELAY("bypass.delay"), 13 | BYPASS_LOCATION("bypass.location"), //Ability to bypass `UseLocationsInSameWorld` if enabled in location.yml 14 | RELOAD("reload"), 15 | SETTINGS("settings"), 16 | INFO("info"), 17 | UPDATER("updater"), 18 | RTP_OTHER("player"), 19 | BIOME("biome"), 20 | WORLD("world"), 21 | SIGN_CREATE("sign"), 22 | VERSION("version"), 23 | EDIT("edit"), 24 | LOCATION("location"), 25 | DEVELOPER("DEVELOPER_PERM"), 26 | ; 27 | 28 | @Getter private final String node; 29 | 30 | PermissionNode(String node) { 31 | this.node = PermissionCheck.getPrefix() + node; 32 | } 33 | 34 | @Override public boolean isDev() { 35 | return this == DEVELOPER; 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/WarningHandler.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | 5 | import java.util.HashMap; 6 | 7 | public class WarningHandler { 8 | 9 | HashMap lastWarning = new HashMap<>(); 10 | 11 | public static void warn(WARNING type, String str) { 12 | warn(type, str, true); 13 | } 14 | 15 | public static void warn(WARNING type, String str, boolean auto_ignore) { 16 | WarningHandler handler = BetterRTP.getInstance().getWarningHandler(); 17 | if (auto_ignore) { //Ignored automatically every 30 minutes 18 | Long lastTime = handler.lastWarning.getOrDefault(type, 0L); 19 | if (lastTime <= System.currentTimeMillis()) { 20 | BetterRTP.getInstance().getLogger().info(str); 21 | lastTime += System.currentTimeMillis() + (1000 * 1800); 22 | } 23 | handler.lastWarning.put(type, lastTime); 24 | } else 25 | BetterRTP.getInstance().getLogger().warning(str); 26 | } 27 | 28 | public enum WARNING { 29 | USELOCATION_ENABLED_NO_LOCATION_AVAILABLE, 30 | NO_WORLD_TYPE_DECLARED 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTPEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import org.bukkit.event.Event; 4 | import org.bukkit.event.HandlerList; 5 | 6 | public class RTPEvent extends Event { 7 | 8 | private static final HandlerList handler = new HandlerList(); 9 | 10 | @Override 11 | public HandlerList getHandlers() { 12 | return handler; 13 | } 14 | 15 | public static HandlerList getHandlerList() { 16 | return handler; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CancelledEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import org.bukkit.entity.Player; 4 | import org.bukkit.event.HandlerList; 5 | 6 | public class RTP_CancelledEvent extends RTPEvent { //Called when a delayed rtp is cancelled cause player moved 7 | 8 | Player p; 9 | private static final HandlerList handler = new HandlerList(); 10 | 11 | public RTP_CancelledEvent(Player p) { 12 | this.p = p; 13 | } 14 | 15 | public Player getPlayer() { 16 | return p; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 4 | import org.bukkit.command.CommandSender; 5 | import org.bukkit.event.Cancellable; 6 | import org.bukkit.event.HandlerList; 7 | 8 | public class RTP_CommandEvent extends RTPEvent implements Cancellable { 9 | 10 | boolean cancelled; 11 | CommandSender sendi; 12 | RTPCommand cmd; 13 | private static final HandlerList handler = new HandlerList(); 14 | 15 | //Called before a command is executed 16 | public RTP_CommandEvent(CommandSender sendi, RTPCommand cmd) { 17 | this.sendi = sendi; 18 | this.cmd = cmd; 19 | } 20 | 21 | public CommandSender getSendi() { 22 | return sendi; 23 | } 24 | 25 | public RTPCommand getCmd() { 26 | return cmd; 27 | } 28 | 29 | @Override 30 | public boolean isCancelled() { 31 | return cancelled; 32 | } 33 | 34 | @Override 35 | public void setCancelled(boolean b) { 36 | cancelled = b; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_CommandEvent_After.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 6 | 7 | public class RTP_CommandEvent_After extends RTP_CommandEvent { 8 | 9 | //Executed after a command was executed 10 | public RTP_CommandEvent_After(CommandSender sendi, RTPCommand cmd) { 11 | super(sendi, cmd); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FailedEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import org.bukkit.entity.Player; 4 | 5 | import lombok.Getter; 6 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTPPlayer; 7 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld; 8 | 9 | //Called when an rtp is finding a valid location 10 | @Getter public class RTP_FailedEvent extends RTPEvent { 11 | 12 | Player p; 13 | RTPWorld world; 14 | int attempts; 15 | 16 | public RTP_FailedEvent(RTPPlayer rtpPlayer) { 17 | this.p = rtpPlayer.getPlayer(); 18 | this.world = rtpPlayer.getWorldPlayer(); 19 | this.attempts = rtpPlayer.getAttempts(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_FindLocationEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTPPlayer; 4 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.RTPWorld; 5 | import org.bukkit.Location; 6 | import org.bukkit.entity.Player; 7 | import org.bukkit.event.Cancellable; 8 | import org.jetbrains.annotations.Nullable; 9 | 10 | //Called when an rtp is finding a valid location 11 | public class RTP_FindLocationEvent extends RTPEvent implements Cancellable { 12 | 13 | Player p; 14 | RTPWorld world; 15 | Location loc; //Used to force a location into find event 16 | int attempts; 17 | boolean cancelled; 18 | 19 | public RTP_FindLocationEvent(RTPPlayer rtpPlayer) { 20 | this.p = rtpPlayer.getPlayer(); 21 | this.world = rtpPlayer.getWorldPlayer(); 22 | this.attempts = rtpPlayer.getAttempts(); 23 | } 24 | 25 | //A location can be pushed in if a developer wants to inject a custom location 26 | //Safe block code will still be run! 27 | public void setLocation(Location loc) { 28 | this.loc = loc; 29 | } 30 | 31 | @Nullable 32 | public Location getLocation() { 33 | return loc; 34 | } 35 | 36 | public RTPWorld getWorld() { 37 | return world; 38 | } 39 | 40 | public Player getPlayer() { 41 | return p; 42 | } 43 | 44 | @Override 45 | public boolean isCancelled() { 46 | return cancelled; 47 | } 48 | 49 | @Override 50 | public void setCancelled(boolean b) { 51 | cancelled = b; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_SettingUpEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import org.bukkit.entity.Player; 4 | import org.bukkit.event.Cancellable; 5 | 6 | public class RTP_SettingUpEvent extends RTPEvent implements Cancellable { 7 | 8 | Player p; 9 | boolean cancelled = false; 10 | 11 | public RTP_SettingUpEvent(Player p) { 12 | this.p = p; 13 | } 14 | 15 | public Player getPlayer() { 16 | return p; 17 | } 18 | 19 | @Override 20 | public boolean isCancelled() { 21 | return cancelled; 22 | } 23 | 24 | @Override 25 | public void setCancelled(boolean b) { 26 | cancelled = b; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WORLD_TYPE; 4 | import org.bukkit.Location; 5 | import org.bukkit.entity.Player; 6 | 7 | public class RTP_TeleportEvent extends RTPEvent { 8 | 9 | Player p; 10 | Location loc; 11 | WORLD_TYPE worldType; 12 | 13 | public RTP_TeleportEvent(Player p, Location loc, WORLD_TYPE worldType) { 14 | this.p = p; 15 | this.loc = loc; 16 | this.worldType = worldType; 17 | } 18 | 19 | public Player getPlayer() { 20 | return p; 21 | } 22 | 23 | public Location getLocation() { 24 | return loc; 25 | } 26 | 27 | public void changeLocation(Location loc) { 28 | this.loc = loc; 29 | } 30 | 31 | public WORLD_TYPE getWorldType() { 32 | return worldType; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPostEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_TYPE; 4 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPlayer; 5 | import org.bukkit.Location; 6 | import org.bukkit.entity.Player; 7 | 8 | public class RTP_TeleportPostEvent extends RTPEvent { 9 | 10 | Player p; 11 | Location loc; 12 | Location oldLoc; 13 | RTP_TYPE type; 14 | WorldPlayer wPlayer; 15 | 16 | public RTP_TeleportPostEvent(Player p, Location loc, Location oldLoc, WorldPlayer wPlayer, RTP_TYPE type) { 17 | this.p = p; 18 | this.loc = loc; 19 | this.oldLoc = oldLoc; 20 | this.type = type; 21 | this.wPlayer = wPlayer; 22 | } 23 | 24 | public Player getPlayer() { 25 | return p; 26 | } 27 | 28 | public Location getLocation() { 29 | return loc; 30 | } 31 | 32 | public Location getOldLocation() { 33 | return oldLoc; 34 | } 35 | 36 | public RTP_TYPE getType() { 37 | return type; 38 | } 39 | 40 | public WorldPlayer getWorldPlayer() { 41 | return wPlayer; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/customEvents/RTP_TeleportPreEvent.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.customEvents; 2 | 3 | import lombok.Getter; 4 | import org.bukkit.entity.Player; 5 | import org.bukkit.event.Cancellable; 6 | 7 | public class RTP_TeleportPreEvent extends RTPEvent implements Cancellable { //Called upon every rtp call, does not mean player will be teleported 8 | 9 | @Getter Player p; 10 | boolean cancelled; 11 | 12 | public RTP_TeleportPreEvent(Player p) { 13 | this.p = p; 14 | } 15 | 16 | @Override 17 | public boolean isCancelled() { 18 | return cancelled; 19 | } 20 | 21 | @Override 22 | public void setCancelled(boolean b) { 23 | cancelled = b; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseChunkData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.database; 2 | 3 | import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler; 4 | import org.bukkit.Chunk; 5 | import org.bukkit.block.Biome; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class DatabaseChunkData extends SQLite { 11 | 12 | public DatabaseChunkData() { 13 | super(DATABASE_TYPE.CHUNK_DATA); 14 | } 15 | 16 | @Override 17 | public List getTables() { 18 | List list = new ArrayList<>(); 19 | list.add("ChunkData"); 20 | return list; 21 | } 22 | 23 | public enum COLUMNS { 24 | ID("id", "integer PRIMARY KEY AUTOINCREMENT"), 25 | //Chunk Data 26 | WORLD("world", "varchar(32)"), 27 | X("x", "long"), 28 | Z("z", "long"), 29 | BIOME("biome", "string"), 30 | MAX_Y("max_y", "integer"), 31 | ; 32 | 33 | public final String name; 34 | public final String type; 35 | 36 | COLUMNS(String name, String type) { 37 | this.name = name; 38 | this.type = type; 39 | } 40 | } 41 | 42 | 43 | public void addChunk(Chunk chunk, int maxy, Biome biome) { 44 | AsyncHandler.async(() -> { 45 | String pre = "INSERT OR REPLACE INTO "; 46 | String sql = pre + tables.get(0) + " (" 47 | + COLUMNS.WORLD.name + ", " 48 | + COLUMNS.X.name + ", " 49 | + COLUMNS.Z.name + ", " 50 | + COLUMNS.BIOME.name + ", " 51 | + COLUMNS.MAX_Y.name + " " 52 | + ") VALUES(?, ?, ?, ?, ?)"; 53 | List params = new ArrayList() {{ 54 | add(chunk.getWorld().getName()); 55 | add(chunk.getX()); 56 | add(chunk.getZ()); 57 | add(biome.name()); 58 | add(maxy); 59 | }}; 60 | sqlUpdate(sql, params); 61 | }); 62 | } 63 | 64 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/database/DatabaseHandler.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.database; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler; 6 | 7 | public class DatabaseHandler { 8 | 9 | @Getter private final DatabasePlayers databasePlayers = new DatabasePlayers(); 10 | @Getter private final DatabaseCooldowns databaseCooldowns = new DatabaseCooldowns(); 11 | @Getter private final DatabaseQueue databaseQueue = new DatabaseQueue(); 12 | @Getter private final DatabaseChunkData databaseChunks = new DatabaseChunkData(); 13 | 14 | public void load() { 15 | AsyncHandler.async(() -> { 16 | databasePlayers.load(); 17 | databaseCooldowns.load(); 18 | databaseQueue.load(); 19 | databaseChunks.load(); 20 | }); 21 | } 22 | 23 | public static DatabasePlayers getPlayers() { 24 | return BetterRTP.getInstance().getDatabaseHandler().getDatabasePlayers(); 25 | } 26 | 27 | public static DatabaseCooldowns getCooldowns() { 28 | return BetterRTP.getInstance().getDatabaseHandler().getDatabaseCooldowns(); 29 | } 30 | 31 | public static DatabaseQueue getQueue() { 32 | return BetterRTP.getInstance().getDatabaseHandler().getDatabaseQueue(); 33 | } 34 | 35 | //public static DatabaseChunkData getChunks() { 36 | // return BetterRTP.getInstance().getDatabaseHandler().getDatabaseChunks(); 37 | //} 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/database/Error.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.database; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | 5 | import java.util.logging.Level; 6 | 7 | public class Error { 8 | public static void execute(BetterRTP plugin, Exception ex){ 9 | plugin.getLogger().log(Level.SEVERE, "Couldn't execute MySQL statement: ", ex); 10 | } 11 | public static void close(BetterRTP plugin, Exception ex){ 12 | plugin.getLogger().log(Level.SEVERE, "Failed to close MySQL connection: ", ex); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/database/Errors.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.database; 2 | 3 | public class Errors { 4 | public static String sqlConnectionExecute(){ 5 | return "Couldn't execute MySQL statement: "; 6 | } 7 | public static String sqlConnectionClose(){ 8 | return "Failed to close MySQL connection: "; 9 | } 10 | public static String noSQLConnection(){ 11 | return "Unable to retreive MYSQL connection: "; 12 | } 13 | public static String noTableFound(){ 14 | return "Database Error: No Table Found"; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepEssentials.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends; 2 | 3 | import com.earth2me.essentials.Essentials; 4 | import com.earth2me.essentials.User; 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.Location; 7 | import org.bukkit.entity.Player; 8 | 9 | public class DepEssentials { 10 | 11 | public static void setBackLocation(Player player, Location location) { 12 | try { 13 | Essentials ess = (Essentials) Bukkit.getServer().getPluginManager().getPlugin("Essentials"); 14 | if (ess == null) 15 | return; 16 | User user = ess.getUser(player.getUniqueId()); 17 | if (user == null) 18 | return; 19 | user.setLastLocation(location); 20 | } catch (ClassCastException e) { 21 | //Something wrong happened, idk why this would break... 22 | } 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/DepPerms.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import net.milkbowl.vault.permission.Permission; 5 | import org.bukkit.command.CommandSender; 6 | import org.bukkit.plugin.RegisteredServiceProvider; 7 | 8 | public class DepPerms { 9 | public Permission p = null; 10 | 11 | public boolean hasPerm(String perm, CommandSender sendi) { 12 | //sendi.sendMessage(perm); 13 | if (p != null) 14 | return p.has(sendi, perm); 15 | return sendi.hasPermission(perm); 16 | } 17 | 18 | public void register() { 19 | try { 20 | if (BetterRTP.getInstance().getServer().getPluginManager().isPluginEnabled("Vault")) { 21 | RegisteredServiceProvider permissionProvider = BetterRTP.getInstance().getServer() 22 | .getServicesManager().getRegistration(Permission.class); 23 | p = permissionProvider.getProvider(); 24 | } else 25 | p = null; 26 | } catch (NullPointerException e) { 27 | //Vault but no Perms 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/REGIONPLUGINS.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.references.settings.SoftDepends; 5 | 6 | @Getter 7 | public enum REGIONPLUGINS { 8 | FACTIONSUUID("FactionsUUID", "Factions", new RTP_FactionsUUID()), 9 | GRIEFDEFENDER("GriefDefender", new RTP_GriefDefender()), 10 | GRIEFPREVENTION("GriefPrevention", new RTP_GriefPrevention()), 11 | HCLAIMS("hClaims", "hClaim", new RTP_hClaims()), 12 | HUSKCLAIMS("HuskClaims", new RTP_HuskClaims()), 13 | HUSKTOWNS("HuskTowns", new RTP_HuskTowns()), 14 | KINGDOMSX("KingdomsX", "Kingdoms", new RTP_KingdomsX()), 15 | LANDS("Lands", new RTP_Lands()), 16 | PUEBLOS("Pueblos", new RTP_Pueblos()), 17 | REDPROTECT("RedProtect", new RTP_RedProtect()), 18 | RESIDENCE("Residence", new RTP_Residence()), 19 | SABERFACTIONS("SaberFactions", "Factions", new RTP_SaberFactions()), 20 | TOWNY("Towny", new RTP_Towny()), 21 | ULTIMATECLAIMS("UltimateClaims", new RTP_UltimateClaims()), 22 | WORLDGUARD("WorldGuard", new RTP_WorldGuard()), 23 | MINEPLOTS("MinePlots", new RTP_MinePlots()), 24 | FACTIONSBRIDGE("FactionsBridge", new RTP_FactionsBridge()), 25 | CRASH_CLAIM("CrashClaim", new RTP_CrashClaim()); 26 | 27 | private final SoftDepends.RegionPlugin plugin = new SoftDepends.RegionPlugin(); 28 | private final String setting_name, pluginyml_name; 29 | private final RegionPluginCheck validator; 30 | 31 | REGIONPLUGINS(String all_name, RegionPluginCheck validator) { 32 | this(all_name, all_name, validator); 33 | } 34 | 35 | REGIONPLUGINS(String setting_name, String pluginyml_name, RegionPluginCheck validator) { 36 | this.setting_name = setting_name; 37 | this.pluginyml_name = pluginyml_name; 38 | this.validator = validator; 39 | } 40 | 41 | public boolean isEnabled() { 42 | return plugin.isEnabled(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_CrashClaim.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import net.crashcraft.crashclaim.CrashClaim; 6 | 7 | public class RTP_CrashClaim implements RegionPluginCheck { 8 | 9 | // NOT TESTED (3.6.9) 10 | // CrashClaim (1.0.39) 11 | // https://www.spigotmc.org/resources/crashclaim-claiming-plugin.94037/ 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.CRASH_CLAIM.isEnabled()) 15 | try { 16 | result = CrashClaim.getPlugin().getApi().getClaim(loc) == null; // no claim = valid 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsBridge.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import cc.javajobs.factionsbridge.FactionsBridge; 4 | import org.bukkit.Location; 5 | 6 | public class RTP_FactionsBridge implements RegionPluginCheck { 7 | 8 | // NOT TESTED (3.6.9) 9 | // FactionsBridge (v1.3.8) 10 | // https://www.spigotmc.org/resources/factionsbridge.89716/ 11 | public boolean check(Location loc) { 12 | boolean result = true; 13 | if (REGIONPLUGINS.FACTIONSBRIDGE.isEnabled()) 14 | try { 15 | boolean claimed = FactionsBridge.getFactionsAPI().getClaim(loc).isClaimed(); 16 | result = !claimed; 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_FactionsUUID.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import com.massivecraft.factions.Board; 6 | import com.massivecraft.factions.FLocation; 7 | import com.massivecraft.factions.Faction; 8 | 9 | public class RTP_FactionsUUID implements RegionPluginCheck { 10 | 11 | // NOT TESTED (2.13.2) 12 | // FactionsUUID (v1.6.9.5-U0.5.16) 13 | // https://www.spigotmc.org/resources/factionsuuid.1035/ 14 | public boolean check(Location loc) { 15 | boolean result = true; 16 | if (REGIONPLUGINS.FACTIONSUUID.isEnabled()) 17 | try { 18 | Faction faction = Board.getInstance().getFactionAt(new FLocation(loc)); 19 | result = faction.isWilderness() || faction.isSafeZone(); 20 | } catch (Exception e) { 21 | e.printStackTrace(); 22 | } 23 | return result; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefDefender.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import com.griefdefender.api.GriefDefender; 4 | import com.griefdefender.api.claim.Claim; 5 | import org.bukkit.Location; 6 | 7 | public class RTP_GriefDefender implements RegionPluginCheck { 8 | 9 | // NOT TESTED (3.1.0) 10 | // GriefDefender (v1.5.10) 11 | // https://www.spigotmc.org/resources/griefdefender.68900/ 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.GRIEFDEFENDER.isEnabled()) 15 | try { 16 | for (Claim claim : GriefDefender.getCore().getAllClaims()) 17 | if (claim.contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())) { 18 | result = false; 19 | break; 20 | } 21 | } catch (Exception e) { 22 | e.printStackTrace(); 23 | } 24 | return result; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_GriefPrevention.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import me.ryanhamshire.GriefPrevention.GriefPrevention; 4 | import org.bukkit.Location; 5 | 6 | public class RTP_GriefPrevention implements RegionPluginCheck { 7 | 8 | // TESTED (v2.13.0) 9 | // GriefPrevention (v16.15.0) 10 | // https://www.spigotmc.org/resources/griefprevention.1884/ 11 | public boolean check(Location loc) { 12 | boolean result = true; 13 | if (REGIONPLUGINS.GRIEFPREVENTION.isEnabled()) 14 | try { 15 | result = GriefPrevention.instance.dataStore.getClaimAt(loc, true, null) == null; 16 | } catch (Exception e) { 17 | e.printStackTrace(); 18 | } 19 | return result; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_HuskClaims.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import net.william278.huskclaims.BukkitHuskClaims; 4 | import net.william278.huskclaims.api.BukkitHuskClaimsAPI; 5 | import org.bukkit.Location; 6 | 7 | public class RTP_HuskClaims implements RegionPluginCheck { 8 | 9 | @Override 10 | public boolean check(Location loc) { 11 | boolean result = true; 12 | if (REGIONPLUGINS.HUSKCLAIMS.isEnabled()) { 13 | try { 14 | result = !BukkitHuskClaimsAPI.getInstance().getClaimAt(BukkitHuskClaims.Adapter.adapt(loc)).isPresent(); 15 | } catch (Exception e) { 16 | e.printStackTrace(); 17 | } 18 | } 19 | return result; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_HuskTowns.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import net.william278.husktowns.api.BukkitHuskTownsAPI; 4 | import org.bukkit.Location; 5 | 6 | public class RTP_HuskTowns implements RegionPluginCheck { 7 | 8 | @Override 9 | public boolean check(Location loc) { 10 | boolean result = true; 11 | if (REGIONPLUGINS.HUSKTOWNS.isEnabled()) { 12 | try { 13 | result = !BukkitHuskTownsAPI.getInstance().getClaimAt(loc).isPresent(); 14 | } catch (Exception e) { 15 | e.printStackTrace(); 16 | } 17 | } 18 | return result; 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_KingdomsX.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | public class RTP_KingdomsX implements RegionPluginCheck { 6 | 7 | // NOT TESTED (3.6.12) 8 | // KingdomsX (v1.16.8.1.1) 9 | // https://www.spigotmc.org/resources/kingdomsx.77670/ 10 | public boolean check(Location loc) { 11 | boolean result = true; 12 | if (REGIONPLUGINS.KINGDOMSX.isEnabled()) 13 | try { 14 | org.kingdoms.constants.land.Land land = org.kingdoms.constants.land.Land.getLand(loc); 15 | result = land == null || !land.isClaimed(); 16 | } catch (Exception e) { 17 | e.printStackTrace(); 18 | } 19 | return result; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Lands.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 6 | import me.angeschossen.lands.api.LandsIntegration; 7 | 8 | public class RTP_Lands implements RegionPluginCheck { 9 | 10 | // Implemented (2.14.3) 11 | // Tested (3.6.2) 12 | // Lands (v6.28.13) 13 | // https://www.spigotmc.org/resources/lands.53313/ 14 | public boolean check(Location loc) { 15 | boolean result = true; 16 | if (REGIONPLUGINS.LANDS.isEnabled()) 17 | try { 18 | result = LandsIntegration.of(BetterRTP.getInstance()).getArea(loc) == null; 19 | } catch (Exception e) { 20 | e.printStackTrace(); 21 | } 22 | return result; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_MinePlots.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Bukkit; 4 | import org.bukkit.Location; 5 | import org.bukkit.plugin.RegisteredServiceProvider; 6 | import pl.minecodes.plots.api.plot.PlotApi; 7 | import pl.minecodes.plots.api.plot.PlotServiceApi; 8 | 9 | import java.util.Objects; 10 | 11 | public class RTP_MinePlots implements RegionPluginCheck{ 12 | // NOT TESTED (3.6.6) 13 | // MinePlots- (v4.0.1) 14 | // https://builtbybit.com/resources/mineplots.21646/ 15 | 16 | private PlotServiceApi plotServiceApi; 17 | 18 | public boolean check(Location loc) { 19 | boolean result = true; 20 | if (REGIONPLUGINS.MINEPLOTS.isEnabled()) 21 | try { 22 | RegisteredServiceProvider serviceProvider = Bukkit.getServicesManager().getRegistration(PlotServiceApi.class); 23 | Objects.requireNonNull(serviceProvider, "[MinePlots Respect] Service provider is null."); 24 | plotServiceApi = serviceProvider.getProvider(); 25 | 26 | plotServiceApi = serviceProvider.getProvider(); 27 | PlotApi plot = plotServiceApi.getPlot(loc); 28 | 29 | if (plot != null) { 30 | result = false; 31 | } 32 | } catch (Exception e) { 33 | e.printStackTrace(); 34 | } 35 | return result; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Pueblos.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import me.RonanCraft.Pueblos.Pueblos; 6 | 7 | public class RTP_Pueblos implements RegionPluginCheck { 8 | 9 | // NOT TESTED (3.1.0) 10 | // Pueblos (v2.0.1) 11 | // https://www.spigotmc.org/resources/pueblos.91255/ 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.PUEBLOS.isEnabled()) 15 | try { 16 | result = Pueblos.getInstance().getClaimHandler().getClaimMain(loc) == null; 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_RedProtect.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import br.net.fabiozumbi12.RedProtect.Bukkit.RedProtect; 6 | 7 | public class RTP_RedProtect implements RegionPluginCheck { 8 | 9 | // TESTED (2.13.0) 10 | // RedProtect (v7.7.2) 11 | // https://www.spigotmc.org/resources/redprotect.15841/ 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.REDPROTECT.isEnabled()) 15 | try { 16 | result = RedProtect.get().getAPI().getRegion(loc) == null; 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Residence.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | public class RTP_Residence implements RegionPluginCheck { 6 | 7 | // NOT TESTED (3.6.12) 8 | // Residence (v5.1.4.1) 9 | // https://www.spigotmc.org/resources/residence.11480/ 10 | public boolean check(Location loc) { 11 | boolean result = true; 12 | if (REGIONPLUGINS.RESIDENCE.isEnabled()) 13 | try { 14 | // Don't import to avoid class loader issues 15 | com.bekvon.bukkit.residence.Residence instance = com.bekvon.bukkit.residence.Residence.getInstance(); 16 | com.bekvon.bukkit.residence.protection.ClaimedResidence claim = instance.getResidenceManagerAPI().getByLoc(loc); 17 | result = claim == null; 18 | } catch (Exception e) { 19 | e.printStackTrace(); 20 | } 21 | return result; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_SaberFactions.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import com.massivecraft.factions.Board; 6 | import com.massivecraft.factions.FLocation; 7 | import com.massivecraft.factions.Faction; 8 | 9 | public class RTP_SaberFactions implements RegionPluginCheck { 10 | 11 | // NOT TESTED (3.4.5) 12 | // SaberFactions (v2.0.1) 13 | // https://www.spigotmc.org/resources/saberfactions.69771/ 14 | public boolean check(Location loc) { 15 | boolean result = true; 16 | if (REGIONPLUGINS.SABERFACTIONS.isEnabled()) 17 | try { 18 | FLocation fLoc = new FLocation(loc); 19 | Faction faction = Board.getInstance().getFactionAt(fLoc); 20 | result = faction == null || faction.isWilderness() || faction.isSafeZone(); 21 | } catch (Exception e) { 22 | e.printStackTrace(); 23 | } 24 | return result; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_Towny.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import com.palmergames.bukkit.towny.TownyAPI; 6 | 7 | public class RTP_Towny implements RegionPluginCheck { 8 | 9 | // NOT TESTED (2.13.0) 10 | // Towny (v0.96.1.11) 11 | // https://www.spigotmc.org/resources/towny.72694/ 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.TOWNY.isEnabled()) 15 | try { 16 | result = TownyAPI.getInstance().isWilderness(loc); 17 | } catch (Exception e) { 18 | e.printStackTrace(); 19 | } 20 | return result; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_UltimateClaims.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import org.bukkit.Chunk; 6 | import org.bukkit.Location; 7 | import org.bukkit.plugin.java.JavaPlugin; 8 | 9 | public class RTP_UltimateClaims implements RegionPluginCheck { 10 | 11 | // TESTED (v3.6.12) 12 | // UltimateClaims (v2.2.0 + v1.10.4) 13 | // Download @ https://songoda.com/product/ultimateclaims-14 14 | // V1: https://github.com/craftaro/UltimateClaims/commit/e42376975a59874b05e8516eae1545e94775add5 15 | // V2: https://github.com/craftaro/UltimateClaims/commit/261d83b8712c5ec967f2aa836521c1ff9065ac91 16 | public boolean check(Location loc) { 17 | boolean result = true; 18 | if (REGIONPLUGINS.ULTIMATECLAIMS.isEnabled()) 19 | try { 20 | JavaPlugin ultimateClaimsInstance = JavaPlugin.getPlugin((Class) getPluginMainClass()); 21 | 22 | // Get the ClaimManager 23 | Method getClaimManagerMethod = ultimateClaimsInstance.getClass().getMethod("getClaimManager"); 24 | Object claimManager = getClaimManagerMethod.invoke(ultimateClaimsInstance); 25 | 26 | // Get the claim based on the chunk 27 | Method hasClaimMethod = claimManager.getClass().getMethod("hasClaim", Chunk.class); 28 | return Boolean.FALSE.equals(hasClaimMethod.invoke(claimManager, loc.getChunk())); 29 | } catch (Exception e) { 30 | e.printStackTrace(); 31 | } 32 | return result; 33 | } 34 | 35 | private Class getPluginMainClass() throws ClassNotFoundException { 36 | try { 37 | return Class.forName("com.craftaro.ultimateclaims.UltimateClaims"); // v2 38 | } catch (ClassNotFoundException ignore) { 39 | return Class.forName("com.songoda.ultimateclaims.UltimateClaims"); // v1 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_WorldGuard.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import com.sk89q.worldedit.bukkit.BukkitAdapter; 4 | import com.sk89q.worldguard.WorldGuard; 5 | import com.sk89q.worldguard.protection.ApplicableRegionSet; 6 | import com.sk89q.worldguard.protection.regions.RegionContainer; 7 | import com.sk89q.worldguard.protection.regions.RegionQuery; 8 | import org.bukkit.Location; 9 | 10 | public class RTP_WorldGuard implements RegionPluginCheck { 11 | 12 | // TESTED (v2.12.3) 13 | // Worldguard (v7.0.4 B1), WorldEdit (v7.2.0 B5) 14 | // https://dev.bukkit.org/projects/worldguard 15 | public boolean check(Location loc) { 16 | boolean result = true; 17 | if (REGIONPLUGINS.WORLDGUARD.isEnabled()) 18 | try { 19 | RegionContainer container = WorldGuard.getInstance().getPlatform().getRegionContainer(); 20 | RegionQuery query = container.createQuery(); 21 | ApplicableRegionSet set = query.getApplicableRegions(BukkitAdapter.adapt(loc)); 22 | //for (ProtectedRegion region : set.getRegions()) { 23 | // region.getId() 24 | //} 25 | result = set.size() == 0; 26 | } catch (Exception e) { 27 | e.printStackTrace(); 28 | } 29 | return result; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RTP_hClaims.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | import java.lang.reflect.Method; 6 | 7 | public class RTP_hClaims implements RegionPluginCheck { 8 | 9 | // NOT TESTED (3.1.0) 10 | // hClaims (v1.1.1) 11 | // https://www.spigotmc.org/resources/hclaims.90540/ (Local Repo) 12 | public boolean check(Location loc) { 13 | boolean result = true; 14 | if (REGIONPLUGINS.HCLAIMS.isEnabled()) 15 | try { 16 | Class claimHandlerClass = Class.forName("com.hakan.claim.api.ClaimHandler"); 17 | Method hasMethod = claimHandlerClass.getDeclaredMethod("has", Location.class); 18 | result = (boolean) hasMethod.invoke(null, loc); 19 | } catch (Exception e) { 20 | e.printStackTrace(); 21 | } 22 | return result; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/depends/regionPlugins/RegionPluginCheck.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins; 2 | 3 | import org.bukkit.Location; 4 | 5 | public interface RegionPluginCheck { 6 | 7 | /** 8 | * @param loc Location to check 9 | * @return True if valid teleport location, false if the location is claimed and invalid 10 | */ 11 | boolean check(Location loc); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/file/FileOther.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.file; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import org.bukkit.configuration.file.YamlConfiguration; 5 | import org.bukkit.plugin.Plugin; 6 | 7 | import java.io.File; 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | public class FileOther { 12 | 13 | List types = new ArrayList<>(); 14 | 15 | void load() { 16 | types.clear(); 17 | for (FILETYPE type : FILETYPE.values()) { 18 | type.load(); 19 | types.add(type); 20 | } 21 | } 22 | 23 | public enum FILETYPE implements FileData { 24 | CONFIG("config"), 25 | ECO("economy"), 26 | SIGNS("signs"), 27 | EFFECTS("effects"), 28 | LOCATIONS("locations"), 29 | PLACEHOLDERS("placeholders") 30 | ; 31 | 32 | private final String fileName; 33 | private final YamlConfiguration config = new YamlConfiguration(); 34 | private final File file; 35 | 36 | FILETYPE(String str) { 37 | this.fileName = str + ".yml"; 38 | this.file = new File(plugin().getDataFolder(), fileName); 39 | } 40 | 41 | @Override 42 | public Plugin plugin() { 43 | return BetterRTP.getInstance(); 44 | } 45 | 46 | //PUBLIC 47 | @Override 48 | public YamlConfiguration getConfig() { 49 | return config; 50 | } 51 | 52 | public File getFile() { 53 | return file; 54 | } 55 | 56 | @Override 57 | public String fileName() { 58 | return fileName; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/file/Files.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.file; 2 | 3 | public class Files { 4 | private final FileLanguage langFile = new FileLanguage(); 5 | private final FileOther basics = new FileOther(); 6 | 7 | public FileLanguage getLang() { 8 | return langFile; 9 | } 10 | 11 | public FileOther.FILETYPE getType(FileOther.FILETYPE type) { 12 | return basics.types.get(basics.types.indexOf(type)); 13 | } 14 | 15 | public void loadAll() { 16 | basics.load(); 17 | langFile.load(); 18 | } 19 | } 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Command.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.helpers; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.commands.RTPCommand; 5 | 6 | public class HelperRTP_Command { 7 | 8 | public static void registerCommand(RTPCommand cmd, boolean forced) { 9 | BetterRTP.getInstance().getCmd().registerCommand(cmd, forced); 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/helpers/HelperRTP_Info.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.helpers; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.bukkit.block.Biome; 7 | import org.bukkit.command.CommandSender; 8 | 9 | import me.SuperRonanCraft.BetterRTP.references.PermissionNode; 10 | import me.SuperRonanCraft.BetterRTP.references.messages.MessagesCore; 11 | 12 | public class HelperRTP_Info { 13 | 14 | //Custom biomes 15 | public static List getBiomes(String[] args, int start, CommandSender sendi) { 16 | List biomes = new ArrayList<>(); 17 | boolean error_sent = false; 18 | if (PermissionNode.BIOME.check(sendi)) 19 | for (int i = start; i < args.length; i++) { 20 | String str = args[i]; 21 | try { 22 | biomes.add(Biome.valueOf(str.replaceAll(",", "").toUpperCase()).name()); 23 | } catch (Exception e) { 24 | if (!error_sent) { 25 | MessagesCore.OTHER_BIOME.send(sendi, str); 26 | error_sent = true; 27 | } 28 | } 29 | } 30 | return biomes; 31 | } 32 | 33 | public static void addBiomes(List list, String[] args) { 34 | try { 35 | for (Biome b : Biome.values()) 36 | if (b.name().toUpperCase().replaceAll("minecraft:", "").startsWith(args[args.length - 1].toUpperCase())) 37 | list.add(b.name().replaceAll("minecraft:", "")); 38 | } catch (NoSuchMethodError e) { 39 | //Not in 1.14.X 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTPInventories.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory_Defaults; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.entity.Player; 7 | 8 | import java.util.HashMap; 9 | 10 | public class RTPInventories { 11 | 12 | private final HashMap invs = new HashMap<>(); 13 | 14 | public void load() { 15 | invs.clear(); 16 | for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) { 17 | type.load(type); 18 | invs.put(type, type.getInv()); 19 | } 20 | } 21 | 22 | public void closeAll() { 23 | BetterRTP main = BetterRTP.getInstance(); 24 | for (Player p : Bukkit.getOnlinePlayers()) 25 | if (main.getPInfo().playerExists(p)) { 26 | main.getPInfo().clearInvs(p); 27 | p.closeInventory(); 28 | } 29 | } 30 | 31 | public RTPInventory_Defaults getInv(RTP_INV_SETTINGS type) { 32 | return invs.get(type); 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTP_INV_SETTINGS.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory; 4 | import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvBlacklist; 5 | import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvCoordinates; 6 | import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvMain; 7 | import me.SuperRonanCraft.BetterRTP.references.invs.types.RTPInvWorlds; 8 | 9 | public enum RTP_INV_SETTINGS { 10 | MAIN(new RTPInvMain(), false), 11 | BLACKLIST(new RTPInvBlacklist(), true), 12 | COORDINATES(new RTPInvCoordinates(), true), 13 | WORLDS(new RTPInvWorlds(), false); 14 | 15 | private RTPInventory inv; 16 | private boolean showInMain; 17 | 18 | RTP_INV_SETTINGS(RTPInventory inv, boolean showInMain) { 19 | this.inv = inv; 20 | this.showInMain = showInMain; 21 | } 22 | 23 | public RTPInventory getInv() { 24 | return inv; 25 | } 26 | 27 | public Boolean getShowMain() { 28 | return showInMain; 29 | } 30 | 31 | void load(RTP_INV_SETTINGS type) { 32 | inv.load(type); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/RTP_SETTINGS.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.file.FileOther.FILETYPE; 5 | 6 | public enum RTP_SETTINGS { 7 | BLACKLIST( SETTINGS_TYPE.BOOLEAN, FILETYPE.CONFIG, "Template.Enabled", 8 | new Object[]{true, "Templates", "&7Toggle Templates system", "paper"}); 9 | 10 | SETTINGS_TYPE type; 11 | FILETYPE filetype; 12 | String path; 13 | String[] condition = null; 14 | Object[] info; // = new Object[]{false}; //ENABLED, NAME, DESCRIPTION, ITEM 15 | 16 | RTP_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String path, Object[] info) { 17 | this.type = type; 18 | this.filetype = filetype; 19 | this.path = path; 20 | this.info = info; 21 | } 22 | 23 | RTP_SETTINGS(SETTINGS_TYPE type, FILETYPE filetype, String[] arry, Object[] info) { 24 | this.type = type; 25 | this.filetype = filetype; 26 | this.path = null; 27 | this.info = info; 28 | //Condition 29 | this.condition = arry; 30 | } 31 | 32 | void setValue(Object value) { 33 | BetterRTP.getInstance().getFiles().getType(filetype).setValue(path, value); 34 | } 35 | 36 | public Object[] getInfo() {return info;} 37 | 38 | public Object getValue() { 39 | String path = this.path; 40 | if (path == null && condition != null) { 41 | if (BetterRTP.getInstance().getFiles().getType(filetype).getBoolean(condition[0])) 42 | path = condition[1]; 43 | else 44 | path = condition[2]; 45 | } 46 | return getValuePath(path); 47 | } 48 | 49 | private Object getValuePath(String path) { 50 | if (path != null) { 51 | if (getType() == SETTINGS_TYPE.BOOLEAN) 52 | return BetterRTP.getInstance().getFiles().getType(filetype).getBoolean(path); 53 | else if (getType() == SETTINGS_TYPE.STRING) 54 | return BetterRTP.getInstance().getFiles().getType(filetype).getString(path); 55 | else if (getType() == SETTINGS_TYPE.INTEGER) 56 | return BetterRTP.getInstance().getFiles().getType(filetype).getInt(path); 57 | } 58 | return null; 59 | } 60 | 61 | public SETTINGS_TYPE getType() { 62 | return type; 63 | } 64 | 65 | public FILETYPE getFiletype() { 66 | return filetype; 67 | } 68 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/SETTINGS_TYPE.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs; 2 | 3 | public enum SETTINGS_TYPE { 4 | BOOLEAN(Boolean.class), STRING(String.class), INTEGER(Integer.class); 5 | 6 | private java.io.Serializable type; 7 | 8 | SETTINGS_TYPE(java.io.Serializable type) { 9 | this.type = type; 10 | } 11 | 12 | java.io.Serializable getType() { 13 | return type; 14 | } 15 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs.enums; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 4 | 5 | public abstract class RTPInventory implements RTPInventory_Defaults { 6 | 7 | public RTP_INV_SETTINGS type; 8 | 9 | public void load(RTP_INV_SETTINGS type) { 10 | this.type = type; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTPInventory_Defaults.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs.enums; 2 | 3 | import java.util.List; 4 | 5 | import org.bukkit.Bukkit; 6 | import org.bukkit.Material; 7 | import org.bukkit.entity.Player; 8 | import org.bukkit.event.inventory.InventoryClickEvent; 9 | import org.bukkit.inventory.Inventory; 10 | import org.bukkit.inventory.ItemStack; 11 | import org.bukkit.inventory.meta.ItemMeta; 12 | 13 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 14 | import me.SuperRonanCraft.BetterRTP.references.messages.Message; 15 | import me.SuperRonanCraft.BetterRTP.references.player.HelperPlayer; 16 | import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; 17 | 18 | public interface RTPInventory_Defaults { 19 | 20 | void show(Player p); 21 | 22 | void clickEvent(InventoryClickEvent event); 23 | 24 | default ItemStack createItem(String item, int amount, String name, List lore) { 25 | Material mat = Material.valueOf(item.toUpperCase()); 26 | ItemStack _stack = new ItemStack(mat, amount); 27 | ItemMeta _meta = _stack.getItemMeta(); 28 | if (_meta != null) { 29 | if (lore != null) 30 | _meta.setLore(lore); 31 | if (name != null) 32 | _meta.setDisplayName(Message.color(name)); 33 | } 34 | _stack.setItemMeta(_meta); 35 | return _stack; 36 | } 37 | 38 | default void cacheInv(Player p, Inventory inv, RTP_INV_SETTINGS type) { 39 | PlayerData info = HelperPlayer.getData(p); 40 | info.getMenu().setInv(inv); 41 | info.getMenu().setInvType(type); 42 | } 43 | 44 | default Inventory createInv(int size, String title) { 45 | title = Message.color(title); 46 | return Bukkit.createInventory(null, size, title); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/enums/RTP_INV_ITEMS.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs.enums; 2 | 3 | public enum RTP_INV_ITEMS { 4 | NORMAL("paper", 1), 5 | BACK("book", 1, "Back", 0); 6 | 7 | public String item, name; 8 | public int amt, slot = -1; 9 | 10 | RTP_INV_ITEMS(String item, int amt) { 11 | this.item = item; 12 | this.amt = amt; 13 | } 14 | 15 | RTP_INV_ITEMS(String item, int amt, String name, int slot) { 16 | this.item = item; 17 | this.amt = amt; 18 | this.name = name; 19 | this.slot = slot; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvBlacklist.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 5 | import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory; 6 | import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTP_INV_ITEMS; 7 | import org.bukkit.Bukkit; 8 | import org.bukkit.World; 9 | import org.bukkit.entity.Player; 10 | import org.bukkit.event.inventory.InventoryClickEvent; 11 | import org.bukkit.inventory.Inventory; 12 | import org.bukkit.inventory.ItemStack; 13 | 14 | public class RTPInvBlacklist extends RTPInventory { 15 | 16 | public void show(Player p) { 17 | int slots = (Bukkit.getWorlds().size() - (Bukkit.getWorlds().size() % 9) + 1) * 9; 18 | if (slots < 6 * 9) 19 | slots += 9; 20 | Inventory inv = this.createInv(slots, "Settings: &lBlacklist"); 21 | int _index = 0; 22 | for (World world : Bukkit.getWorlds()) { 23 | if (_index > 9 * 5) 24 | break; 25 | ItemStack _item = createItem(RTP_INV_ITEMS.NORMAL.item, RTP_INV_ITEMS.NORMAL.amt, world.getName(), null); 26 | inv.setItem(_index, _item); 27 | _index ++; 28 | } 29 | ItemStack _item = createItem(RTP_INV_ITEMS.BACK.item, RTP_INV_ITEMS.BACK.amt, RTP_INV_ITEMS.BACK.name, null); 30 | inv.setItem(inv.getSize() - 9 + RTP_INV_ITEMS.BACK.slot, _item); 31 | p.openInventory(inv); 32 | this.cacheInv(p, inv, this.type); 33 | } 34 | 35 | @Override 36 | public void clickEvent(InventoryClickEvent e) { 37 | int slot = e.getSlot(); 38 | for (RTP_INV_ITEMS type : RTP_INV_ITEMS.values()) { 39 | if (type.slot != -1) { 40 | switch (type) { 41 | case BACK: 42 | if (slot == e.getInventory().getSize() - 9 + type.slot) 43 | BetterRTP.getInstance().getInvs().getInv(RTP_INV_SETTINGS.MAIN).show((Player) e.getWhoClicked()); 44 | default: 45 | break; 46 | } 47 | } 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/invs/types/RTPInvMain.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.invs.types; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.invs.enums.RTPInventory; 4 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 5 | import org.bukkit.entity.Player; 6 | import org.bukkit.event.inventory.InventoryClickEvent; 7 | import org.bukkit.inventory.Inventory; 8 | import org.bukkit.inventory.ItemStack; 9 | 10 | public class RTPInvMain extends RTPInventory { 11 | 12 | public void show(Player p) { 13 | Inventory inv = this.createInv(9, "&lSettings"); 14 | int _index = 0; 15 | for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) { 16 | if (type.getShowMain()) { 17 | String _name = type.name(); 18 | _name = _name.substring(0, 1).toUpperCase() + _name.substring(1).toLowerCase(); 19 | ItemStack _item = createItem("paper", 1, _name, null); 20 | inv.setItem(_index, _item); 21 | _index ++; 22 | } 23 | } 24 | p.openInventory(inv); 25 | this.cacheInv(p, inv, this.type); 26 | } 27 | 28 | @Override 29 | public void clickEvent(InventoryClickEvent event) { 30 | Player p = (Player) event.getWhoClicked(); 31 | int slot = event.getSlot(); 32 | int _index = 0; 33 | for (RTP_INV_SETTINGS type : RTP_INV_SETTINGS.values()) { 34 | if (type.getShowMain()) { 35 | if (_index == slot) { 36 | type.getInv().show(p); 37 | return; 38 | } 39 | _index++; 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessageData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.file.FileData; 4 | 5 | public interface MessageData { 6 | 7 | String section(); 8 | 9 | String prefix(); 10 | 11 | FileData file(); 12 | 13 | default String get() { 14 | return file().getString(prefix() + section()); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/Message_RTP.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.file.FileData; 5 | import org.bukkit.command.CommandSender; 6 | 7 | import java.util.List; 8 | 9 | public class Message_RTP implements Message { 10 | 11 | public static Message_RTP msg = new Message_RTP(); 12 | 13 | public static FileData getLang() { 14 | return BetterRTP.getInstance().getFiles().getLang(); 15 | } 16 | 17 | @Override 18 | public FileData lang() { 19 | return getLang(); 20 | } 21 | 22 | public static void sms(CommandSender sendi, String msg) { 23 | Message.sms(Message_RTP.msg, sendi, msg); 24 | } 25 | 26 | public static void sms(CommandSender sendi, String msg, Object placeholderInfo) { 27 | Message.sms(Message_RTP.msg, sendi, msg, placeholderInfo); 28 | } 29 | 30 | public static void sms(CommandSender sendi, String msg, List placeholderInfo) { 31 | Message.sms(Message_RTP.msg, sendi, msg, placeholderInfo); 32 | } 33 | 34 | public static void sms(CommandSender sendi, List msg, List placeholderInfo) { 35 | Message.sms(sendi, msg, placeholderInfo); 36 | } 37 | 38 | public static String getPrefix() { 39 | return Message.getPrefix(Message_RTP.msg); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessagesCore.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages; 2 | 3 | import org.bukkit.command.CommandSender; 4 | 5 | import java.util.HashMap; 6 | import java.util.List; 7 | 8 | public enum MessagesCore { 9 | 10 | SUCCESS_PAID("Success.Paid"), 11 | SUCCESS_BYPASS("Success.Bypass"), 12 | SUCCESS_LOADING("Success.Loading"), 13 | SUCCESS_TELEPORT("Success.Teleport"), 14 | FAILED_NOTSAFE("Failed.NotSafe"), 15 | FAILED_PRICE("Failed.Price"), 16 | FAILED_HUNGER("Failed.Hunger"), 17 | OTHER_NOTSAFE("Other.NotSafe"), 18 | OTHER_SUCCESS("Other.Success"), 19 | OTHER_BIOME("Other.Biome"), 20 | NOTEXIST("NotExist"), 21 | RELOAD("Reload"), 22 | UPDATE("Update"), 23 | NOPERMISSION("NoPermission.Basic"), 24 | NOPERMISSION_WORLD("NoPermission.World"), 25 | DISABLED_WORLD("DisabledWorld"), 26 | COOLDOWN("Cooldown"), 27 | INVALID("Invalid"), 28 | NOTONLINE("NotOnline"), 29 | DELAY("Delay"), 30 | SIGN("Sign"), 31 | MOVED("Moved"), 32 | ALREADY("Already"), 33 | //EDIT 34 | EDIT_ERROR("Edit.Error"), 35 | EDIT_SET("Edit.Set"), 36 | EDIT_REMOVE("Edit.Remove"), 37 | ; 38 | 39 | final String section; 40 | 41 | MessagesCore(String section) { 42 | this.section = section; 43 | } 44 | 45 | private static final String pre = "Messages."; 46 | 47 | public void send(CommandSender sendi) { 48 | Message_RTP.sms(sendi, Message_RTP.getLang().getString(pre + section)); 49 | } 50 | 51 | public void send(CommandSender sendi, Object placeholderInfo) { 52 | Message_RTP.sms(sendi, Message_RTP.getLang().getString(pre + section), placeholderInfo); 53 | } 54 | 55 | public void send(CommandSender sendi, List placeholderInfo) { 56 | Message_RTP.sms(sendi, Message_RTP.getLang().getString(pre + section), placeholderInfo); 57 | } 58 | 59 | public String get(CommandSender p, Object placeholderInfo) { 60 | return Message.placeholder(p, Message_RTP.getLang().getString(pre + section), placeholderInfo); 61 | } 62 | 63 | public void send(CommandSender sendi, HashMap placeholder_values) { 64 | String msg = Message_RTP.getLang().getString(pre + section); 65 | for (String ph : placeholder_values.values()) 66 | msg = msg.replace(ph, placeholder_values.get(ph)); 67 | Message_RTP.sms(sendi, msg); 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessagesHelp.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.file.FileData; 4 | 5 | public enum MessagesHelp implements MessageData { 6 | 7 | PREFIX("Prefix"), 8 | MAIN("Main"), 9 | BIOME("Biome"), 10 | EDIT("Edit"), 11 | HELP("Help"), 12 | INFO("Info"), 13 | PLAYER("Player"), 14 | RELOAD("Reload"), 15 | SETTINGS("Settings"), 16 | TEST("Test"), 17 | VERSION("Version"), 18 | WORLD("World"), 19 | LOCATION("Location"), 20 | ; 21 | 22 | final String section; 23 | 24 | MessagesHelp(String section) { 25 | this.section = section; 26 | } 27 | 28 | @Override 29 | public String prefix() { 30 | return "Help."; 31 | } 32 | 33 | @Override 34 | public FileData file() { 35 | return Message_RTP.getLang(); 36 | } 37 | 38 | @Override 39 | public String section() { 40 | return section; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/MessagesUsage.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages; 2 | 3 | import me.SuperRonanCraft.BetterRTP.references.file.FileData; 4 | import org.bukkit.command.CommandSender; 5 | 6 | public enum MessagesUsage implements MessageData { 7 | 8 | RTP_OTHER("Player"), 9 | WORLD("World"), 10 | BIOME("Biome"), 11 | LOCATION("Location"), 12 | //Edit 13 | EDIT_LOCATION("Edit.Location"), 14 | EDIT_BASE("Edit.Base"), 15 | EDIT_DEFAULT("Edit.Default"), 16 | EDIT_WORLD("Edit.World"), 17 | EDIT_WORLDTYPE("Edit.Worldtype"), 18 | EDIT_OVERRIDE("Edit.Override"), 19 | EDIT_BLACKLISTEDBLLOCKS("Edit.BlacklistedBlocks"), 20 | EDIT_PERMISSIONGROUP("Edit.PermissionGroup"), 21 | ; 22 | 23 | final String section; 24 | 25 | MessagesUsage(String section) { 26 | this.section = section; 27 | } 28 | 29 | public void send(CommandSender sendi, Object placeholderInfo) { 30 | Message_RTP.sms(sendi, Message_RTP.getLang().getString(prefix() + section), placeholderInfo); 31 | } 32 | 33 | @Override 34 | public String prefix() { 35 | return "Usage."; 36 | } 37 | 38 | @Override 39 | public String section() { 40 | return section; 41 | } 42 | 43 | @Override 44 | public FileData file() { 45 | return Message_RTP.getLang(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/messages/placeholder/Placeholders.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.messages.placeholder; 2 | 3 | public enum Placeholders { 4 | 5 | COMMAND("command"), 6 | PLAYER_NAME("player"), 7 | COOLDOWN("cooldown"), 8 | //Location 9 | LOCATION_X("x"), 10 | LOCATION_Y("y"), 11 | LOCATION_Z("z"), 12 | //World 13 | WORLD("world"), 14 | PERMISSION("permission"), 15 | //ints 16 | ATTEMPTS("attempts"), 17 | PRICE("price"), 18 | DELAY("delay"), 19 | TIME("time"), 20 | // Updater 21 | NEWVERSION("newVersion"), 22 | CURRENTDVERSION("currentVersion"), 23 | //Other 24 | BIOME("biome") 25 | ; 26 | 27 | public final String name; 28 | 29 | Placeholders(String name) { 30 | this.name = "%" + name + "%"; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/player/HelperPlayer.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.player; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.references.player.playerdata.PlayerData; 5 | import org.bukkit.entity.Player; 6 | 7 | public class HelperPlayer { 8 | 9 | public static PlayerData getData(Player p) { 10 | return getPl().getPlayerDataManager().getData(p); 11 | } 12 | 13 | public static void unload(Player p) { 14 | getPl().getPlayerDataManager().clear(p); 15 | } 16 | 17 | private static BetterRTP getPl() { 18 | return BetterRTP.getInstance(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/player/playerdata/PlayerData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.player.playerdata; 2 | 3 | import java.util.HashMap; 4 | 5 | import org.bukkit.World; 6 | import org.bukkit.entity.Player; 7 | 8 | import lombok.Getter; 9 | import lombok.Setter; 10 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.CooldownData; 11 | 12 | public class PlayerData { 13 | 14 | public boolean loading; //Is this players data loading? 15 | public final Player player; 16 | //Menus 17 | @Getter final PlayerData_Menus menu = new PlayerData_Menus(); 18 | //Player Data 19 | @Getter final HashMap cooldowns = new HashMap<>(); 20 | //@Getter @Setter CooldownData globalCooldown; 21 | @Getter @Setter boolean rtping; 22 | @Getter @Setter int rtpCount; 23 | @Getter @Setter long globalCooldown; 24 | @Getter @Setter long invincibleEndTime; 25 | 26 | PlayerData(Player player) { 27 | this.player = player; 28 | } 29 | 30 | public void load(boolean joined) { 31 | //Setup Defaults 32 | //new TaskDownloadPlayerData(this, joined).start(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/player/playerdata/PlayerDataManager.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.player.playerdata; 2 | 3 | import lombok.NonNull; 4 | import org.bukkit.entity.Player; 5 | import org.jetbrains.annotations.Nullable; 6 | 7 | import java.util.HashMap; 8 | import java.util.UUID; 9 | 10 | public class PlayerDataManager { 11 | 12 | private final HashMap playerData = new HashMap<>(); 13 | 14 | public PlayerData getData(@NonNull Player p) { 15 | if (!playerData.containsKey(p)) 16 | playerData.put(p, new PlayerData(p)); 17 | return playerData.get(p); 18 | } 19 | 20 | @Nullable 21 | public PlayerData getData(UUID id) { 22 | for (Player p : playerData.keySet()) 23 | if (p.getUniqueId().equals(id)) 24 | return playerData.get(p); 25 | return null; 26 | } 27 | 28 | public void clear() { 29 | playerData.clear(); 30 | } 31 | 32 | public void clear(Player p) { 33 | playerData.remove(p); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/player/playerdata/PlayerData_Menus.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.player.playerdata; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import me.SuperRonanCraft.BetterRTP.references.invs.RTP_INV_SETTINGS; 6 | import org.bukkit.World; 7 | import org.bukkit.inventory.Inventory; 8 | 9 | public class PlayerData_Menus { 10 | 11 | @Getter @Setter private Inventory inv; 12 | @Getter @Setter RTP_INV_SETTINGS invType; 13 | @Getter @Setter World invWorld; 14 | @Getter @Setter RTP_INV_SETTINGS invNextInv; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/CooldownData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo; 2 | 3 | import java.util.UUID; 4 | 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | public class CooldownData { 9 | 10 | @Getter private final UUID uuid; 11 | @Getter @Setter private Long time; 12 | 13 | public CooldownData(UUID uuid, Long time) { 14 | this.uuid = uuid; 15 | this.time = time; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/PermissionGroup.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo; 2 | 3 | import lombok.Getter; 4 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 5 | import me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds.WorldPermissionGroup; 6 | import org.bukkit.Bukkit; 7 | import org.bukkit.World; 8 | 9 | import java.util.ArrayList; 10 | import java.util.HashMap; 11 | import java.util.Map; 12 | 13 | public class PermissionGroup { 14 | 15 | String groupName; 16 | @Getter private final HashMap worlds = new HashMap<>(); 17 | 18 | @SuppressWarnings("rawtypes") 19 | public PermissionGroup(Map.Entry fields) { 20 | this.groupName = fields.getKey().toString(); 21 | 22 | BetterRTP.debug("- Permission Group: " + groupName); 23 | //Find Location and cache its values 24 | Object value = fields.getValue(); 25 | for (Object worldList : ((ArrayList) value)) { 26 | for (Object hash : ((HashMap) worldList).entrySet()) { 27 | Map.Entry worldFields = (Map.Entry) hash; 28 | BetterRTP.debug("- -- World: " + worldFields.getKey()); 29 | World world = Bukkit.getWorld(worldFields.getKey().toString()); 30 | if (world != null) { 31 | WorldPermissionGroup permissionGroup = new WorldPermissionGroup(groupName, world, worldFields); 32 | this.worlds.put(worldFields.getKey().toString(), permissionGroup); 33 | } else 34 | BetterRTP.debug("- - The Permission Group '" + groupName + "'s world '" + worldFields.getKey() + "' does not exist! Permission Group not loaded..."); 35 | } 36 | } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/QueueData.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo; 2 | 3 | import org.bukkit.Location; 4 | 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | public class QueueData { 9 | 10 | @Getter final int database_id; 11 | @Getter @Setter Location location; 12 | @Getter final long generated; 13 | 14 | public QueueData(Location location, long generated, int database_id) { 15 | this.location = location; 16 | this.generated = generated; 17 | this.database_id = database_id; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds; 2 | 3 | import java.util.List; 4 | 5 | import org.bukkit.World; 6 | import org.jetbrains.annotations.Nullable; 7 | 8 | import lombok.NonNull; 9 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; 10 | 11 | public interface RTPWorld { 12 | 13 | boolean getUseWorldborder(); 14 | 15 | int getCenterX(); 16 | 17 | int getCenterZ(); 18 | 19 | int getMaxRadius(); 20 | 21 | int getMinRadius(); 22 | 23 | int getPrice(); 24 | 25 | List getBiomes(); 26 | 27 | @NonNull World getWorld(); 28 | 29 | RTP_SHAPE getShape(); 30 | 31 | int getMinY(); 32 | 33 | int getMaxY(); 34 | 35 | @Nullable 36 | default String getID() { 37 | return null; 38 | } 39 | 40 | long getCooldown(); 41 | 42 | boolean getRTPOnDeath(); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/RTPWorld_Defaulted.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.player.rtp.RTP_SHAPE; 5 | import org.bukkit.World; 6 | 7 | import java.util.List; 8 | 9 | public interface RTPWorld_Defaulted { 10 | 11 | void setUseWorldBorder(boolean value); 12 | 13 | void setCenterX(int value); 14 | 15 | void setCenterZ(int value); 16 | 17 | void setMaxRadius(int value); 18 | 19 | void setMinRadius(int value); 20 | 21 | void setPrice(int value); 22 | 23 | void setBiomes(List value); 24 | 25 | void setWorld(World value); 26 | 27 | void setShape(RTP_SHAPE value); 28 | 29 | void setMinY(int value); 30 | 31 | void setMaxY(int value); 32 | 33 | void setCooldown(long value); 34 | 35 | void setRTPOnDeath(boolean bool); 36 | 37 | default void setupDefaults() { 38 | setAllFrom(BetterRTP.getInstance().getRTP().getRTPdefaultWorld()); 39 | } 40 | 41 | default void setAllFrom(RTPWorld rtpWorld) { 42 | setMaxRadius(rtpWorld.getMaxRadius()); 43 | setMinRadius(rtpWorld.getMinRadius()); 44 | setUseWorldBorder(rtpWorld.getUseWorldborder()); 45 | setCenterX(rtpWorld.getCenterX()); 46 | setCenterZ(rtpWorld.getCenterZ()); 47 | setPrice(rtpWorld.getPrice()); 48 | setBiomes(rtpWorld.getBiomes()); 49 | setShape(rtpWorld.getShape()); 50 | setMinY(rtpWorld.getMinY()); 51 | setMaxY(rtpWorld.getMaxY()); 52 | setCooldown(rtpWorld.getCooldown()); 53 | setRTPOnDeath(rtpWorld.getRTPOnDeath()); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/rtpinfo/worlds/WORLD_TYPE.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.rtpinfo.worlds; 2 | 3 | public enum WORLD_TYPE { 4 | NORMAL, //Normal world type finds the tallest safe block 5 | NETHER //Nether world types finds the lowest safe block 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/settings/SoftDepends.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.settings; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import me.SuperRonanCraft.BetterRTP.references.depends.regionPlugins.REGIONPLUGINS; 6 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 7 | import me.SuperRonanCraft.BetterRTP.references.file.FileOther; 8 | import org.bukkit.Bukkit; 9 | 10 | import java.util.logging.Level; 11 | 12 | public class SoftDepends { 13 | 14 | void load() { 15 | for (REGIONPLUGINS plugin : REGIONPLUGINS.values()) 16 | registerPlugin(plugin); 17 | } 18 | 19 | public void registerPlugin(REGIONPLUGINS pl) { 20 | FileOther.FILETYPE config = BetterRTP.getInstance().getFiles().getType(FileOther.FILETYPE.CONFIG); 21 | String pre = "Settings.Respect."; 22 | pl.getPlugin().setRespecting(config.getBoolean(pre + pl.getSetting_name())); 23 | if (pl.getPlugin().isRespecting()) 24 | pl.getPlugin().setEnabled(Bukkit.getPluginManager().isPluginEnabled(pl.getPluginyml_name())); 25 | if (pl.getPlugin().isRespecting()) 26 | debug("Respecting `" + pl.getSetting_name() + "` was " + (pl.getPlugin().enabled ? "SUCCESSFULLY" : "NOT") + " registered"); 27 | } 28 | 29 | 30 | 31 | static public class RegionPlugin { 32 | @Getter @Setter private boolean respecting; 33 | @Getter @Setter private boolean enabled; 34 | } 35 | 36 | private void debug(String str) { 37 | if (BetterRTP.getInstance().getSettings().isDebug()) 38 | BetterRTP.getInstance().getLogger().log(Level.INFO, str); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/references/web/Updater.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.references.web; 2 | 3 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 4 | import me.SuperRonanCraft.BetterRTP.versions.AsyncHandler; 5 | import org.bukkit.Bukkit; 6 | 7 | import java.io.BufferedReader; 8 | import java.io.InputStreamReader; 9 | import java.net.URL; 10 | import java.net.URLConnection; 11 | 12 | public class Updater { 13 | 14 | public static String updatedVersion = BetterRTP.getInstance().getDescription().getVersion(); 15 | 16 | public Updater(BetterRTP pl) { 17 | AsyncHandler.async(() -> { 18 | try { 19 | URLConnection con = new URL(getUrl() + project()).openConnection(); 20 | BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream())); 21 | updatedVersion = reader.readLine(); 22 | } catch (Exception ex) { 23 | Bukkit.getConsoleSender().sendMessage("[BetterRTP] Failed to check for an update on spigot"); 24 | updatedVersion = pl.getDescription().getVersion(); 25 | } 26 | }); 27 | } 28 | 29 | private String getUrl() { 30 | return "https://api.spigotmc.org/legacy/update.php?resource="; 31 | } 32 | 33 | private String project() { 34 | return "36081"; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/versions/AsyncHandler.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.versions; 2 | 3 | import com.tcoded.folialib.impl.ServerImplementation; 4 | import com.tcoded.folialib.wrapper.task.WrappedTask; 5 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 6 | import org.bukkit.entity.Entity; 7 | 8 | public class AsyncHandler { 9 | 10 | public static void async(Runnable runnable) { 11 | getFolia().runAsync(task -> runnable.run()); 12 | //Bukkit.getScheduler().runTaskAsynchronously(BetterRTP.getInstance(), runnable); 13 | } 14 | 15 | public static void sync(Runnable runnable) { 16 | getFolia().runNextTick(task -> runnable.run()); 17 | //Bukkit.getScheduler().runTask(BetterRTP.getInstance(), runnable); 18 | } 19 | 20 | public static void syncAtEntity(Entity entity, Runnable runnable) { 21 | getFolia().runAtEntity(entity, task -> runnable.run()); 22 | //Bukkit.getScheduler().runTask(BetterRTP.getInstance(), runnable); 23 | } 24 | 25 | public static WrappedTask asyncLater(Runnable runnable, long ticks) { 26 | return getFolia().runLaterAsync(runnable, ticks); 27 | //return Bukkit.getScheduler().runTaskLaterAsynchronously(BetterRTP.getInstance(), runnable, ticks); 28 | } 29 | public static WrappedTask syncLater(Runnable runnable, long ticks) { 30 | return getFolia().runLater(runnable, ticks); 31 | //return Bukkit.getScheduler().runTaskLater(BetterRTP.getInstance(), runnable, ticks); 32 | } 33 | 34 | private static ServerImplementation getFolia() { 35 | return BetterRTP.getInstance().getFoliaHandler().get(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/SuperRonanCraft/BetterRTP/versions/FoliaHandler.java: -------------------------------------------------------------------------------- 1 | package me.SuperRonanCraft.BetterRTP.versions; 2 | 3 | import com.tcoded.folialib.FoliaLib; 4 | import com.tcoded.folialib.impl.ServerImplementation; 5 | import me.SuperRonanCraft.BetterRTP.BetterRTP; 6 | 7 | public class FoliaHandler { 8 | 9 | private ServerImplementation SERVER_IMPLEMENTATION; 10 | 11 | public void load() { 12 | this.SERVER_IMPLEMENTATION = new FoliaLib(BetterRTP.getInstance()).getImpl(); 13 | } 14 | 15 | public ServerImplementation get() { 16 | return SERVER_IMPLEMENTATION; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/resources/economy.yml: -------------------------------------------------------------------------------- 1 | Economy: 2 | ## Enable world charges? ALL Worlds included, even custom worlds! 3 | Enabled: false 4 | ## Set to "0" to not charge for rtp, "Success.Bypass" message will be sent! 5 | ## Give players the permission "betterrtp.eco.bypass" to bypass economy 6 | Price: 500 7 | 8 | Hunger: #Make rtp'ing take up hunger to avoid exploits 9 | Enabled: false 10 | Honches: 4 11 | 12 | CustomWorlds: 13 | ## Enable custom world charging 14 | Enabled: true 15 | Prices: 16 | ## PlayerWorld will be charged "5" when typing /rtp, if they do not have "betterrtp.eco.bypass" 17 | - world: 50 18 | ## Setting the price to "0" will make the "Success.Bypass" message show 19 | - world_end: 0 -------------------------------------------------------------------------------- /src/main/resources/effects.yml: -------------------------------------------------------------------------------- 1 | Sounds: 2 | Enabled: true 3 | ProtocolLibSound: false 4 | ## More sounds at https://www.spigotmc.org/wiki/cc-sounds-list/ 5 | Delay: 'entity_tnt_primed' 6 | Success: 'entity_generic_explode' 7 | Titles: 8 | Enabled: true # Enable the titles effect feature 9 | ## All support %player% %x% %y% and %z% placeholders 10 | NoDelay: #Only triggers when there is no delay 11 | Title: '&6Teleporting...' 12 | Subtitle: '&8please wait' 13 | SendMessage: true 14 | Teleport: 15 | Title: '&6Teleported!' 16 | Subtitle: '&fx=%x% y=%y% z=%z%' 17 | SendMessage: true # Allow the teleport success message in chat 18 | Delay: 19 | Title: '' 20 | Subtitle: '&fTeleporting in %time% seconds...' 21 | SendMessage: true # Allow the teleport delay message in chat 22 | Cancelled: 23 | Title: '&eYou moved...' 24 | Subtitle: '&cRtp was cancelled!' 25 | SendMessage: true # Allow the cancelled message in chat too 26 | Loading: 27 | Title: '' 28 | Subtitle: '&7loading chunks... please wait' 29 | SendMessage: true # Allow the loading message in chat 30 | Failed: 31 | Title: '' 32 | Subtitle: '&cFailed! No safe spots located' 33 | SendMessage: true 34 | Particles: #Use `rtp info particles` for a list of particles 35 | Enabled: true 36 | Type: #list of particle types at https://github.com/ByteZ1337/ParticleLib/blob/master/src/main/java/xyz/xenondevs/particle/ParticleEffect.java 37 | - 'EXPLOSION_NORMAL' 38 | - 'CRIT' 39 | Shape: 'EXPLODE' #Types available are "Scan, Teleport and Explode", or use `/rtp info shapes` for a list of shapes 40 | Invincible: #Amount of time a player should not take damage for 41 | Enabled: true 42 | Seconds: 5 43 | Potions: #Use `/rtp info potion_effects` for a list of effects 44 | Enabled: true 45 | Types: #Format :[duration_ticks]:[amplifier] #Default duration=60, amplifier=1 46 | - 'Blindness:60:1' 47 | - 'Invisibility:60:1' -------------------------------------------------------------------------------- /src/main/resources/ideas.yml: -------------------------------------------------------------------------------- 1 | New: 2 | formatting: add time formatting for cooldowns/delays 3 | 4 | 5 | Done: 6 | #Add flags to `/rtp player ` command 7 | ignore_cooldown: 'ignores current cooldown delay' 8 | ignore_hunger: 'no hunger checks/charge' 9 | ignore_economy: 'no price deducted from bank' -------------------------------------------------------------------------------- /src/main/resources/lang/README.md: -------------------------------------------------------------------------------- 1 |

2 | Welcome to BetterRTP's language files! 3 |

4 | 5 | ## Wheres the Wiki? 6 | The wiki is available [here](https://github.com/SuperRonanCraft/BetterRTP/wiki)! 7 | 8 | ## Want to Contribute translating? 9 | Fork one of the language files above and help translate! 10 | 11 |

12 | Chat with us on Discord
13 | Discord
14 | Have a Suggestion? Make an issue!
15 | GitHub issues
16 |
17 | Thank you for viewing the Wiki for BetterRTP!
18 | Did this wiki help you out? Please give it a Star so I know it's getting use!
19 |
20 | Check out my other plugins! 21 |

-------------------------------------------------------------------------------- /src/main/resources/locations.yml: -------------------------------------------------------------------------------- 1 | #Locations where rtp will center upon 2 | #Format: 3 | # - LOCATION_NAME: 4 | # World: world 5 | # CenterX: 100 6 | # CenterY: 150 7 | # MaxRadius: 100 8 | # MinRadius: 5 9 | # Shape: square 10 | # MinY: 0 11 | # MaxY: 320 12 | 13 | Enabled: false #enable the locations feature 14 | RequirePermission: false #Require players to have `betterrtp.location.` 15 | UseLocationIfAvailable: true #Will choose a location upon `/rtp` if location(s) is available in the world 16 | UseLocationsInSameWorld: true #Will only choose locations in same world rtp'ing in 17 | # If UseLocationsInSameWorld is set to true, use `betterrtp.bypass.location` to allow rtp'ing to locations in other worlds 18 | 19 | Locations: 20 | - main_loc: 21 | World: world_name 22 | CenterX: 100 23 | CenterZ: 150 24 | MaxRadius: 100 #optional 25 | MinRadius: 5 #optional 26 | Shape: square #optional 27 | MinY: 0 #optional 28 | MaxY: 320 #optional 29 | Cooldown: 300 #optional -------------------------------------------------------------------------------- /src/main/resources/permissions.yml: -------------------------------------------------------------------------------- 1 | permissions: 2 | betterrtp.*: 3 | children: 4 | betterrtp.use: true 5 | betterrtp.world: true 6 | betterrtp.world.*: true 7 | betterrtp.bypass.*: true 8 | betterrtp.player: true 9 | betterrtp.reload: true 10 | betterrtp.updater: true 11 | betterrtp.group.*: true 12 | betterrtp.world: 13 | description: Ability to use the world command 14 | betterrtp.world.*: 15 | description: RTP in all enabled worlds 16 | betterrtp.world.: 17 | description: RTP in world named world 18 | betterrtp.bypass.*: 19 | children: 20 | betterrtp.bypass.cooldown: true 21 | betterrtp.bypass.delay: true 22 | betterrtp.bypass.economy: true 23 | betterrtp.bypass.hunger: true 24 | betterrtp.use: 25 | description: Use RTP command 26 | default: true 27 | betterrtp.player: 28 | description: RTP another player 29 | betterrtp.biome: 30 | description: RTP to specific biomes 31 | betterrtp.sign: 32 | description: Ability to create an RTP sign 33 | #Locations 34 | betterrtp.location: 35 | description: Ability to use the location command 36 | betterrtp.location.*: 37 | description: Ability to use all locations if permissions are enabled in locations.yml 38 | default: op 39 | #Bypasses 40 | betterrtp.bypass.cooldown: 41 | description: Bypass cooldowns 42 | betterrtp.bypass.delay: 43 | description: Bypass delays 44 | betterrtp.bypass.economy: 45 | description: Bypass economy 46 | betterrtp.bypass.hunger: 47 | description: Bypass hunger 48 | #Reload 49 | betterrtp.reload: 50 | description: Reload the config 51 | default: op 52 | betterrtp.updater: 53 | description: Get notification on new updates 54 | default: op 55 | betterrtp.test: 56 | description: While debugger enabled, be able to test particles, potion effects and sounds 57 | default: op 58 | #Permission Groups 59 | betterrtp.group.*: 60 | description: Allow access to all permission groups 61 | default: op -------------------------------------------------------------------------------- /src/main/resources/placeholders.yml: -------------------------------------------------------------------------------- 1 | ## These are a list of placeholders for your use, Editting these will do nothing! 2 | betterrtp_count: 'Get total amount of rtp''s done' 3 | betterrtp_cooldown: 'Get cooldown in current world' 4 | betterrtp_cooldown_: 'Get cooldown of a specified world' 5 | betterrtp_cooldowntime: 'Get cooldown time subject to in current world' 6 | betterrtp_cooldowntime_: 'Get cooldown time subject to in specified world' 7 | betterrtp_canrtp: 'Get the reason or yes output if player can rtp in current world' 8 | betterrtp_canrtp_: 'Get the reason or yes output if player can rtp in set world' 9 | betterrtp_canrtpcooldown: 'Get if a player can rtp just based off their cooldown' 10 | betterrtp_canrtpcooldown_: 'Get if a player can rtp just based off their cooldown for this world' 11 | betterrtp_canrtpprice: 'Get if a player can rtp just based off their bank account' 12 | betterrtp_canrtpprice_: 'Get if a player can rtp just based off their bank account for this world' 13 | betterrtp_canrtphunger: 'Get if a player can rtp just based off their hunger' 14 | betterrtp_canrtphunger_: 'Get if a player can rtp just based off their hunger for this world' 15 | betterrtp_price: 'Get the price of rtp''ing in current world' 16 | betterrtp_price_: 'Get the price of rtp''ing in specified world' 17 | 18 | ##Config section for placeholder outputs 19 | Config: 20 | TimeFormat: 21 | Days: '{0} Day(s)' 22 | Hours: '{0} Hour(s)' 23 | Minutes: '{0} Min(s)' 24 | Seconds: '{0} Secs' 25 | ZeroAll: 'None' 26 | Infinite: 'Inf' 27 | Separator: 28 | Middle: ', ' #Ex: 1 Days, 5 Hours, 2 mins and 5 secs 29 | Last: ' and ' #Ex: 1 Mins and 10 Secs 30 | CanRTP: 31 | Success: '&aYes' 32 | NoPermission: '&cNo Permission' 33 | Cooldown: '&fCooling Down' 34 | Price: '&cNo. &7Reason: &eBankrupt' 35 | Hunger: '&cNo. &7Reason: &3Starvation' -------------------------------------------------------------------------------- /src/main/resources/signs.yml: -------------------------------------------------------------------------------- 1 | Settings: 2 | Enabled: false 3 | Title: "[RTP]" -------------------------------------------------------------------------------- /todo.yml: -------------------------------------------------------------------------------- 1 | 2 | To-Do list for BetterRTP 3 | 4 | 5 | Worlds with spaces: 6 | - Support for worlds with spaces in their names 7 | 8 | -----DONE----- 9 | Add KingdomsX support: 10 | Wiki: https://github.com/CryptoMorin/KingdomsX/wiki/API 11 | Plugin: https://www.spigotmc.org/resources/kingdomsx.77670/ 12 | 13 | Queue System: 14 | - Allow for safe spots to save every so often to not run in real time when players are rtp'ing 15 | 16 | CustomWorlds: 17 | - If a world has a custom config, if its missing a centerx/z, there will be a RNG error 18 | 19 | Suggestions: 20 | - Halos#1112: option to not rtp players near each other 21 | --------------------------------------------------------------------------------