Skip to content

0.10.7 (API 0.24.0)

Choose a tag to compare

@smartcmd smartcmd released this 29 Jan 02:50
e85e4e1

Compare with 0.10.6

For Minecraft: Bedrock Edition 1.21.50 (NetEase), 1.21.80 - 1.21.130

Added

  • (API) Implemented dispenser and dropper:
    • Added DispenseBehavior interface for defining custom item dispense behaviors.
    • Added DispenseResult class for representing dispense operation results.
    • Added BlockEntityDispenser and BlockEntityDropper interfaces.
    • Added BlockEntityDispenserBaseComponent interface with tryDispense() method.
    • Added BlockDispenseEvent event fired when a dispenser or dropper dispenses an item, allowing plugins to modify or cancel the behavior.
    • Added Registries.DISPENSER_BEHAVIORS registry for registering custom dispense behaviors.
    • Added BlockEntityTypes.DISPENSER and BlockEntityTypes.DROPPER block entity types.
    • Added ContainerTypes.DISPENSER and ContainerTypes.DROPPER container types.
    • Added ItemSpawnEggBaseComponent interface with getEntityType() method for spawn egg items.
    • Added ShootParticle particle for dispenser/dropper shoot effects.
    • Added sounds SimpleSound.BLOCK_CLICK and SimpleSound.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).
  • (API) Implemented composter:
    • Added ComposterEvent event fired when items are added to or harvested from a composter.
    • Added Registries.COMPOSTABLE_ITEMS for registering compostable items and their composting chances.
  • (API) Implemented bell:
    • Added BlockEntityBell interface for bell block entities.
    • Added BellRingEvent event fired when a bell is rung by players, projectiles, or redstone.
    • Added BlockEntityTypes.BELL block entity type.
  • (API) Implemented lectern:
    • Added BlockEntityLectern interface with methods for managing stored books and current page.
    • Added BlockLecternBaseComponent interface with methods for book placement and removal.
    • Added LecternPlaceBookEvent, LecternPageTurnEvent, and LecternDropBookEvent events.
    • Added BlockEntityTypes.LECTERN block entity type.
  • (API) Implemented pointed dripstone:
    • Added PointedDripstoneDripEvent event fired when pointed dripstone drips fluid.
    • Added PointedDripstoneDripSound for dripstone drip sounds.
    • Added DamageType.STALACTITE and DamageType.STALAGMITE damage types.
  • (API) Added method WorldViewer.playPointedDripstoneDripSound() for playing dripstone drip sounds.
  • (API) Added method BlockFallableComponent.checkAndFall() for programmatically triggering block falling.
  • (API) Added BlockRespawnPointComponent interface for blocks that can serve as respawn points (bed, respawn anchor), with onPlayerRespawn() method to handle respawn logic and safe position finding.
  • (API) Added method Block.getLocation() for creating a Location3i from the block's position.
  • (API) Added Explosion.sourceBlockType field for custom death messages when explosion is caused by specific blocks (e.g., bed, respawn anchor).
  • (API) Implemented decorated pot:
    • Added PotSherds record class representing the four sherds on a decorated pot (front, back, left, right).
    • Added BlockEntityDecoratedPot interface with methods for item storage, sherd management, and comparator output.
    • Added ItemDecoratedPotBaseComponent interface with methods for managing sherds on decorated pot items.
    • Added BlockEntityTypes.DECORATED_POT block entity type.
    • Implemented decorated pot crafting recipe with sherds/bricks pattern support.
  • (API) Implemented trident:
    • Added EntityThrownTridentBaseComponent interface with methods for managing trident item, favored slot, loyalty/impaling/channeling enchantments, and returning state.
    • Added EntityThrownTrident entity interface.
    • Added PlayerPickupTridentEvent event fired when a player picks up a trident, allowing plugins to cancel the pickup.
    • Added PlayerToggleSpinAttackEvent event fired when a player starts or stops a spin attack (riptide).
    • Added methods isSpinAttacking(), setSpinAttacking(), and canUseRiptide() to EntityPlayerBaseComponent.
    • Added TridentRiptideSound record class for riptide sounds with level parameter.
    • Added sounds SimpleSound.TRIDENT_THROW, TRIDENT_HIT, TRIDENT_HIT_GROUND, TRIDENT_RETURN, and TRIDENT_THUNDER.
    • Implemented trident dispense behavior for dispensers.
  • (API) Implemented lightning bolt:
    • Added EntityLightningBoltBaseComponent interface with methods isEffect() and setEffect() for controlling lightning effects.
    • Added EntityLightningBolt entity interface.
    • Added LightningStrikeEvent event fired when lightning strikes, with cause types (WEATHER, TRIDENT, COMMAND, CUSTOM).
    • Added methods strikeLightning() to Dimension interface for spawning lightning at a position.
    • Added DamageContainer.lightning() factory method for lightning damage.
  • (API) Implemented fireball entities:
    • Added EntityFireballBaseComponent interface with getExplosionPower() and setExplosionPower() methods for large fireballs.
    • Added EntitySmallFireball and EntityFireball entity interfaces.
    • Implemented fire charge dispense behavior for dispensers.
  • (API) Implemented egg projectile:
    • Added EntityEgg entity interface.
    • Implemented egg throwing mechanics with chicken spawning chance.
  • (API) Added afterApplyMotion() method to EntityPhysicsComponent interface, 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-calculation config option in world-settings.yml for each dimension.
    • When disabled, all light queries return max value (15), improving performance for dimensions where lighting is not important.
  • (API) Implemented fishing:
    • Added EntityFishingHookBaseComponent interface with fishing state management (FLYING, WAITING, ATTRACTING, CAUGHT), hooked entity handling, and reelLine() method.
    • Added PlayerFishEvent event fired when a player catches something while fishing, allowing plugins to modify caught items, experience, hooked entities, and motion.
    • Added FishingLoot interface for defining custom fishing loot entries.
    • Added FishingLootCategory enum (FISH, TREASURE, JUNK) with Bedrock Edition base chances.
    • Added FishingLootTable utility class for selecting fishing loot based on Luck of the Sea and Lure enchantments with Bedrock Edition mechanics.
    • Added Registries.FISHING_LOOTS registry for registering custom fishing loot.
    • Added EntityPlayer.getFishingHook(), setFishingHook(), and isFishing() 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_BITE for displaying the fish bite animation with bubble and splash effects.
    • Added SimpleParticle.WATER_WAKE for fish attraction effects and SimpleParticle.BUBBLE for fish bite effects.

