Данный бенчмарк всё ещё неправильный, ибо OSR, и не учтён прогрев (банально если свапнуть местами цикл с реплейсом и цикл с translate получатся другие результаты). Короче используй JMH для бенчей, и будет тебе счастье. И результаты кстати примерно одинаковыми получатся (на java8, на java7 с replace всё будет плохо).
P.S. И при всём при этом на результаты на самом деле наплевать, ибо кроме крайних случаев - транслейт кодов выполняется один раз при инициализации сообщения. (Да и простой реплейс - некорректный способ трансляции колор кодов, но я об этом уже говорил. А что самое забавное - технически способ трансляции в спайготе тоже неправильный, ибо не учитывает суррогатные пары юникода, и хоть это и работает в теекущий момент, расширение таблицы цветовых кодов в некоторых случаях выстрелит в ногу).
А по теме - пожалуй стоит упомянуть некоторые странности с PlayerInteractEvent.
Дело в том что у этого эвента очень неочевидное поведение с точки зрения состояния отменённости.
Почти каждый наверняка сталкивался что если игнорировать отменённые эвенты, то в некоторых случаях PlayerInteract эвент будет считаться отменённым, но само действие выполнится, но если при этом его отменить, то действие не выполнится, что вызывает много вопросов по типу какого хера. А всё на самом деле просто. Если посмотреть в исходники, то можно увидеть что вот так определён PlayerInteractEvent::isCancelled:
Java:
public boolean isCancelled() {
return this.useInteractedBlock() == Event.Result.DENY;
}
а вот так PlayerInteractEvent::setCancelled:
Java:
public void setCancelled(final boolean cancel) {
this.setUseInteractedBlock(cancel ? Event.Result.DENY : ((this.useInteractedBlock() == Event.Result.DENY) ? Event.Result.DEFAULT : this.useInteractedBlock()));
this.setUseItemInHand(cancel ? Event.Result.DENY : ((this.useItemInHand() == Event.Result.DENY) ? Event.Result.DEFAULT : this.useItemInHand()));
}
Таким образом видно что для того чтобы эвент считался отменённым, достаточно чтобы не было взаимодействия с блоком (то бишь тыкаье воздуха даже с итемом руке считается отменённым сразу, даже если итем всё равно заюзается (что кстати нехило доставляло тем кто пытался запретить использовать некоторые потионы скажем)), а вот сама отмена и отменяет взаимодействие с блоком, и использование итема.