- 27
- 6
Вопрос в теме
MinecraftServer.getServer().getConfigurationManager().func_152612_a(nickname);
MinecraftServer.getServer().getConfigurationManager().func_152612_a(nickname);
Спасибо за ответ, но когда получаешь сервер, то его значение в мультиплеере нул, случаем не знаешь как правильно вызвать MinecraftServer.getServer()?Черезполучай игрока по нику (естественно заранее проверяя, онлайн ли он), дальше через AttributesModifiers меняй ему здоровье.Java:MinecraftServer.getServer().getConfigurationManager().func_152612_a(nickname);
Спасибо большое за ответ, но немного не понятно как и где прописать ту часть кода для сервера, чтоб адекватно сработал метод getServer(), если ответишь, то буду премного благодаренЭтот код для серверной стороны. На клиенте получай игрока из объекта клиентского мира
Игроки вне области прорисовки не будут иметь представления на клиенте
MinecraftServer.getServer()
выполняется на сервере. Например, если доступне объект World
, то его свойство isRemote
== false на сервере. Еще можно проверить FMLCommonHandler.instance.getEffectiveSide() == Side.SERVER
Да, мод специально для сервера, как раз таки мне нужно вызывать MinecraftServer.getServer() так, чтобы вызвался именно со стороны сервера, чтобы получить значение, а не нул, проблема в том, что я не знаю в какой части кода правильно вызывать этот самый метод, чтобы в будущем определить это значение в классе и спокойно использовать как раз для изменения здоровья игроков в определенный моментТвой мод будет работать на сервере? Если да, то проверяй,чтоMinecraftServer.getServer()
выполняется на сервере. Например, если доступне объектWorld
, то его свойствоisRemote
== false на сервере. Еще можно проверитьFMLCommonHandler.instance.getEffectiveSide() == Side.SERVER
я буквально недавно стал изучать моддинг, простите, если шибко туплюТвой мод будет работать на сервере? Если да, то проверяй,чтоMinecraftServer.getServer()
выполняется на сервере. Например, если доступне объектWorld
, то его свойствоisRemote
== false на сервере. Еще можно проверитьFMLCommonHandler.instance.getEffectiveSide() == Side.SERVER
@SubscribeEvent
public void onUpdatePlayer(LivingUpdateEvent e)
{
if(e.entity instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer)e.entity;
//Тут делаешь проверки на условия и меняешь его хп
player.setHealth(20f);//20f это число
}
}
Не, там при определенном клике на гуишке нужно здоровье определенного игрока на сервер изменятьЕсли тебе нужно изменять здоровье игрока при определенных действия можешь использовать обработчик событий
Java:@SubscribeEvent public void onUpdatePlayer(LivingUpdateEvent e) { if(e.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entity; //Тут делаешь проверки на условия и меняешь его хп player.setHealth(20f);//20f это число } }
public static EntityPlayer getPlayerFromName(String par1) {
List players = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
Iterator iterator = players.iterator();
EntityPlayer tempPlayer;
do {
if (!iterator.hasNext()) {
return null;
}
tempPlayer = (EntityPlayer) iterator.next();
} while (!tempPlayer.getCommandSenderName().toLowerCase().matches(par1.toLowerCase()));
return tempPlayer;
}
UUID uuid = new UUID(1, 1);
double mod = 1;//1 - это одна строчка, если надо 1 сердечко добавить то 0.1, если пол сердца то 0.05 если 5 сердец то 0.5
//PS. Соответственно если хочешь удалить а не добавить то пишешь -0.1, -0.05, -0.5 и прочее
AttributeModifier modifierPlus = new AttributeModifier(uuid, "maxHealth", mod, 1);
public void changeMaxHP(EntityPlayer player)
{
if(player.getEntityAttribute(SharedMonsterAttributes.maxHealth).getModifier(uuid) == null)
player.getEntityAttribute(SharedMonsterAttributes.maxHealth).applyModifier(modifierPlus);
}
//Чтобы удалить это изменение надо такое написать
player.getEntityAttribute(SharedMonsterAttributes.maxHealth).removeModifier(modifierPlus);
Код как после декомпилятора. for использовать можно, код будет более читаемым.Если будешь получать игрока на сервере по нику, такой метод подойдет
Так и есть, старый код найденный хз где, используется в командах, скорее всего найденный где-то в исходниках майнкрафтапосле декомпилятора