本帖最后由 jiongjionger 于 2016-11-18 00:10 编辑

  昨日万年跳票的Mojang正式发布了1.11,Bukkit API草案在今日也已公布,按照以往的情况来看,和预计20日发布的正式版并不会有太大差距,如有变更,本帖会做修正。(目前Bukkit API已经正式发布,新增和改动的部分已更新 2016/11/18)

  总结:放在前面,怕没人看。这次API的改动可以说还是比较大的,对老插件兼容性而言新增的部分自然不需要考虑,但是Bukkit API这次一口气删除了很多原来是Deprecated状态的接口、方法、事件入口(Event),这可能导致一些远古插件(在1.6/1.7时代就弃坑的插件)无法在1.11正常工作,即便这些插件并没有使用到NMS。例如一些远古的大型插件用到了CallEvent,比如EntityDamageEvent(final Entity damagee, final DamageCause cause, final int damage),但是这个实现已经被删除,这个插件就无法在1.11中工作。

  具体改动如下:

  • Block(方块):
    新增:ShulkerBox(继承了BlockState, InventoryHolder, Lockable)

  • Command(命令):
    删除:删除了早已处于Deprecated状态的tabComplete(CommandSender sender, String[] args)

  • Enchantment(附魔):
    新增:BINDING_CURSE(绑定诅咒,内部ID:10)
    新增:VANISHING_CURSE(消失诅咒,内部ID:71)

  • Entity(实体):
    新增:AbstractHorse接口(马),继承Animals, Vehicle, InventoryHolder, Tameable
    新增:ChestedHorse接口,继承AbstractHorse,内部方法有isCarryingChest(是否装备了箱子)、setCarryingChest(设置是否装备箱子)
    新增:Donkey接口(驴),继承ChestedHorse
    新增:ElderGuardian接口(深海守卫者),继承Guardian
    新增:Evoker接口(唤魔者),继承Monster
    新增:EvokerFangs接口(唤魔者召唤的地刺),继承Entity
    删除:FallingSand(坠落中的沙子)
    新增:Husk接口(尸壳),继承Zombie
    新增:Llama接口(羊驼),继承ChestedHorse
    新增:LlamaSpit接口(羊驼的口水),继承Projectile
    新增:Mule接口(骡子),继承ChestedHorse
    删除:PoweredMinecart接口
    新增:SkeletonHorse接口(骷髅马),继承AbstractHorse
    删除:StorageMinecart接口
    新增:Stray接口(流髑),继承Skeleton
    新增:Vex接口(猥傀),继承Monster
    新增:Vindicator接口(卫道士),继承Monster
    新增:WitherSkeleton接口(凋零骷髅),继承Skeleton
    新增:ZombieHorse接口(僵尸马),继承AbstractHorse
    新增:ZombieVillager接口(僵尸村民),继承Zombie

  • Event(事件):

  • Block(方块):
    删除:删除了早已Deprecated的BlockIgniteEvent(final Block theBlock, final IgniteCause cause, final Player thePlayer)
  
  • Entity(实体):
    删除:删除了CreatureSpawnEvent中实体生成的来源:Bed(玩家睡觉时生成)

    删除
    :删除了EntityChangeBlockEvent中早已Deprecated的EntityChangeBlockEvent(final LivingEntity what, final Block block, final Material to)

    删除
    :删除了EntityDamageByBlockEvent中早已Deprecated的EntityDamageByBlockEvent(final Block damager, final Entity damagee, final DamageCause cause, final int damage)

    删除
    :删除了EntityDamageByEntityEvent中早已Deprecated的EntityDamageByEntityEvent(final Entity damager, final Entity damagee, final DamageCause cause, final int damage)

    删除
    :删除了EntityDamageEvent中早已Deprecated的EntityDamageEvent(final Entity damagee, final DamageCause cause, final int damage)

    新增
    :在EntityDamageEvent中新增了伤害的来源:CRAMMING

    删除:删除了EntityRegainHealthEvent中早已Deprecated的EntityRegainHealthEvent(final Entity entity, final int amount, final RegainReason regainReason)
    
  • Entity - Inventory(容器):
    删除:删除了CraftItemEvent中早已Deprecated的CraftItemEvent(Recipe recipe, InventoryView what, SlotType type, int slot, boolean right, boolean shift)

    删除:删除了InventoryClickEvent中早已Deprecated的InventoryClickEvent(InventoryView view, SlotType type, int slot, boolean right, boolean shift)
    
  • Entity - Player(玩家):
    删除:删除了PlayerCommandPreprocessEvent中的setFormat和getFormat方法

    删除:删除了PlayerFishEvent中早已Deprecated的PlayerFishEvent(final Player player, final Entity entity, final State state)

    删除:删除了PlayerInventoryEvent整个事件

    删除:删除了PlayerLoginEvent中早已Deprecated的PlayerLoginEvent(final Player player)、PlayerLoginEvent(final Player player, final String
hostname)、PlayerLoginEvent(final Player player, final Result result, final String message)

  • Inventory(容器):
    新增:LlamaInventory(羊驼的背包)

  • JavaPlugin(插件入口)
    删除:删除了早已废弃的JavaPlugin(final PluginLoader loader, final Server server, final PluginDescriptionFile description, final File dataFolder, final File file)


  • Potion(药水)
    删除:删除了早已Deprecated的Potion(PotionType type, Tier tier)
    删除:删除了早已Deprecated的Potion(PotionType type, Tier tier, boolean splash)
    删除:删除了早已Deprecated的Potion(PotionType type, Tier tier, boolean splash, boolean extended)
    删除:删除了getTier、setTier方法和枚举元素Tier

  • Map
    增加:增加isUnlimitedTracking()方法和setUnlimitedTracking方法(分别是判断鼠标是不是在Map里面和设置这个值)

  • Bukkit(API)
    删除:删除了useExactLoginLocation方法(判断碰撞箱,登录的时候是否需要移动玩家)


  • DyeColor(颜色)
    删除:删除了getData和getByData方法
    新增:新增了getWoolData和getByWoolData方法


  • Material(材料、材质)
    新增:OBSERVER(侦测器)
    新增:TOTEM(不死图腾)
    新增:SHULKER_SHELL(潜影贝壳)
    下面都是各种颜色的潜影盒
    新增WHITE_SHULKER_BOX
    新增:ORANGE_SHULKER_BOX
    新增:MAGENTA_SHULKER_BOX
    新增:LIGHT_BLUE_SHULKER_BOX
    新增:YELLOW_SHULKER_BOX
    新增:LIME_SHULKER_BOX
    新增:GRAY_SHULKER_BOX
    新增:PINK_SHULKER_BOX
    新增:SILVER_SHULKER_BOX
    新增:CYAN_SHULKER_BOX
    新增:PURPLE_SHULKER_BOX
    新增:BLUE_SHULKER_BOX
    新增:BROWN_SHULKER_BOX
    新增:GREEN_SHULKER_BOX
    新增:RED_SHULKER_BOX
    新增:BLACK_SHULKER_BOX

  • Particle(粒子)
    新增:TOTEM(不死图腾)
    新增:SPIT(羊驼口水)


  • Sound(声效)
    新增:BLOCK_SHULKER_BOX_CLOSE
    新增:BLOCK_SHULKER_BOX_OPEN
    新增:ENTITY_ELDER_GUARDIAN_FLOP
    新增:ENTITY_EVOCATION_FANGS_ATTACK
    新增:ENTITY_EVOCATION_ILLAGER_AMBIENT
    新增:ENTITY_EVOCATION_ILLAGER_CAST_SPELL
    新增:ENTITY_EVOCATION_ILLAGER_DEATH
    新增:ENTITY_EVOCATION_ILLAGER_HURT
    新增:ENTITY_EVOCATION_ILLAGER_PREPARE_ATTACK
    新增:ENTITY_EVOCATION_ILLAGER_PREPARE_SUMMON
    新增:ENTITY_EVOCATION_ILLAGER_PREPARE_WOLOLO
    删除:ENTITY_EXPERIENCE_ORB_TOUCH


  • 额外说明
    关于实体的命名规则有所改变。但是对于插件作者影响不大,不过如果插件使用getType().toString()等方法判断实体类型则需要修改你的代码!实体的命名规则主要是取消了下划线和大小写的改变,这部分内容在Wiki和论坛的1.11的特性列表内已经列举,故不赘叙。