Atlas  | Custom Packet Listening | Numerous Utils | Block BoundingBoxes icon

Atlas | Custom Packet Listening | Numerous Utils | Block BoundingBoxes -----

The most compact, accurate, and featureful Bukkit plugin API.




Changelog
- Startup error was corrected that didn't appear in final build release testing.
----------, Sep 22, 2022

Changelog
- Updated XMaterial, XBlock, XEnchantment, and XPotion classes.
- Refactored co.aikar.commands to cc.funkemunky.api.co.aikar.commands to prevent incompatbility with other plugins using the aikar/commands API.
- Fixed Atlas command not sending properly.
- Improved performance of Reflections class on startup
- Fixing startup errors on some versions of Minecraft.
- Removed H2 library from Atlas since it caused incompatibilities with other plugins.
----------, Sep 13, 2022

Changelog
  • Added 1.19 support, still in Alpha stage but will function.
  • Fixed accuracy of door bounding boxes.
  • Fixed bug in legacy commands system that prevented Atlas from unregistering commands on shutdown.
  • Fixed BlockBox error on 1.8
  • Added more utilities into MathUtils and MiscUtils
----------, Jun 21, 2022

Changelog
- Fixed WrappedInUseEntity error on 1.17+.
- You can now get bounding boxes through vanilla means in the BlockBox util.
- Fixed errors with 1.18.2 compatibility
- Fixed Trapdoors, Skulls, and Iron bars collision box's on BlockData
- Added configuration API that will retain comments.
----------, Mar 21, 2022

Changelog
- Added more wrappers to WrappedOutPacketDataSeralizers.
- Fixing error in WrappedOutRespawnPacket on versions 1.16 and later.
- Fixed Vec3D not returning the correct result in WrappedInUseEntityPacket
----------, Feb 25, 2022

This update just fixes doors and the collision box returned by BlockData in 1.13+
----------, Feb 16, 2022

Changelog
- Fixed 1.16+ errors when grabbing block states in BlockData for dynamic collision boxes.
- Should fix door CollisionBox inaccuracies on 1.18.
----------, Feb 15, 2022

Changelog
- Added Lectern collision box
- Added Lantern collision box.
- Added campfire collision box
- Fixed bug where SCAFFOLDING would return as not solid from Materials class.
- Fixed async errors on 1.16+ in DynamicWall, DynamicPane, and DynamicFence
- Fixing error in WrappedInAbilitiesPacket on 1.16.
----------, Jan 20, 2022

Changelog
- Corrects inaccurate Cake collision box returns from BlockData.
- Corrects inaccurate fence and wall collision box returns from BlockData.
- Corrects inaccurate carpet collision box returns from BlockData on 1.17+.
- Fixed error with WrappedInAbilitiesPacket on 1.16-1.16.5
----------, Jan 16, 2022

Changelog
- Fixed error caused by signs in DynamicFence on 1.17+.
- Optimized DynamicFence, DynamicWall, and DynamicPane.
- Corrected bug that would cause inaccurate fence collision boxes on certain blocks.
----------, Jan 8, 2022

Changelog
- Fixed lava and water not being properly registered as liquids.
- Fixed asyncProcessors in PacketProcessor not being unregistered.
- Added WrappedOutAttachEntity packet wrapper for PacketPlayOutAttachEntity (initially pulled by @DemonDxv and then tested and finished by Atlas team)
- Fixed bug that causes forge players to be error-disconnected when Atlas reloads.
----------, Jan 6, 2022

Changelog
- Fixed bug in 1.17.1 and 1.17 preventing Atlas from starting up properly.
- Fixed bug where WrappedOutCustomPayload would cause people to get kicked.
- Fixed some errors within 1.7.10-1.8
----------, Dec 20, 2021

Changelog
- Restructured Atlas for Bukkit since future abstraction updates will require separate modules.
- Implemented new WrappedClass#geMethodByType and index style methods but with parameter matchings.
- Added full compatibility for 1.18 and 1.18.1
----------, Dec 19, 2021

