Commit Graph

133 Commits

Author SHA1 Message Date
e5a3f9206d Implements the group swap command 2023-03-31 18:43:01 +02:00
dfdf04a0ee Implements the group list command 2023-03-31 17:35:25 +02:00
888b20bb93 Implements the group set command 2023-03-30 21:07:46 +02:00
c29fcdc166 Adds skeleton classes for the three group commands 2023-03-30 20:24:47 +02:00
f9008ca050 Implements #13 and #14
Removes deaths and time as separate game-modes, and instead always tracks records.
Adds two proper game-modes. One inverts the player's controls, and the other randomly inverts the player's controls every 7 seconds.
Saves cleared status and records for each game-mode separately
Only allows 0-1 for the horizontal velocity
Requires arenas in arena groups to be cleared in sequence on all game-modes, not just the default one.
2023-03-30 14:59:44 +02:00
572bb980c1 Changes the default vertical velocity to 3.92 2023-03-30 12:57:29 +02:00
c01e1c3509 Finishes the edit command #9 2023-03-29 18:15:31 +02:00
ca5b0fcbca Makes it possible to get the current value from /dedit
Finally gets rid of the redundancy when checking if a record has been beaten
Adds tab-completions for arenas and properties to the edit command
Adds an ArenaEditableProperty enum to keep track of editable arena properties
2023-03-29 11:37:26 +02:00
34989e6673 Removes some TODOs 2023-03-29 02:19:40 +02:00
45bdb3f2a6 Removes usage of SerializableUUID outside of serialization 2023-03-29 02:07:00 +02:00
21425f73a1 Performs a lot of changes. Mostly implements #3
Properly and persistently stores which players have beaten which arenas
Adds a hopefully fully functional DropperArenaGroup class
Stores arena groups in the arena handler
Adds a lookup map to improve performance of getting arena by name
Adds saving and loading of groups
Adds all necessary checks for whether players have beaten the required dropper arenas before joining
Removes stage from arenas
Adds a test to make sure changing the order of arenas in a group works as intended
2023-03-29 00:55:19 +02:00
51237cb11a Fixes #6 by re-applying the arena state
Additionally, as a feature of fixing #6, the hit-detection has been made more accurate.
Also, all non-solid blocks are now triggered when they are passed through, rather than when hit.
2023-03-28 16:59:50 +02:00
3626d997b8 Implements #2 and #4
Adds a unique identifier to arenas
Stores frequently updated arena data separately from arena settings
Stores arenas keyed by their id
Prepares for storage of which players have beaten an arena
2023-03-27 21:43:16 +02:00
9a7d3ca360 Implements #5 and stuff
Uses a player entry state to store and restore a player's state such as game-mode and fly-mode.
Removes the restriction of fly mode and game-mode, and sets all arena players to adventure mode.
Force-quits all sessions when exiting the plugin.
Prevents usage of any commands other than the leave command when playing in an arena.
2023-03-27 14:23:55 +02:00
9a56f58f2f Adds a reload command 2023-03-26 17:56:49 +02:00
592f53ec9e Implements persistent storage of records 2023-03-26 17:42:55 +02:00
49eb0ac82c Adds some missing command argument checks 2023-03-26 15:52:54 +02:00
0c58860026 Adds a lot of small improvements
Makes the type of block players have to hit to win configurable
Separates the velocity option into vertical and horizontal velocities
Reduces some redundancy when getting an arena from an arena name
Partially implements the list command
Tries to improve the handling of players exiting in the middle of a session
Adds missing comments to ArenaStorageKey
2023-03-25 23:18:03 +01:00
6385b4c5e8 Implements the remove command 2023-03-25 12:35:15 +01:00
14572de102 Improves collision detection
This change majorly improves the hit-detection for blocks hit by a player while dropping.
2023-03-25 12:14:25 +01:00
fba75d2c3f Abuses flight mode for better in-air control 2023-03-24 16:22:52 +01:00
eb67705300 Fixes various smaller issues
Fixes players immediately being thrown out because the spawn teleportation triggered the PlayerLeaveListener
Reduces default velocity from the insane terminal velocity to just 1
Uses UUID instead of player object when storing dropper arena sessions
Prevents players from joining an arena if in creative, spectator mode, or is flying
Implements the leave command to allow leaving the arena
Only counts fall damage as a loss, but still prevents all damage in the arena
Prevents players from dying of fall damage when exiting the dropper arena
Prevents loadArenas from returning null
2023-03-24 13:15:56 +01:00
b840a3f500 Mostly implements the join and create commands 2023-03-24 11:43:33 +01:00
52de9e5161 Implements the join command 2023-03-24 11:23:56 +01:00
a9e14497d8 Adds LICENSE and improves README 2023-03-24 02:33:42 +01:00
906543f017 Prepares for command implementation
Removes some finished TODOs
Registers all listeners
Registers all commands
Adds more descriptive TODO comments to each command
Removes unintended double storage of dropper arena sessions in DropperArenaHandler
2023-03-24 02:03:18 +01:00
ee8f232b0b Adds code for winning and losing
Adds methods for triggering a win, a loss and a quit
Calls the win, lose and quit methods as necessay in the listeners
Makes DropperArenaHandler store arena sessions and cleared stages
2023-03-23 23:13:56 +01:00
62450e8764 Adds various necessary code
Moves code for keeping track of players to DropperArenaPlayerRegistry
Adds a DropperArenaRecordsRegistry for keeping track of records
Stores playing players as DropperArenaSession to be able to store more metadata
Adds an enum for different arena game-modes
Adds a record result enum for defining which kind of record a player achieved (personal or global)
Adds a helper-class for teleporting a player to and from arenas
2023-03-23 13:00:05 +01:00
724de147fd Adds Annotations dependency 2023-03-22 16:47:56 +01:00
730ef3fa13 Expands DropperArenaHandler
Adds storage of currently playing players to DropperArenaHandler
Adds methods for getting, adding and removing arenas to DropperArenaHandler
Adds more annotations in some places
2023-03-22 11:39:25 +01:00
bcde657fdd Adds code for saving and loading arenas 2023-03-22 10:23:04 +01:00
0a8669263a Adds a lot of empty classes with todos
Adds commands and permissions to plugin.yml
Uses the Spigot API instead of the Paper API
Reduces the Java version to 16, just in case.
Adds a lot of empty classes to show the intended plugin structure.
2023-03-22 00:52:50 +01:00
e1bff97f12 Initial commit 2023-03-21 22:30:59 +01:00