E.G. Blocks.PISTON_HEAD.defaultBlockState().withValue(FACING, Direction.SOUTH)
Some of the inspiration may be thanks to FerriteCore, at least with the shared property keys idea, so thank you to them.
* Remove ears and unoffical skin sources
* Remove supplyEars
* Cleanup and add SkinApplyEvent
* Add failed back to skin
* Accept suggestion on SkinGeometry
Co-authored-by: chris <github@onechris.mozmail.com>
* Add javadoc and update copyright
* Remove old config options
* Make SkinApplyEvent a ConnectionEvent
* Add warning about third-party config options
* Update warning message
* Add javadoc to event
* Fix javadoc
* Ajust for review and bump version to 2.2.4
* Get rid of array and preserve original skin data
* Add originalSkin method to event
* Handle NonNull in SessionSkinApplyEvent
* Revert default copyright change
---------
Co-authored-by: chris <github@onechris.mozmail.com>
Previously, for any new tag, we would have to add a field, add the line to load it, add the line to clear it, and make a method for that tag. Now, you just add an enum.
* Try to properly check if so_reuseport is available
* io_uring "support"
* comment out io_uring, for now
* Make IO_uring opt-in via `-DGeyser.io_uring=true` flag
* dont include io_uring
* oops - bungee
editing on mobile is hard
* oops - spigot
* oops - velocity
* properly exclude all io_uring on all platforms except standalone
---------
Co-authored-by: Kas-tle <26531652+Kas-tle@users.noreply.github.com>
The following caveats apply because selectively removing or modifying the score numbers on Bedrock cannot be done without removing all of them:
* "blank" and "styled" number formats are ignored for "list" and "sidebar" display slots
* The "fixed" number format is appended to the end of the "list" and "sidebar" entry names instead of replacing the score number
* The "below_name" slot has no limitations and displays identically to Java
* Reset metadata and attributes if needed when respawning
* Minor edits
* Reset attributes in JavaLoginTranslator
* Fix client bug when updating absorption and health in the same tick
* ported camotoy's attempt of implementing structure blocks, removal of a few TODO's
* no more parsing of java structure templates
* Don't attempt to re-request structure size
* ensure we can load structures in even if we know the size
* init: send correct structure size/offset/rotation to java, not fully working yet
* restore offsets so we are sending correct values to the java server regarding where we want the structure to be placed
* something something mirror
* attempt at proper offsets for mirroring AND rotations. this was not fun at all
* rotation, mirror, offsetting all seem to work
* undo import changes
* fix NPE
* Proper handling of empty structures, ensure that we can clear the structure block outline when a zero vector was sent for structure size
* oops
* Update core/src/main/java/org/geysermc/geyser/session/cache/StructureBlockCache.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/level/block/entity/StructureBlockBlockEntityTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockStructureBlockUpdateTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Update core/src/main/java/org/geysermc/geyser/translator/protocol/bedrock/BedrockStructureTemplateDataRequestTranslator.java
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* consolidate java structure sending into one method
* fix merge conflict
---------
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Fix (or workaround) armor items with custom armor trims having no texture on bedrock
* Fix armor items with custom trims causing issues on entity models by removing the Trim tag entirely
* Refer to minecraft namespace inline for consistency
* Add ConnectionRequestEvent and implement it
* Add debug message and use InetSocketAddress instead of string
* Provide both proxy and real client ip
And add some minor javadocs
* Make ProxyIp nullable
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Apply changes from pr
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Bump API version
* Dont JiJ common on mod platforms
---------
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
Co-authored-by: Kas-tle <26531652+Kas-tle@users.noreply.github.com>
* Allow adding custom items to the creative inventory in order for recipes outputting said custom items to work
* yeet includeInCreativeInventory as it would break existing nonvanilla extensions - and is pretty pointless anyways
* rename mappings to `creative_group` and `creative_category`
* delete outdated comment
* Fix lecterns on 1.20.60, start on virtual lecterns
* Fix: virtual books & actual books opening twice, resolve other issues, remove debug
* undo some unnecessary diff
* Don't try to send virtual books to pre 1.20.60 clients
* address review by camotoy
* Initial work on Forge platform
* Rework modded platforms to use a common module
* Add support for integrated worlds on modded platforms
* Fix classload errors and move mixins to shared module
* Fix Fabric mixins and check min height in mod world manager
* Add Forge command support
* Add back modrinth publishing
* Don't apply application plugin to shared mod sources
* Fix docs
* Delete unused class
* Clean up repositories
* - Update to 1.20.2
- set custom refmap name
- fixed console commands crashing the server (hasPermission now accepts CommandSourceStack instead of Player)
- Forge wants fastutil relocated, so be it
Current issues:
- ClassNotFound exceptions with classes that are clearly present
* - Fix ClassNotFound errors on Forge due to weird Classloader
- Dont relocate gson
* merge upstream
* oh no
* Bump lombok, architectury-loom
* init: neoforge 1.20.4 support
* NeoForge builds
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Archive neoforge artifacts
* transformForge -> transformNeoForge
* Neoforge boots!
* Fix mixins on neoforge
* Update build/pr file names
* Update mods.toml to new neoforge standard
* Fix refmap naming
* more fixes
- no need to include gson
- cleanup nullable/nonnull annotations
- add more info to geyser dumps on neoforge
* yeet platform executor
* yet another temp branch to figure out the runServer task
* yeet transitive dependency, that cant be right
* Attempt at getting the runServer task to work, part two
* Revert the changes for the runServer task, try and shut down the injector
* Remove spigot weird bug workaround, shut down properly
Also add a compileOnly dependency for the mod module to get rid of spammy false warnings
* Update to latest restart changes
- fix duplicate nodes crashing neoforge
- connector -> geyser in GeyserModCommandExecutor
- create command manager early to fix issues with permission gather event
* Consistent NeoForge spelling, move some dependencies to the version toml
* Add lombok to version catalogue
* Add plugins to version catalogue
* revert move to buildSrc
* Create `assets/geyser/icon.png` to reference icon from a single file on standalone/neoforge/fabric
* add fabric permissions api to libs.versions.toml
---------
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
Co-authored-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Implemented ViaProxy bootstrap
* Applied requested changes to code
* Override indra settings to Java 17
* Removed explicit java source/target version
* Added ViaProxy artifact to build.yml
* Added ViaProxy artifact to pullrequest.yml
* Updated ViaProxy API usage
* Implemented floodgate support for ViaProxy
* Depend on stable ViaProxy release
* Initialize command manager and ping passthrough before Geyser#start
* Revert "Initialize command manager and ping passthrough before Geyser#start"
This reverts commit 39356071c4.
* Some ping passthrough improvements
* Merged code properly
* Updated ViaProxy API usage
* Implemented better command handling
* Updated ViaProxy and Geyser API usage
* Combine bootstrap and plugin into one class
* Minor code improvements
* Call Geyser shutdown on plugin disable
* Only call disable if Geyser was enabled once
* Don't send two shutdown done messages
* Use setter for enabled boolean
* This makes `geyser reload` work the same across all platforms. For example, it ensures that we reload the config to the greatest extent possible (with the exception of compression/injection settings). Additionally, this clears up issues where Extensions were previously disabled during reloading - instead, the new Pre and Post reload events allow extensions to reload whatever necessary on their own.
* Use multiple channels at startup, fix the occasional issue of all players getting disconnected.
* Standardized shutdown periods and refactored network handlers for improved consistency.
* tiny fix
* Let's use the system property
---------
Co-authored-by: chris <github@onechris.mozmail.com>
* Allow changing the broadcasted port using a system property. This may be needed if the port Geyser runs on & the port Bedrock players connect on do not match - e.g. due to port forwarding/different routing.
* initial stab at making the broadcast port an (unsafe) config option
* Automatically set broadcast port to be the bind port unless manually overridden
* Warn about broadcast port mismatch
* Use 0 instead of -1 as indicator to broadcast the port geyser is running on
* Add fetching MC versions and Console from the extensions API
* Address reviews, expose custom MinecraftVersion interface
* Rename of McVersion -> MinecraftVersionImpl; proper nonnull annotation
* fluent consoleCommandSource(), change MinecraftVersion#name() to versionString()
* Javadocs adjustments
* Create impl package and move `MinecraftVersionImpl` there
* api version bump
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
Revert to spectator_viewer instead of the native Bedrock spectator menu. While it looks uglier - e.g. it's showing health/hunger bars; it allows opening menus. It'll also be needed for entity spectating, since clicking on things isnt possible in bedrocks spectator mode
* Gracefully handle invalid stone cutter recipes
Further various little fixes:
- bump source version in AP to 17 to silence build log spam
- remove unneeded close() on auto-closable resource
* Add support for loading locale overwrites. Any lang files in this new folder will be appended to the main lang file when loaded.
* A locale will no longer attempt to be downloaded and loaded if it already is loaded. Previously a lang file was reloaded everytime a player joins.
* Switch some io bits to nio
* formatting fixes
* Update core/src/main/java/org/geysermc/geyser/text/MinecraftLocale.java
* Rename isLocalLoaded to isLocaleLoaded
* Rename overwrites to overrides
* Catch separate exceptions when parsing locale file. Similar to previous implementation
* Add //no-op to try/catch
* Apply suggestions to fix issues that might arise with the Norwegian locale
* Properly resolve override locale path for nb_no
* Yeet temporary fix - addresses @Camotoy's review
* Catch IOException properly
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
- Port out of bounds checking
- Proper encoding of ip's to check
- Don't assume "cache" response is nonnull; it is null when there's an error
- Send users the error message that we get when server is unreachable
* Catch unknownhostexception to avoid network errors when using legacy ping passthrough
* Catch UnknownHostException separately, log a warning but no stacktrace
* Fix collision problem,the wide for bedrock is 0.5 but for java is 0.5625 when only one side connect.
* Fixed an issue where the collision box was abnormal at the corner when two sides of the glass panel were connected.
* Merge similar methods, adjust code.
* More lenient judgment; reduce redundant code to avoid repeated calls.
* Update config.yml
I will in no way be offended if this is not merged. Essentially, it makes Geyser slightly more configured at the start for plugin versions by forwarding more information about the server to Bedrock players.
* remove unused
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
* Added onlineMode, platformName, and Minecraft version to dump - renames platformVersion to loaderVersion since that is more fitting to modded structure
* rename loaderVersion back to platformVersion
* address review by @Konicai
* Fix geyser dump creation (regression from the syntax/annotation PR)
We only need to use recipe tags when there is more than one possible ingredient option. For example, before this, we applied a logs item tag to the planks recipe, which caused an issue with plank type suggestions. (#4321)
* Clear mob spawners if the Java server so requests
* Empty spawners by replacing the spawner block with a new one instead of adding an invalid identifier to them.
Unfortunately, sending one UpdateBlockPacket that replaces the spawner does not work, we need to set the spawner to air first. Cool. But at least we don't summon particles for all empty spawners now
* store position vector (address review by @konicai)
* remove empty line
* Ensure that a custom text display entity name doesn't show up - it doesn't show on Java, and if we show it, the text display contents aren't shown.
* Update core/src/main/java/org/geysermc/geyser/entity/type/TextDisplayEntity.java
Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>
---------
Co-authored-by: Konicai <71294714+Konicai@users.noreply.github.com>
* Start on 1.20.50
* Add 1.20.50 block_palette.1_20_50.nbt, creative_items.1_20_50.json and runtime_item_states.1_20_50.json
* fix stone and planks mappings
* add and do something with the new SetPlayerInventoryOptionsPacket
* Add readme version bump
* Cleanup/Explain the new BedrockSetPlayerInventoryOptionsTranslator
* Start on 1.20.10+ recipe unlocking system
* Keeping track of multiple Bedrock recipes to unlock for a single Java recipe
* Unlock stonecutter recipes
* Stonecutter recipes
* Unlock tipped arrows/shulker box recipes even when Java doesnt (why..?), and dont send trims if Java doesn't
* Translate FurnaceDataRecipes
* Revert FurnaceRecipe translation, revert stone cutter recipe identifier caching - Bedrock does not need the smelting recipe, and doesn't (un)lock stonecutter recipes (yet...?)
* Remove debug message
* Make decorated pot crafting just a little bit smoother :p
* formatting
* Use itemTag descriptors to fix https://github.com/GeyserMC/Geyser/issues/3784
* Use hashmap instead to store item tag overrides
* remove unnecessary comment
* Address review by @Konicai
* Support for 1.20.30
* undo add whitespace
* Merge upstream, use FastUtil maps, rename a few methods
* Address Camotoy's review
* Fix formatting
* Start on custom molang tags with custom items
* geyser_custom instead of geyser item tag
* Address reviews, add custom namespace ("geyser_custom") to tags
* use isBlank() instead of isEmpty()
* More efficient item tag setting
Co-authored-by: Konicai <71294714+konicai@users.noreply.github.com>
* tags instead of temp
* Merge in master, adapt to changes in the MappingsReader, delete unused ToolBreakSpeedsUtils class
* oops
* clean diff
* Change namespace from `geyser_custom` to just `geyser`
* Don't force a namespace at all; just like blocks don't
* Tags for items are now, as blocks, NonNull. Additionally, calling the .tags() builder multiple times will not add both sets of tags, but replace the existing tag set
* Remove @NotNull usage in favor of @NonNull
* Allow setting null for tags, but ensure that .tags() is always non-null
* Fix nullable annotation on tags method in the builder interface
* This ensures bossbars are cleared on server switch. Additionally, this clears the EntityCache - which should resolve issues around air supply/hearts persisting visually.
* - Also reset attributes on server switch, aswell as air
* Tell the server we loaded the resource pack
* Decline resource packs if they are not required
---------
Co-authored-by: onebeastchris <github@onechris.mozmail.com>
- the extensionmanagers `extension` method now takes in a extension id instead of name
- extension folders are now created using extension id's
- Extensions can load classes from other extensions now
- Added warning about external class loading
- Wherever applicable: store extensions internally by id instead of name
* Initial pass for 1.20.2, compiling
* Remove unused level events
* handle null GameProfile in ClientboundPlayerInfoUpdatePacket
* Handle level events BRUSH_BLOCK_COMPLETE and EGG_CRACK
* Account for null tag in DecoratedPotBlockEntityTranslator
* Explicitly show that 1.20.31 is supported
* Set BlockMapping.AIR, id is always 0, but this also ensures that the palette always has air
* Rename BlockMapping.AIR to DEFAULT, as it does not have to represent AIR, and statically set it
* init: spectator mode support
* properly set second abilitylayer for spectator mode
* Fixes https://github.com/GeyserMC/Geyser/issues/3318 by not sending changed flags in spectator mode
* Fix duplicate permission registration
* Register /<extensionid> help (and aliased ?) commands under the "geyser.command.exthelp.id" permission
* Fix: Show correct header for /geyser help vs /<extensionid> help
* Super cursed custom skulls custom block
* Rename some stuff
* Attempt to clean up some code
* Remove skull translation events and define custom blocks for custom skulls
Clean up skull block translation a bit
* Auto generate skull resource pack
Change `davchoo` to `geyser` in geometry
* Add config options for custom blocks and custom skull blocks
* Fix formatting and names for player skulls
* Use block states more efficiently for custom skulls
21 block states vs 48 block states
* Clean up custom block api a bit
* Apply some suggestions from Camotoy
* Move custom skull config stuff to its own file
Custom skulls can now be added by username, uuid, and textures
Move skull nbt stuff from requestTexturesFromUsername to
SkullBlockEntityTranslator
Add requestTexturesFromUUID
* Update custom block nbt for v534
* Disable collision box & selection box when box is empty
Fix incorrect collision names used in CustomBlockComponentsBuilder
* Add custom block stuff to provider registry loader
* More API changes
Convert CustomBlockPermutation into a record
Change materialInstances in CustomBlockComponents Builder to
materialInstance
Reuse box components in CustomSkull
* Convert skull floor geometries into a template
Should be easier to modify in needed in the future.
* Crop and reorder skull textures to eliminate unused space
Should reduce memory & storage usage for Bedrock clients
* Revert "Crop and reorder skull textures to eliminate unused space"
This reverts commit 15fd5353e1.
* Use identifier from CustomBlockData in SkullResourcePackManager
* Fix isIncorrectHeldItem check for custom skull blocks
Add defaultBlockState to CustomBlockData
* Fix adding duplicate block states for custom blocks with 0 properties
Remove defaultBlockState CustomBlockState field from
GeyserCustomBlockData since it creates a circular reference
* Add basis for overriding Bedrock block states
Fix missing providers when used in GeyserDefineCustomBlocksEvent
* Fix custom blocks in 1.19.50
* Decouple mappings from items
* Decouple mappings from items
* Null check
* Move to CustomBlockRegistryPopulator
* Remove name_hash from blocksTag/vanillaBlockStates
Fixes creative inventory contents with custom blocks registered
* Limit Bedrock versions to 1.19.40+
Custom blocks were released in 1.19.40
* Un-revert Crop and reorder skull textures to eliminate unused space
Should reduce memory & storage usage for Bedrock clients
Bug with top face flipping + per-face uv's was fixed in 1.19.40+
https://bugs.mojang.com/browse/MCPE-160073
Geometry is still offset by 0.5 to prevent lighting bugs
* Add validation custom block components and s/lightFilter/lightDampening/
Also validate custom block names
* Add display name component and add toggle for client block placing
The display name component allows blocks to use other locale keys.
placeAir will prevent the client from placing the default block state.
* Begin parsing block mappings (still much to do!)
* CustomBlockMapping stores block w/ all states
* Mappings almost :/
* Ok now they work at least
* Read most mapping components
* Block mappings mostly done
* Translate block item
* Add docs for custom blocks
* Add tags
* More docs
* Accidentally added name comp.
* Fix collide box and warn for >16 props
* add registerBlockItemOverride event + refactor
* Inventory overrides for multistate bedrock blocks
* Implement all remaining block components
* Minor cleanup and javadocs
* Update custom skull config example
* Address @Camotoy's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix light_emission and light_dampening components
* Remove redundant populate method and remove BLOCKS_JSON after last use
* Fix inventories with block state overrides not opening
* API event for skull blocks & let register via URL
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Use skin hash instead of URL
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @davchoo's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Rework MappingsReader_v1 to avoid passing maps around
* Treat all properties as string properties
There isn't a real need to check for boolean and int properties
* Fix block registry scan in MappingsReader
* Skin hashes can have less than 64 characters?
* Include entry when logging exceptions from block mappings
* Submodule
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix block break speeds thanks to @Camotoy
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Temporarily fix build on eclipse so I may work...
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Custom tool breakspeed by server; Closes#3348
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Account for if custom skulls are added on 1st run
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Initial framework for extended collision boxes
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Add some notes for the extended collision box impl
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* We have our extended collision registry
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Notes for me
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Extended collision boxes almost work
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Extended collision boxes actually work
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Consider all hitboxes in calculation
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* X is mirrored...
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Extended collision boxes are much improved
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Upstream fallout
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @Redned235's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Oops my bad that makes no sense :)
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Ext collision box chunk translation optimization
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Trunc skinhash to 32 chars due to 80 char limit
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Use new transformation cmpnt vs legacy rotation
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* keep arr null on get extcolstor
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Properly handle if extended collision box is below
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Less ugly (realized it can go here)
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Prevent 2x placement due to extended collision box
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Properly build on eclipse via indra
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Ensure enough bits in bedrockData for paletteIDs
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix not needed whitespace
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Update license headers to 2023
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Use release indra over snapshot
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Revert "Update license headers to 2023"
This reverts commit f750059e8e.
* Account for collisions in chunk section y0 layer
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix extended collision @ air section bottom
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @davchoo's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @rtm516's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* More @rtm516's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @Camotoy's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Update javadocs
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @davchoo's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Lock extended collision to section
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Clear ext col even when air
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Let override vanilla items in creative inventory
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Avoid creating 12 HashSets for every overrided block state
* Super minor nitpicks + Custom Skull NBT fix
* Check custom skull is within Bedrock bounds
Fixes NPE with custom skulls above y=320 or below y=-64
* Add static builder methods to match CustomItemData API
* Upstream
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Initial API setup for modded blocks (no impl yet)
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* More work on nonvanilla blocks (nonfunctional)
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix compile
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Update submodules
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Modded reg so far (not done)
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Add non-vanilla registration and fix a few bugs
* Fixes for non-vanilla blocks
* Remove import
* CustomRegPop. go1st for now; must split for modded
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address silent change to geo component for blocks
Co-Authored-By: Unoqwy <pm@unoqwy.dev>
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Seperate bedrock, vanilla, & nonvanilla block reg
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Single event
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Impl MaterialInstance as builder per @Redned235
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Added creative category enum & added some missing overrides (#7)
* Add material instance to provider registry
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* oops
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix case of correctBedrockIdentifier not found
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Fix docs
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address @Camotoy's review
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address review from @davchoo
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Set namespace of custom blocks vs ident direct
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Address review from @rtm516
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* One more
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Remove rogue space
* Geo component as builder
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* use super name
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
* Bump version
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
---------
Signed-off-by: Joshua Castle <26531652+Kas-tle@users.noreply.github.com>
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: davchoo <davchoo@users.noreply.github.com>
Co-authored-by: davchoo <4722249+davchoo@users.noreply.github.com>
Co-authored-by: Unoqwy <pm@unoqwy.dev>
Co-authored-by: RednedEpic <redned235@gmail.com>
Co-authored-by: ImDaBigBoss <67973871+ImDaBigBoss@users.noreply.github.com>
Co-authored-by: rtm516 <rtm516@users.noreply.github.com>
* Renames for clarity and refactor convertToJavaMessage
* Bump adventure, velociy. Require CharacterAndFormat in MessageTranslator
* Fix deprecations related to DummyLegacyHoverEventSerializer
* Patch serialization of ScoreComponent until Adventure 1.15.0
* Cache the (clientbound) Keep Alive timestamp and use that for forwarding ping
* Use a Queue of keep alive IDs to handle KeepAlive packets sent in succession
* Don't force NetworkStackLatencyTranslator on the session's event loop
* Send clientbound NetworkStackLatencyPacket immediately
* Avoid sending negative NetworkStackLatencyPackets that are not from the form-image-hack in FormCache
* Downsize timestamps that would lead to overflow on the client
* Show proxy protocol ip for debug message
* Make sure that first message that contains proxy protocol also gets sent. This caused issues with serverlists and console players
* Validate NBT tags of written_book like Java edition
* Update page count and character count limits
The maximum number of characters allowed in Java's book edit screen is
1024 for each page and 16 for the title. However, the packet itself has
a limit of 8192 * 3 bytes for each page and 128 * 3 bytes for the title.
* Fix writable book losing changes when signing
Bedrock sends a 3 action InventoryTransactionPacket after the player
changes a page. This causes Geyser to send a ServerboundEditBookPacket
with an outdated NBT. The Java responses with a
ClientboundContainerSetSlotPacket that overwrites any NBT Changes from
BedrockBookEditTranslator.
* Add a comment for the title length check
* Specify color in Component.translatable
When shift-clicking the result item in a crafting table while holding an item in your hand, items would bug out completely and cause weird inventory desyncs.
* Add missing entities to getMountedHeightOffset and getHeightOffset
* Fix mount offset on Camels for more than 1 passenger
* Fix mount offset for Shulkers on Bamboo boats and minecarts with stuff
Also fix mount offsets for minecart and boat passengers
* Combine
* More missing mount offsets
* Fix mount offsets for entities riding players
* Check for hide attributes flag, and "Name" -> "AttributeName"
* Operation tag is not required?
* Only process each modifier once
* Ignore `minecraft:` namespace if present
* No `Operation` is implicitly ADD, fix knockback_resistance check
* Add Attribute Modifiers Display
Allows Bedrock players to view the Attribute modifiers display on the bottom of items.
* Fix handling for Knockback Resistance
For some reason, Knockback Resistance is multiplied by 10 in the display for addition, so this handles that oddball.
* Add null check for NBT
* Remove "contains" check
This is checked in the beginning of the addAttributes method so is not required here.
* Add curly brackets
Camotoy likes curly brackets I guess
* Use ModifierOperation enum instead of int for clarity