Changelog
- Fixes errors inside of WrappedInCustomPayload.
- Added new UpdatingButton object for use in menus, to automatically update button meta inside of ChestMenus.
- Fixed MessageHandler API grabbing message values improperly.
- Removing Block#getNewData usages.
- Fixing async issues with later version of Minecraft with fences, doors, and walls.
- Added back old classes that were previously removed, causing incompatibilities with older plugins.
- Added more WrappedPacketDataSeralizer options.
- Fixing WrappedOutTransaction on multiple versions of Minecraft.
- Fixing WrappedOutChatPacket on 1.7.10.
- Fixing WrappedOutEntityTeleportPacket on 1.8 and 1.7.10
- Fixing reflection errors in CraftReflection
- Updated dependencies for security and reliability reasons
----------, Dec 14, 2021

Changes
Implemented full 1.17 and 1.17.1 compatibility.
----------, Dec 2, 2021

Changelog
- Fixing WrappedInWindowClick errors on some versions between 1.7.10 and 1.16.5
----------, Nov 25, 2021

Changelog
- Atlas plugin will now load perfectly on 1.17 and 1.17.1.
- All incoming packet wrappers are updated for 1.17+.
- Outgoing packet wrappers are still being updated for 1.17+ (Updated wrappers: WrappedOutAbilitiesPacket, WrappedOutBlockChange, WrappedOutChatPacket, WrappedOutCloseWindowPacket, WrappedOutEntityEffectPacket).
- Added h2 library to Atlas for use in Flatfile SQL databases.
- Fixing other errors and minor bugs.
----------, Nov 23, 2021

Changelog
- Added new IntVector object.
- Fixing errors on 1.7.10.
- Fixing Atlas#getWorldInfo NPE
- Improves the performance of EvictingMap and removes legacy AtlasListener based packet listeners from the plugin itself.
- More things now work with 1.17, but full compatibility is not complete.
----------, Oct 25, 2021

Notes
Not all of Atlas is yet fully compatible with 1.17, despite some things that have been changed to support it. It is highly recommended that you do not use Atlas for 1.17 yet. If you would like to contribute to Atlas and help me get this done faster. There is a lot to do

Changelog
- Added WrappedInTeleportAccept wrapper for PacketPlayInTeleportAccept
- Added new custom configuration system with Atlas.
- Added 1.17 support for TinyProtocol and BlockBox.
- Added fastutil objects to Atlas. They have not been minified yet so the jar will temporarily be 30MB (sorry)
- Added 1.17 for PacketPlayInFlying, PacketPlayOutTransaction, PacketPlayInTransaction, PacketPlayInUseEntity, PacketPlayOutEntity,
- Fixed memory leaks within Atlas that prevent plugins, even when done properly, from being able to clear themselves from memory on unload/reload
- Fixed missing repository within Atlas that prevented others from compiling.
- Fixed bug where BungeeManager#isBungee would always return true if the bungee was manually enabled in the Atlas config.yml
----------, Sep 20, 2021

Changelog
- Fixing general errors on versions 1.9+ and more errors on 1.13+.
- Fixed AtlasBungee not starting up properly and not hooking in with Atlas correctly.
- Added AtlasBungee not installed warning.
- Fixing Java 16 error inside of WrappedField#set (and other Java 16 support issues)
- Fixed missing objectweb asm errors on java installations without asm libraries prebaked into the JDK.
- Fixed Materials bug that would not return the right information for skulls.
- Fixed innaccurate skull bounding boxes in BlockData.
- Updated XMaterial class from original author to his latest version, and reapplied my necessary changes (this may cause incompatibility with plugins using older versions of Atlas)
- Fixed XMaterial bug where it would not grab some materials on request and would return null.
- Fixed SeaPickle errors with BlockData.
- Added ExpTimer utility to create timers within a player's exp bar.
- Adding hex support to the Color class for grabbing colors on 1.16+.
- Fixes BlockPlace packet errors on Atlas 1.13+.
- Fixed WrappedOutExplosionPacket not functioning properly.
----------, Aug 20, 2021

Changelog
- Fixes error that can occur where some packets will get sent to the incorrect listener within the synchronous packet listener.
- Optimized the 1.8 TinyProtocol within atlas.
- Optimized BlockData#getData(Material)
- Added CollisionBox#shrink and CollisionBox#expand methods
- Fixed inaccurate Anvil collision boxes
- Added a list of all the packets in Packet class for projects that want to grab a list of all of them but previously cant because the class wasn't created as an Enum.
- Optimized the Async packet listeners.
----------, Jul 14, 2021

