- Renamed :packageWindows to :packageNsis
- ImageMagick now required for :packageNsis
- Packaging output is now in build/packages
- Rewrote build script
- Packaging logic and LWJGL dependencies now in separate files
- Packaging logic now implemented with Gradle, not Bash scripts
- Cross-platform?
- Added :packageZip
- Universal ZIP with start scripts
- Changed version detection logic
- Tags of ancestor commits are now considered
- Only tags with format vMAJOR.MINOR.PATCH[-SUFFIX] are considered
- If the tag's commit isn't HEAD, PATCH is incremented
- When version detection fails, dummy version is 999.0.0-<buildID or date>
- LWJGL target platforms can be overridden with forceTargets project property
- Added window icons for various sizes
- Broken on Wayland
- Due to a bug in texture loading, textures a flipped
- Included non-flipped versions
- Added TextureSettings.allocateExactBuffer
- When true, texture size is not rounded to a power of 2
Summary of changes:
- Refactored input handling
- Added noclip/freecam mode for debugging
- Added drag events
- Removed useless info from debug layer
- Movement controls now work in menus (feature? bug? not sure)
- Moved everything related to controls into controls package
- Moved controls related to placing/breaking stuff into
InteractionControls
- Localizer now provides access to the list of languages
- Fixed a random bug in TestMusicPlayer because why not amirite
- Refactored camera controls into a separate class
- Added noclip mode
- Toggle with V
- Simply uncouples camera from character; does not change interactions
or load chunks!
- Implemented sloppily, expect bugs in the future
- EntityData's .equals() is now equivalent to == and .hashCode() hashes
entity ID only
- Collision can now be disabled for an object by setting its
CollisionModel to null
- Renamed from LayerTestGUI to LayerDebug
- Many of the displays have been removed
- Fullscreen and VSync displays have been merged with FPS display
- Updates are automatic
- Movement control code is now in its own class
- Movement direction controls are now more bug-resistant
- No longer event-driven; uses InputTracker instead
- Temporarily? function with menus open
- Other movement controls are now registered local Controls
- Removed flying and sprinting indicators from F3 layer
- TestPlayerControls is now a singleton
- resetInstance() now resets the instance's fields
- Merged Input functionality into InputEvent; removed Input
- InputEvents can now be consumed directly
- Removed Input.Target; functionality moved into InputBus
- Refactored GUI input event handling
- Optimized and reduced recursion by unrolling recursion
- All input events are now delivered to all components
- Filtering occurs at listener level
- Refactored InputBus
- Listeners may override former Input.Target logic
- Improved registration method
- Added exception handling
- Improved KeyMatcher
- Removed builder in favour of copying with modifications
- Added String parsing
- Added KeyMatcher.matchesIgnoringAction()
- Added integration with InputBus
- Renamed Component.{add,remove}Listener methods about InputListeners to
Component.{add,remove}InputListener to avoid confusion
- Added ShapePrototype wrapper for ShapePart batch creation
- Added pine trees and hazel bushes
- Leaves with custom block models
- Improved tree generator
- Added Clover, Daisy, Dandelion, Geranium, Knapweed, Yellow Pea,
Bluegrass
- Renamed grass herbs and flat flowers
- Cross tile renderer now uses a kostyl that forces face normals to be
oriented vertically
- Refactored flower generation
- Added a coherent error message when a texture could not be found
-All files now start with a 16 byte header consisting of "PROG" followed
by the integer position of the region in region coordinates.
-regionCoords is passed through some functions to allow for this to be
confirmed.
-Now offset technically starts at 1, so any chunks with offset 0 are
ignored.
-Reduced number of unused chunks, storage efficiency is at about 99% (if
null sectors are counted as useful)
Note: it still does waste a lot of space, I will work on that next
-Added back the confirmHeaderHealth logic
-Checks to make sure it will not overwrite important chunks
-Uses PartitionLink chunks to move to a different part of the file
-Added allocateEmptySector() to allow for the file size to be increased
without moving the origin point of the chunk.
-Moved most of the file accessing of Region to RegionFile
-Disabled most of the header check except the length check(it will be
back soon)
-Max chunk size arbitrarily raised to 4MiB because I wanted sectors
longer than 16B
-Sectors now have a mandatory 1B header that identifies it
-0 is a null sector, it ends every chunk
-1 is a normal data sector, it has a "parity" byte that makes sure it
is reading chunks in linear order(fun fact: it isnt at the moment)
-2 is a jump to a different location. this isnt implemented well yet
-3 will be a "bulk data" sector. Multiple chunks with identical data
can point here. Probably only useful when it is easily identifiable,
like multiple chunks being one entire block, like air.
-Removed all chunk length references as I think they do not make sense
when it can use different sectors for non-data purposes.
-Safer saving, it waits for the file to stop being used to close(still
has holes)
-If a chunk is too large, it is moved to the end of the file.
-Calculates the efficiency of each region file in confirmHeaderHealth
-Fixed import warning
- Refactored and formatted TestWorldDiskIO
- Removed HashableVec3i
- Added Coordinates methods for custom bit count
- Properly reverted commit 98250cd
- Known bugs:
- Server shutdown close()s regions too early
- Re-entering a world does not show saved changes
-Tried to use threads/executors in ChunkRequestDaemon, it just hangs.
-Added isEmpty and isOpaque attributes to DefaultChunkData (should this
just be in ChunkData?)
-Added compute and getter functions to access(for everything after
loading)
-Doesn't render empty chunks(not yet used)
-Using format 65537 allows the empty and opaqueness to be saved. They do
not do anything yet and there is no way to set them yet
-Added loadRegionX and ".progressia_chunkx" file
-removed formats 0 and 1, which use individual chunk files.