0.10.7 (API 0.24.0)
For Minecraft: Bedrock Edition 1.21.50 (NetEase), 1.21.80 - 1.21.130
Added
- (API) Implemented dispenser and dropper:
- Added
DispenseBehaviorinterface for defining custom item dispense behaviors. - Added
DispenseResultclass for representing dispense operation results. - Added
BlockEntityDispenserandBlockEntityDropperinterfaces. - Added
BlockEntityDispenserBaseComponentinterface withtryDispense()method. - Added
BlockDispenseEventevent fired when a dispenser or dropper dispenses an item, allowing plugins to modify or cancel the behavior. - Added
Registries.DISPENSER_BEHAVIORSregistry for registering custom dispense behaviors. - Added
BlockEntityTypes.DISPENSERandBlockEntityTypes.DROPPERblock entity types. - Added
ContainerTypes.DISPENSERandContainerTypes.DROPPERcontainer types. - Added
ItemSpawnEggBaseComponentinterface withgetEntityType()method for spawn egg items. - Added
ShootParticleparticle for dispenser/dropper shoot effects. - Added sounds
SimpleSound.BLOCK_CLICKandSimpleSound.BLOCK_CLICK_FAIL. - Implemented dispense behaviors for: TNT, fireworks, flint and steel, glass bottle, water bottle, buckets (water, lava, powder snow, fish, axolotl, tadpole), spawn eggs, and projectiles (arrows, eggs, snowballs, tridents, experience bottles, splash/lingering potions).
- Added
- (API) Implemented composter:
- Added
ComposterEventevent fired when items are added to or harvested from a composter. - Added
Registries.COMPOSTABLE_ITEMSfor registering compostable items and their composting chances.
- Added
- (API) Implemented bell:
- Added
BlockEntityBellinterface for bell block entities. - Added
BellRingEventevent fired when a bell is rung by players, projectiles, or redstone. - Added
BlockEntityTypes.BELLblock entity type.
- Added
- (API) Implemented lectern:
- Added
BlockEntityLecterninterface with methods for managing stored books and current page. - Added
BlockLecternBaseComponentinterface with methods for book placement and removal. - Added
LecternPlaceBookEvent,LecternPageTurnEvent, andLecternDropBookEventevents. - Added
BlockEntityTypes.LECTERNblock entity type.
- Added
- (API) Implemented pointed dripstone:
- Added
PointedDripstoneDripEventevent fired when pointed dripstone drips fluid. - Added
PointedDripstoneDripSoundfor dripstone drip sounds. - Added
DamageType.STALACTITEandDamageType.STALAGMITEdamage types.
- Added
- (API) Added method
WorldViewer.playPointedDripstoneDripSound()for playing dripstone drip sounds. - (API) Added method
BlockFallableComponent.checkAndFall()for programmatically triggering block falling. - (API) Added
BlockRespawnPointComponentinterface for blocks that can serve as respawn points (bed, respawn anchor), withonPlayerRespawn()method to handle respawn logic and safe position finding. - (API) Added method
Block.getLocation()for creating aLocation3ifrom the block's position. - (API) Added
Explosion.sourceBlockTypefield for custom death messages when explosion is caused by specific blocks (e.g., bed, respawn anchor). - (API) Implemented decorated pot:
- Added
PotSherdsrecord class representing the four sherds on a decorated pot (front, back, left, right). - Added
BlockEntityDecoratedPotinterface with methods for item storage, sherd management, and comparator output. - Added
ItemDecoratedPotBaseComponentinterface with methods for managing sherds on decorated pot items. - Added
BlockEntityTypes.DECORATED_POTblock entity type. - Implemented decorated pot crafting recipe with sherds/bricks pattern support.
- Added
- (API) Implemented trident:
- Added
EntityThrownTridentBaseComponentinterface with methods for managing trident item, favored slot, loyalty/impaling/channeling enchantments, and returning state. - Added
EntityThrownTridententity interface. - Added
PlayerPickupTridentEventevent fired when a player picks up a trident, allowing plugins to cancel the pickup. - Added
PlayerToggleSpinAttackEventevent fired when a player starts or stops a spin attack (riptide). - Added methods
isSpinAttacking(),setSpinAttacking(), andcanUseRiptide()toEntityPlayerBaseComponent. - Added
TridentRiptideSoundrecord class for riptide sounds with level parameter. - Added sounds
SimpleSound.TRIDENT_THROW,TRIDENT_HIT,TRIDENT_HIT_GROUND,TRIDENT_RETURN, andTRIDENT_THUNDER. - Implemented trident dispense behavior for dispensers.
- Added
- (API) Implemented lightning bolt:
- Added
EntityLightningBoltBaseComponentinterface with methodsisEffect()andsetEffect()for controlling lightning effects. - Added
EntityLightningBoltentity interface. - Added
LightningStrikeEventevent fired when lightning strikes, with cause types (WEATHER, TRIDENT, COMMAND, CUSTOM). - Added methods
strikeLightning()toDimensioninterface for spawning lightning at a position. - Added
DamageContainer.lightning()factory method for lightning damage.
- Added
- (API) Implemented fireball entities:
- Added
EntityFireballBaseComponentinterface withgetExplosionPower()andsetExplosionPower()methods for large fireballs. - Added
EntitySmallFireballandEntityFireballentity interfaces. - Implemented fire charge dispense behavior for dispensers.
- Added
- (API) Implemented egg projectile:
- Added
EntityEggentity interface. - Implemented egg throwing mechanics with chicken spawning chance.
- Added
- (API) Added
afterApplyMotion()method toEntityPhysicsComponentinterface, called sequentially after parallel motion processing completes, allowing safe modification of shared world state. - Added dimension-level light calculation toggle:
- (API) Added new
WorldPool.loadWorld()overload with light calculation parameters for programmatic world creation. - Added
enable-light-calculationconfig option inworld-settings.ymlfor each dimension. - When disabled, all light queries return max value (15), improving performance for dimensions where lighting is not important.
- (API) Added new
- (API) Implemented fishing:
- Added
EntityFishingHookBaseComponentinterface with fishing state management (FLYING,WAITING,ATTRACTING,CAUGHT), hooked entity handling, andreelLine()method. - Added
PlayerFishEventevent fired when a player catches something while fishing, allowing plugins to modify caught items, experience, hooked entities, and motion. - Added
FishingLootinterface for defining custom fishing loot entries. - Added
FishingLootCategoryenum (FISH, TREASURE, JUNK) with Bedrock Edition base chances. - Added
FishingLootTableutility class for selecting fishing loot based on Luck of the Sea and Lure enchantments with Bedrock Edition mechanics. - Added
Registries.FISHING_LOOTSregistry for registering custom fishing loot. - Added
EntityPlayer.getFishingHook(),setFishingHook(), andisFishing()methods for managing the player's active fishing hook. - Added
EnchantmentType.isFishable()method for checking if an enchantment can be obtained from fishing (excludes Soul Speed, Swift Sneak, and Wind Burst). - Added
SimpleEntityAction.FISHING_HOOK_BITEfor displaying the fish bite animation with bubble and splash effects. - Added
SimpleParticle.WATER_WAKEfor fish attraction effects andSimpleParticle.BUBBLEfor fish bite effects.
- Added
Changed
- (API) Refactored flight permission system for game mode specific control:
- Replaced single
ability.flypermission with game mode specific permissions:ability.fly.survival,ability.fly.creative,ability.fly.adventure. - Spectator mode always allows flight (hardcoded behavior).
- Creative mode allows flight by default (unless explicitly denied with
ability.fly.creative=FALSE). - Survival and Adventure modes deny flight by default (require explicit
ability.fly.survival=TRUEorability.fly.adventure=TRUE). - Added
canFly()method toEntityPlayerBaseComponentfor unified flight permission checking. - OP players now follow the same default flight behavior as regular players.
- Replaced single
- (API) Changed
EntityFallEventandProjectileHitEventcaller thread annotation fromCOMPUTEtoDIMENSION, as these events are now fired sequentially in the dimension thread. - (API) Refactored knockback system for better extensibility:
- Added knockback-related fields to
DamageContainer:knockback,knockbackVertical,knockbackAdditional,knockbackSource, andignoreKnockbackResistance. - Knockback values are now calculated before
EntityDamageEventis fired, allowing event listeners to modify knockback parameters. - Renamed
EntityPhysicsComponent.knockback()parameters for clarity:source→knockbackSource,kb→knockback,kby→knockbackVertical,additionalMotion→knockbackAdditional. - Projectiles (arrow, egg, snowball, trident) now use
DamageContainerknockback fields instead of manually callingknockback()method.
- Added knockback-related fields to
- (API) Renamed
ContainerViewermethods for clarity and consistency:viewContents()→viewContainerContents(),viewSlot()→viewContainerSlot(),viewOpen()→viewContainerOpen(),viewClose()→viewContainerClose(). - Extracted NetEase protocol extension code to separate library
org.allaymc:protocol-extension, reducing codebase complexity and improving maintainability.
Fixed
- (API) Added missing attack sounds:
- Added attack sound when player punches air (
ATTACK_NODAMAGE). - Added attack sound when player attacks an entity (
ATTACK_STRONGon hit,ATTACK_NODAMAGEon miss). PlayerPunchAirEventnow implementsCancellableEvent, allowing plugins to cancel the event and prevent the sound from playing.
- Added attack sound when player punches air (
- Fixed packet serializer of
PlayerEnchantOptionsPacketfor NetEase 1.21.50. - Fixed an issue where too long command outputs will make the client disconnect in 1.21.130+.
- Fixed race condition in physics engine where
onFall()and projectile hit callbacks were called in parallel context, potentially causing concurrent modification issues when modifying shared world state. - Fixed hunger and air supply not being handled correctly for creative/spectator mode players:
- Creative and spectator mode players no longer have their hunger or air supply updated.
- Switching to creative or spectator mode now resets hunger and air supply to maximum values.
Removed
- (API) Removed
Permissions.ABILITY_FLYconstant, replaced by game mode specific permissions (ABILITY_FLY_SURVIVAL,ABILITY_FLY_CREATIVE,ABILITY_FLY_ADVENTURE).