Changelog
- Found root cause of lag within Atlas main class.
- Deprecated old methods have handling entity tracking.
- Optimized packet sending for 1.8 spigots and newer.
- Updated WrappedInUseEntity with new 1.16+ changes.
----------, Jul 8, 2021

Changelog
- Fixed WrappedInFlyingPacket returning the incorrect information for versions 1.9+
- Readded functionality within WrappedInFlyingPacket to modify the values of the incoming packet.
- Optimized WrappedInTransactionPacket with vanilla abstraction instead of reflection for most fields.
- Optimized RayCollision#boxesOnRay, now takes only half the time to run.
- Optimized BlockUtil#getBlock by 5000%. Turns out getChunkAt is kinda laggy.
- Fixed double messages in WrappedOutChatPacket.
- Fixed bug where commands would show up twice instead of once like it should (result of the previous bug fix).
----------, Jul 6, 2021

Changelog
- Fixed lag caused by the entityProcessor in the Atlas main class.
- Fixed onGround field in WrappedInFlyingPacket not grabbing the right value from 1.13-1.16.5
----------, Jul 6, 2021

Changelog
- Added new PacketProcessor class, which can be accessed with `Atlas.getInstance().getPacketProcessor()` for use of packet listening.
- Deprecated `PacketReceiveEvent` and `PacketSendEvent`.
- Added new WrappedOutExplosionPacket wrapper for PacketPlayOutExplosion.
- Fixed error within BlockData caused by the SeaPickle generation for versions below 1.13.
----------, Jul 5, 2021

Changelog
- Removed all profiler calls within the most used methods of Atlas, since they can be a bit heavy.
- Removed unnecessary processing of code within Atlas.
- Implemented a bunch of new utilities.
- Fixes incompatibilities with 1.16.4 and other Minecraft version.
- Reduced CPU usage overall.
- Optimized reflection classes.
- Fixed other bugs.

Notes
Implementing compatibility for 1.17 is a bit of a pain since all the mappings have changed. I have implemented some changes to the way I grab Classes in the Reflections class to be able to grab the correct classes without having to worry about package name changes, hopefully reducing the need for me to manually input every single packet name in all the Class fields.

This update is unfinished but should be stable for production use.
----------, Jul 2, 2021

Changelog
- Fixed formatting of project on GitHub for easier contribution.
- Removed useless or unfinished classes.
- Implemented new 1.16-1.16.4 compatibility.
- Removed deprecation for the BlockBox system. It will be updated in the future.
- Fixed WrappedInSetingsPacket errors on 1.14+
- Fixed WrappedInBlockPlacePacket errors on 1.14+
- Fixed WrappedInArmAnimation errors on 1.14+
- Fixed some errors in TinyProtocol_18 for 1.13+.
- Fixed errors with 1.9+ in WrappedInUseEntityPacket.
- Fixed errors in 1.16+ with WrappedChatMessage.
- Fixed errors in the annotation CommandManager with later versions of Minecraft.
- Fixed WrappedOutOpenWindow error in 1.14+
- Fixing errors in JsonMessage class for latest versions of Minecraft.
- Fixed 1.8 errors in WrappedEnumHand.
- Implemented new Settings menu API extension of the current menu API (Settings, SettingsMenu, SettingButton).
- Fixed error in EntityData when grabbing entities that aren't already set.
- Implemented new utilities in MiscUtils and other places.
- Fixed instability with AtlasBungee.
- Atlas and AtlasBungee will do their best to autoconfigure themselves to fit your servers loadout.
- Removed debug messages that were in the form of Bukkit.broadcastMessage() (oops).
- Added new ChatBuilder class which uses the spigot ComponentBuilder but makes it a bit less verbose.
----------, Nov 24, 2020