Changed

  • (API) Refactored flight permission system for game mode specific control:
    • Replaced single ability.fly permission 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=TRUE or ability.fly.adventure=TRUE).
    • Added canFly() method to EntityPlayerBaseComponent for unified flight permission checking.
    • OP players now follow the same default flight behavior as regular players.
  • (API) Changed EntityFallEvent and ProjectileHitEvent caller thread annotation from COMPUTE to DIMENSION, 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, and ignoreKnockbackResistance.
    • Knockback values are now calculated before EntityDamageEvent is fired, allowing event listeners to modify knockback parameters.
    • Renamed EntityPhysicsComponent.knockback() parameters for clarity: sourceknockbackSource, kbknockback, kbyknockbackVertical, additionalMotionknockbackAdditional.
    • Projectiles (arrow, egg, snowball, trident) now use DamageContainer knockback fields instead of manually calling knockback() method.
  • (API) Renamed ContainerViewer methods 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_STRONG on hit, ATTACK_NODAMAGE on miss).
    • PlayerPunchAirEvent now implements CancellableEvent, allowing plugins to cancel the event and prevent the sound from playing.
  • Fixed packet serializer of PlayerEnchantOptionsPacket for 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_FLY constant, replaced by game mode specific permissions (ABILITY_FLY_SURVIVAL, ABILITY_FLY_CREATIVE, ABILITY_FLY_ADVENTURE).