Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Всем привет!Нужно сделать так: есть майнкрафт блок,(например камень) если берешь в руку то баф медлительности не 1 а 0,1 например.Непонятны 2 вещи: как прописать свойства майнкрафт вещам модом эффекты,и как наложить этот эффект.Еще сделать так что даже если камень не в руке то всеравно дается эффект
Проверяешь, что у игрока в руке и даёшь ему этот баф. Если ты имел ввиду ванильный эффект медлительности и тебе нужно, чтобы он был с наименьшим воздействием, то это создать свой эффект или по-проще свой код который замедляет игрока (возьми пример из "песка душ").
XuPuPG написал(а):
Непонятны 2 вещи: как прописать свойства майнкрафт вещам модом эффекты,и как наложить этот эффект.
1. Не особо понял, но как я понял, то - много как (пример привести не могу из-за технических проблем). 2. Эффекты накладываются через серверную сторону. Если не получается наложить простым способом, то через пакеты отправлять об этом наложения эффекта.
XuPuPG написал(а):
Еще сделать так что даже если камень не в руке то всеравно дается эффект
Проверять циклом инвентарь игрока, в цикле суммировать вес блоков (а так-же не забывать что в слоте, есть полный и не полный стак какого-либо вещей). Суммированную переменную дать уравнению для твоего замедления.
Я писал, что у меня технические проблемы, так-что я пишу как могу.
Не забываем регистрировать наш эвант в эвант-bus'е.
Код:
@СубскрайпсЭвант
public void WeightingS(EventPlayerUpdate event) {
EntityPlayer player = event.player;
float max_weight = 100.0F;
float weighting = 0.0F;
for (ini i = 0; i < player.inventory.main.length; i++) {
if (player.inventory.main[i] != null) {
if (player.inventory.main[i].getItem() == new ItemStack(Blocks.dirt).getItem()) {
weighting += (float)player.inventory.main[i].stackSize * 0.5F;
}
if (player.inventory.main[i].getItem() == new ItemStack(Blocks.stone).getItem()) {
weighting += (float)player.inventory.main[i].stackSize * 1.0F;
}
}
player.moveX *= max_weight - weighting;
player.moveZ *= max_weight - weighting;
}
Скорее всего этот метод будет глючит, для наименьшего лага нужно будет использовать ещё пакеты, я пока-что другой способ не могу придумать сейчас.
Спасибо,но я так и не понял как добавить эффект к предмету из ванилы.То есть: мод загрузил в майн-эфекты есть,без мода-нет.То есть я хочу изменить свойства вещей модом
Проверяешь, что у игрока в руке и даёшь ему этот баф. Если ты имел ввиду ванильный эффект медлительности и тебе нужно, чтобы он был с наименьшим воздействием, то это создать свой эффект или по-проще свой код который замедляет игрока (возьми пример из "песка душ").
XuPuPG написал(а):
Непонятны 2 вещи: как прописать свойства майнкрафт вещам модом эффекты,и как наложить этот эффект.
1. Не особо понял, но как я понял, то - много как (пример привести не могу из-за технических проблем). 2. Эффекты накладываются через серверную сторону. Если не получается наложить простым способом, то через пакеты отправлять об этом наложения эффекта.
XuPuPG написал(а):
Еще сделать так что даже если камень не в руке то всеравно дается эффект
Проверять циклом инвентарь игрока, в цикле суммировать вес блоков (а так-же не забывать что в слоте, есть полный и не полный стак какого-либо вещей). Суммированную переменную дать уравнению для твоего замедления.
Я писал, что у меня технические проблемы, так-что я пишу как могу.
Не забываем регистрировать наш эвант в эвант-bus'е.
Код:
@СубскрайпсЭвант
public void WeightingS(EventPlayerUpdate event) {
EntityPlayer player = event.player;
float max_weight = 100.0F;
float weighting = 0.0F;
for (ini i = 0; i < player.inventory.main.length; i++) {
if (player.inventory.main[i] != null) {
if (player.inventory.main[i].getItem() == new ItemStack(Blocks.dirt).getItem()) {
weighting += (float)player.inventory.main[i].stackSize * 0.5F;
}
if (player.inventory.main[i].getItem() == new ItemStack(Blocks.stone).getItem()) {
weighting += (float)player.inventory.main[i].stackSize * 1.0F;
}
}
player.moveX *= max_weight - weighting;
player.moveZ *= max_weight - weighting;
}
Тебе на ванилу надо поставить? Если да LivingUpdateEvent там проверяй на инстанс игрока,потом на предмет на нулл ,потом на равность с энным предметом. Надеюсь понял. Если не то,опиши тогда подробнее
Да,это то самое.Но я не понял как именно это сделать.Из твоих записей понял только про LivingUpdateEvent.Можешь показать пример ?
Dovakin написал(а):
Тебе на ванилу надо поставить? Если да LivingUpdateEvent там проверяй на инстанс игрока,потом на предмет на нулл ,потом на равность с энным предметом. Надеюсь понял. Если не то,опиши тогда подробнее
Я с телефона. Могу отрывки кода покидать.
if(event.entityLivinv instanceof EntityPlayer){
EntityPlayer p=(EntityPlayer)event.entityLiving;
if(не понмю,надо хотбар получить.э!=null&&опять хотбар.getItem()==твой итем){
Действия
}