Changelog
- Implemented new entity caching system in the Atlas main class.
- Fixed potential I/O lag problem in Messages util. This was caused by saving to the file every single time a message was accessed (derp).
- Set methods as synchronized in FunkeFile so files aren't being written to at the same time.
- Fixing CME in BaseProfiler (thanks @Vaperion )
- Implementing more fields (teleport flags) into the WrappedOutPositionPacket. I noticed these were omitted and were likely the cause of teleport checking not working properly.
- Improved the performance of WrappedInUseEntityPacket by not looping through entitys every packet, but instead using Atlas's new cached Entity system (retrooper).
- Implemented the ability to update vanilla objects using updateObject() with WrappedOutSpawnEntityPacket and WrappedOutVelocityPacket.
----------, Sep 5, 2020

- Fixed an issue with trap doors causing errors.
- Improved runtime for specific methods.
----------, Aug 25, 2020

Changelog
- Updated ProjectCarbon to 1.2.3.
- Fixed any startup errors or other miscellaneous errors.
- Made the jar package size a lot smaller.
- Remapped some dependencies to prevent interference with other plugins.
- Implemented new encrypted fields to databases.
- Improved performance and fixed other minor bugs.
----------, Nov 4, 2019

Changelog
- Reverted to TinyProtocol for extra functionality and increased accuracy (credits to @DeprecatedLuke for parts of it).
- Decreased file sizes of Atlas and AtlasBungee drastically.
- Updated Profiler with new functionality and increased accuracy in its math.
- Added Tuple<K, V> object. Allows for objects to put in collections that are paired together.
- Added ProtocolVersion checking to 1.7.10.
- Now defaults to ViaVersion if the plugin is installed to provide the real protocol id before it modifies it so Minecraft doesn't kick the player for being an incorrect version.

TODO
- Added the ProtocolSupport API since it has its own thing too and not all people use ViaVersion/ViaRewind.
- Add a better way to check if ViaVersion is installed that would cause less lag and potential screw-ups (using a try and catch is the current way to do it nice job Luke).

Database Information
Read the README @ https://github.com/funkemunky/ProjectCarbon for information on how to use the new system.

New JavaDocs
You can view the java-docs for Atlas @ https://funkemunky.github.io/Atlas.
----------, Nov 4, 2019

