Become a premium member to remove ads

Search the Community

Showing results for tags 'warp'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Community Hub
    • News & Announcements
    • Suggestions & Feedback
  • Server Management
    • MineCraft Registration
    • Support
    • Reports
    • Ban Appeals
  • Server Discussion
    • Minecraft
    • Teamspeak 3
    • Minecraft Modded: Age of Rebirth
    • Minecraft Beta 1.7.3
    • Valheim
  • Community Discussion
    • The Den
    • Computers & Tech
    • General Gaming
    • PC Gaming
    • Console Gaming
  • Chaotic United (Unofficial)'s Topics

Calendars

  • Community Calendar
  • ChaoticUnited's Calendar
  • NuclearDistrict's Calendar

Categories

  • Chaotic United
    • Minecraft Worlds
    • Minecraft Texture/Resource Packs
    • Valheim Worlds
  • Miscellaneous Files
  • Chaotic United (Unofficial)'s Files

Categories

  • Tutorials and Guides
    • Minecraft
    • Website and Forums
    • Miscellaneous
  • Resources
    • Guidelines
    • Troubleshooting
    • History
    • Minecraft
    • Website and Forums

Categories

  • Minecraft Server Bugs
    • Archive
  • MC Beta 1.7.3 Bugs
    • Archive
  • Website/Forums Bugs
    • Archive
  • Discord Bugs
    • Archive
  • TeamSpeak Bugs
    • Archive
  • Other Bugs
    • Archive

Categories

  • Minecraft Server Suggestions
    • Archive
  • MC Beta 1.7.3 Suggestions
    • Archive
  • Age of Rebirth Suggestions
    • Archive
  • Website/Forums Suggestions
    • Archive
  • Discord Suggestions
    • Archive
  • Other Suggestions
    • Archive

Categories

  • Minecraft Server
    • Items
    • Blocks
    • Mobs
    • Locations
    • Technical Resources
  • History
    • Members
    • Communities

Blogs

  • random test blog
  • Infinity
  • Random Web Design
  • Update Notes
  • Halo's Thoughts
  • Brink of Chaos Updates
  • Age of Rebirth Update Notes
  • TechnoGalaxy's Beta Adventures
  • CU Veterans's Blog

Product Groups

  • Legacy
    • Minecraft Ranks (Legacy)
    • Demoria Online
    • Minecraft Currency
    • Misc. Donations
  • Apparel
    • Men's T-Shirts
    • Women's T-Shirts
  • Miscellaneous
  • Advertisements

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Minecraft


Steam


Discord

Found 1 result

  1. Hey, everyone! After hearing me talk about it for months at this point - and after over a year since the BungeeCord migration was considered "complete", cross-server warps and teleportation is now in the server. Using the new Warps System The new warps system consolidates the old CUWarps and Essentials warps systems into one, unified system. You may previously recall that you had both the /pwarp and /warp commands. Now, everything is under /warp - no need for /pwarp anymore. Warp management has been redone and can be managed using /mywarps. This will allow you to purchase warps, warp aliases, and manage your existing ones. What are warp aliases, you might ask? Warp aliases are a new addition to allow for easier management of, well, aliases. For those times where you might want multiple warps pointing to the same spot, you can now purchase aliases for warps - and manage all of them as a single warp. At this time, aliases do not show in /warp list - though this may be changed at a later date. You might also notice some blue warps in the /warp list. These are "Official" warps. Any warps that go to server-specific locations (such as spawns, /warp help, and other such locations) are classified as official warps. Other than being displayed differently in the warp list, there's nothing different about these. Restricted Servers Something you may notice when trying to manage warps or teleport, you'll find in some cases that you are unable to. The new plugin has a configurable list of servers where the players within cannot be teleported to. This currently includes Minigames, Vanilla, and Factions. You also won't be able to manage warps here, either. You are able to teleport out of these servers, but not back in - after all, it'd be pretty rough if you were able to teleport to someone's faction or vanilla base, or to a minigame arena in progress, right? That's cool and all... but why the wait? Ah yes. The question I'm sure many of you are wondering - why exactly did this seemingly simple feature take over a year to make a reality? Well, there's a few different reasons - let's go through them all individually. Bungee-Bukkit Communication For starters, it's important to recognize that BungeeCord and Bukkit (in other words, any of the individual gamemodes - like survival, skyblock, creative, etc) have virtually no way to talk to each other. BungeeCord only knows what server a player is connected to, and can connect them to another server if needed. BungeeCord has no knowledge of what world a player is in, nor their coordinates or anything like that. Additionally, the only default method of communicating between the two involves using the player as a vehicle to carry that data. In other words, if no player is on to switch between those servers, data cannot be transmitted. So, the plugin we made requires that we build our own communication method - which thankfully, isn't as hard as it sounds. We used something called Redis - which both BungeeCord and Bukkit can listen to and monitor - and it allows for the two to communicate almost instantly. And as a result of this... Code Complexity and Motivation ... the code for what would normally be a simple Bukkit plugin became three separate Eclipse projects: CUBungee - The BungeeCord plugin that we've been using for a number of general-purpose features, and would house most of the warp and teleport functionality. CUBungeeBukkitBridge - A plugin which sits on each Bukkit server (each gamemode) and responds to messages from BungeeCord. CUBungeeCommon - A library shared by both CUBungee and CUBungeeBukkitBridge, containing a number of common classes used by both projects. Additionally, it took a very long time to find a system of communication that was maintainable. The root issue with most of the previous approaches was that the old setup required bouncing around to different parts of code. All of the business of /setwarp wasn't in a class or file named Setwarp, like you'd expect - but instead, everything after the first message sent from BungeeCord was done in a completely different part of code. For comparison - setting a warp in Bukkit involves the following steps: Get the current location of the player Construct a new warp with player's current location (and provided inputs for name and such) Register new warp That's it. Now - with BungeeCord - what does that look like? Find out what server the player is in Ask that server where the player's location is Wait for the reply Check the reply to see if the response was valid If valid, construct a new warp with the player's location (and once again, provided inputs for name and privacy) Register new warp And for fun - what about teleporting to a warp in BungeeCord? Get the warp the player wants to teleport to Find out what server the warp points to Ask that server if the world the warp has exists Wait for reply Check reply to see if world exists If so, instruct server to teleport the player to the warp's location upon login Connect the player to the warp's server Whew - that's quite the process. What about in Bukkit, though? Get the warp the player wants to teleport to Check if the world exists If so, teleport player to warp location As you can likely tell - the BungeeCord procedures for all of this are significantly more complex than if it was all done within a single Bukkit server. This complexity is unavoidable - however as described before, I was writing the code in a way that made this entire procedure a lot more painful than it had to be. Eventually, I came up with the idea of transforming the original message into the reply - allowing me to simply wait for the reply within the same part of code. As such, everything needed for the /setwarp command could all be done within the same file. This simple re-contextualization is all that was needed to make the codebase more maintanable. I also have to credit @GuitarXpress here as well - as he helped point out one critical issue which was causing me a major headache where I was observing what I could only describe as quantum mechanics in Minecraft. I had a point where the reply messages would ALWAYS time out waiting for a reply. Which was bad - because if I couldn't get a reply, then the entire idea was going to be scrapped. However, as soon as I started printing this one value to console, it ALWAYS replied in time. Remove the log event? Stops working. The act of trying to monitor a certain variable was changing the result - literal quantum mechanics. But no - turns out, I simply needed to add the volatile keyword to that variable - as the problem was that the part of code checking it was just not seeing the new value. That final breakthrough was the big thing that allowed everything to finally fall into place. Now - you might be wondering, when did this great breakthrough happen? Just under 2 weeks ago - July 5th to be exact. Yep - after solving the code complexity issues, cross-server teleportation and cross-server warps were able to be completed within a couple weeks. But... Can't you just use a plugin that someone else already made? This is another question I got a few times. Why is it that in a world where tons of plugins are readily available, that seemingly nobody has bothered to make a plugin for cross-server warps and teleports in a BungeeCord network? Well, for starters - the way we use warps are actually a bit different than most warps, since we allow players to directly purchase warps with ingame currency. Most warp plugins don't allow for this. We actually did find a cross-server warp plugin, but it didn't allow for private or unlisted warps, nor did it allow for user-purchasable warps. But the bigger reason why this kind of feature is seemingly so rare is that, in almost every scenario, servers with BungeeCord networks are much larger in scale and scope (and player count). They actually isolate their gamemodes on purpose. They don't want chat or teleports or warps to be interleaved together across everything - because if you have hundreds or thousands of players, this can actually be a huge detriment. However, we moved to BungeeCord purely out of technical reasons - having all of our features and gamemodes within a single Bukkit server resulted in poor performance, lots of lag, and made debugging an absolute nightmare. Rather than having 8 servers with a handful of plugins each, we had one server with over 120 plugins. Of course, I didn't want to start cutting gamemodes - as while we're small, every gamemode gets some attention. And rather than removing choices for people and potentially causing them to leave, we opted to migrate to BungeeCord. But all the while, I still wanted everything to feel connected - to maintain the illusion of everything still being within a single server. This is the complete antithesis of what most BungeeCord servers aim to achieve - and so there simply isn't demand for something like this. That's why I had to build it myself - because nobody else needed to. Wrapping Up But thankfully - it's finally in. There are still a couple minor fixes I need to do here and there, but overall - it's all ready to go. As per usual with any new feature, let me know if you run into any issues. This plugin is hot off the presses, so it's entirely likely that there's a bug that we didn't catch during testing. Other than that - be on the lookout for additional improvements coming sooner rather than later. The need to get this feature done has been a dark cloud hanging over my motivation to work on server plugins - so finally having it behind me I suspect will have positive effects on my drive to work on the more exciting stuff.