**WARNING**: There have been a few method changes that will definitely break plugins depending on older versions of Atlas (Atlas#initializeScanner). Please review your plugin or ask the author of your plugin using Atlas to ensure that provisions have been made to be compatible with this version of Atlas.

- Added method TinyProtocolHandler#getProtocolVersion(Player).
- Added reflection method MinecraftReflection#getProtocolVersion(Player).
- Added reflection method CraftReflection#getVanillaPlayer.
- Added a whole bunch of cached class wrappers in CraftReflection and MinecraftReflection.
- Added new asynchronous save entity map (Atlas#entities) for use with packets and literally anything else.
- Added new Configuration API (to be improved on later).
----------, Oct 30, 2019

Changelog
- Added ForgeAPI functionality.
- Added Bungee API.
- Fixed bugs with BlockBox#getCollidingBlocks that occurred with specific blocks including water. This was found only in 1.9-1.12.2 versions of Minecraft.
- Changed MinecraftReflection#toAABB's return type to a variable return type.
- Added new WrappedClass#getMethods and WrappedClass#getFields methods.
- Added WrappedField#getModifiers and WrappedMethod#getModifiers to simplify getting the modifiers of a method or field.
- Got rid of the casting of AxisAlignedBB in BlockBox classes because of the variable return type done in MinecraftReflection#toAABB
- Added new ConfigUtils.
- Fixed bugs in ToggleableProfiler.
- Added new ProjectCarbon version 1.2.1.
- Fixed BlockBox#getCollidingBoxes method in versions 1.13+
- Added new MinecraftReflection and CraftReflection classes to slowly replace the ReflectionsUtil class.
- Added MinecraftReflection#getBlockBox method. Needs finishing for 1.13+ compatibility.
- Improved performance of BaseBlockPosition object.
- Changed methods in BlockUtils for compatibility with later versions like 1.13+.
- Removed redundant BlockUtils#isEdible is Bukkit's Material#isEdible works just fine for its purposes and will always be cross-version compatible (because it's Bukkit).
- Added some notes in the code for MinecraftReflection to better explain some things for newbies.
- Added MathUtils#getAngleDelta for getting distances between float angles.
- Added BoundingBox#calculateXOffset, BoundingBox#calculateYOffset, and BoundingBox#calculateZOffset methods.
- Added ability to easily unregister commands with new Atlas.getInstance().getCommandManager()#unregisterCommand method.
- Added new MessageConfig object for implementing config files detected to message configuration.
- Fixed inaccuracy in MathUtils#approxEquals but didn't change the parameters this time
- Added new MathUtils#getDelta(int, int) method.
----------, Oct 21, 2019

Changelog
- Fixed memory issues.
- Fixed ArraysOutOfBoundsException error.
----------, Aug 31, 2019

Changelog
- Fixes ConcurrentModificationError with the profiling system.
- Fixes random "Disconnected" bug.
- Fixes inaccuracy MathUtils#approxEquals.
- Fixes bug in 1.13+ that prevents Atlas from loading.
- Fixes NPE with WrappedClass#getConstrcutor().

----------, Aug 30, 2019

Changelog
- Added EvictingList, ConcurrentEvictingList, EvictingSet, and ConcurrentEvictingSet.
- Added FilteredList, ConcurrentFilteredList, FilteredSet, and ConcurrentFilteredSet.
- Added Interval.
- Fixed error in 1.7.10 with BaseBlockPosition.
----------, Aug 24, 2019

Fixes error in 1.8+ versions inside of the BaseBlockPosition class (I made a typo).
----------, Aug 19, 2019

Changelog
- Added new EvictingList object (By @DeprecatedLuke)
- Added an index-based method and field getter to WrappedClass.
- Added the ability to send WrappedOutAbilitiesPacket packets.
- Added the ability to send WrappedOutBlockChange packets.
- Added the ability to send WrappedOutPositionPacket packets.
- Added the ability to send WrappedOutTabComplete packets.
- Added WrappedOutRespawnPacket wrapper for PacketPlayOutRespawn.
- Added the ability to get vanilla objects of BaseBlockPosition and BlockPosition using the BaseBlockPosition Atlas wrapper.
- Added WrappedEnumDifficulty object.
- Added WrappedEnumTeleportFlag object.
- Added new RunUtils class to improve efficiency using BukkitRunnables.
- Updated WrappedInTabComplete wrapper to work on 1.7.-1.14.
- Fixed BlockBox#getCollidingBoxes error in 1.14+.
- Fixed display bug with the CommandManager#runHelpMessage command arguments.
- Fixed bug with Profiling system that made it use an unnecessary amount of RAM. This could cause problems on servers with improper startup parameters, causing the Java Garbage Collector to act all wonky.
- Fixed other minor bugs and improved performance.
- Removed old event system in favor of the new event system.
- Removed old database system in favor of ProjectCarbon.
----------, Aug 18, 2019

If your server isn't running a spigot with a Minecraft 1.7.10 base, then there is no need to update to this version.
----------, Aug 7, 2019

Changelog
- Improved the performance and the concurrent ordering of the packet system.
- Added new WrappedOutTabComplete wrapper.
- Fixed potential errors in BlockBox.
- Implemented a feature where you can make your own hardcoded command with SpigotCommand.
- Added no CommandManager#getMap to get an already grabbed SimpleCommandMap class for use.
----------, Aug 3, 2019

Changelog
- Improves performance of BlockBox methods.
- Fixes errors in versions 1.12 and later with the BlockBox#getCollidingBlocks method.
- Fixed other minor bugs.
----------, Aug 3, 2019

Note: I have to use an external download link because the file is too large for Spigot at this point due to libraries being added.

Changelog
- Fixed potential NPE inside of BlockBox 1.8-1.9 versions.
- Fixed NPE when resetting profilers caused by concurrency issues.
- Updated ProjectCarbon utility to 1.1.4, which includes bug fixes for MySQL and some Mongo bugs. This also kind of doubled the size of the JAR but this shouldn't affect performance.
- Optimized all BlockBox#getCollidingBoxes by up to 4x (depends on the CPU). (Before: https://pastebin.com/A5WJPqdu) (After: https://pastebin.com/5TmXZ0fi).
- Added new MathUtils#normalizeAngle methods.
- Added new PackePlayInChat wrapper, WrappedInChatPacket.
- Made constructors of WrappedMethod and WrappedField public.
- Changed the priority of the ChannelInjector PlayerJoinEvent event.
- Fixing the protocol version checker for player functionality (not done yet).
- Implemented new more accurate TICK timings method. This checks how much per tick is getting called.
----------, Jul 30, 2019

- Fixes bug with PacketSendEvent.
- Improves performance of several utilities.
----------, Jul 25, 2019

I reverted the old packet system because of a flaw with some plugins that causes players to crash. This will be tested further and fixed before it is reintroduced.
----------, Jul 23, 2019

I got rid of TinyProtocol in favor of a more hands on method that I made myself, with the knowledge spoon-feeding from @DeprecatedLuke, which directly replaces the PlayerConnection in the EntityPlayer class with a version of it that hoppers everything into our Packet API.

WARNING: This may affect PaperSpigot users from 1.7.10-1.11.2.
----------, Jul 22, 2019

So I narrowed down the total drag in performance to BlockBoxes. If you don't really use this utility, then chances are you never found lag to be an issue.
----------, Jul 21, 2019

Changelog
- Change the MathUtils#getDelta method in all forms to be more accurate and slightly lighter.
- Added new WrappedOutHeldItemSlot wrapper for PacketPlayOutHeldItemSlot.
- Added Packet.Server.HELD_ITEM to the Packet class inside Packet and NMSObject.
- Fixed error on shutdown.
- New JSON utils for Atlas and AtlasBungee.
- Implemented the BungeePlayer system.
- New Configuration API (sort of ripped bunch bungee but unfinished).
- Improved performance.
- Brought back cancelling functionality of the event system.
- Fixed lag issue in 1.7.10 with TinyProtocol, caused by a large amount of players joining the server all at once.
- Fixed a bug with Atlas#getSchedular that caused it to not initialize on startup.
- Fixed an NPE for 1.8.8 servers inside the BlockBox#isUsingItem method.
- Cleaned up code.
- Fixed a bug with the event system that would cause a server to crash from lag at 60 players in the use of anticheats.
- Removed many of the streams() and parrallelStreams() since they were found to be more detrimental to performance than just using a for() loop.
- Added new ReflectionsUtil.getMinecraftServer() method to grab the vanilla MinecraftServer object.
- Fixed other minor bugs.

NOTE: If you want to view older versions (since this changelog is a mix of those updates in between), view them on GitHub.
----------, Jul 19, 2019

Fixes a bug with replacing the legacy Packet.Client.Legacy_{Insert stuff here}
----------, Jun 17, 2019

Changelog
* Added ProjectCarbon to Atlas.
* Added other small utils.
* Added new ChannelInjector and other classes for listening to packets (unregistered and unfinished).
* Restructured the project to be much more organized.
* Fixed a bug that caused annotation commands to not load in when reloading a plugin.
* Removed specific plugin registering in the CommandManager.
* Fixed bug with 1.12 that caused NPE errors with the BlockBox class.
* Fixed bug with WrappedOutPositionPacket erroring and not giving the proper teleportation location (returns as all vector points: x, y, and z, as 0).
* Improved performance.
* Fixed other minor bugs.
----------, Jun 17, 2019

Changelog
- Fixes bugs with ASM in 1.13. 1.13 implemented a new version of ASM which interferes with Atlas.
- Fixes bug with BlockUtils#getBlock method that caused it to error in console when it could not get the block in time.
- Added proper cancelling functions to the event system.
- Fixed a bug preventing Atlas from starting on 1.14.
- Fixed a bug that caused annotation commands to not load when reloading the server or a specific Atlas depending plugin.
- Fixed other minor bugs.
----------, Jun 14, 2019

What's New?
  • A completely new event system.
  • Major performance improvements.
  • Bug fixes.
  • More stable packet system.
  • And more.

It is important that all plugins update to this version because of the many fixes and improvements to the new API. This plugin is backwards compatible with old event systems, and they can still be used. However, they have been set as deprecated.
----------, May 1, 2019

Resource Information
Author:
----------
Total Downloads: 13,771
First Release: Apr 25, 2019
Last Update: Sep 22, 2022
Category: ---------------
All-Time Rating:
18 ratings
Find more info at github.com...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings