- 205
- 12
- 103
Всем привет. Цель предельно проста - сделать магическое зеркало из террарии в кубаче, однако и тут я столкнулся с двумя(или даже тремя) вопросами. Тему собирался писать неоднократно, но потом в голову приходило что-то вроде "А что, если..." и я уходил обратно пробовать. Сейчас, уже вдоволь напробовавшись, таки решил написать.
"Код":
Что должен делать предмет: При клике ПКМ с небольшой задержкой телепортирует игрока к его кровати. если кровати нет - крякает об этом в чат.
Имеющиеся проблемы:
1. Если кровать еще ни разу не была установлена, игрока, как и должно быть, не телепортирует к точке спавна, однако звук телепортации всё равно воспроизводится, хотя не должен, поскольку телепортация не происходит.
2. После установки кровати всё работает подобно ожиданиям, однако при разрушении кровати игрока всё ещё телепортирует к предыдущему её местоположению. Нужно как-то при нажатии ПКМ обновлять её позицию.
Дополнительные задачи:
1. Необходимо реализовать задержку срабатывания зеркала. Т.е. нажал ПКМ, прошло пару секунд - игрока телепортировало. Я пока не искал как это реализовать,так как не решил предыдущие проблемы. Но если кто-то подскажет - буду благодарен.
P.S. - Как можно заметить по коду, я там уже столько всего наворотил в тщетных попытках решения имеющихся вопросов, что сам запутался.
"Код":
Java:
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
ItemStack itemstack = playerIn.getHeldItem(handIn);
BlockPos spawnPoint = playerIn.getBedLocation(playerIn.getSpawnDimension());
if (!playerIn.abilities.isCreativeMode) {
playerIn.getCooldownTracker().setCooldown(this, 100);
}
if (spawnPoint == null) {
playerIn.sendMessage(new TranslationTextComponent("block.minecraft.bed.not_valid"));
return new ActionResult<>(ActionResultType.FAIL, itemstack);
} else {
worldIn.playSound(playerIn, playerIn.posX, playerIn.posY, playerIn.posZ, ModSounds.TELEPORT, SoundCategory.PLAYERS, 1.0F, 1.0F);
if (!worldIn.isRemote) {
playerIn.setPositionAndUpdate(spawnPoint.getX(), spawnPoint.getY(), spawnPoint.getZ());
}
return new ActionResult<>(ActionResultType.SUCCESS, itemstack);
}
}
Что должен делать предмет: При клике ПКМ с небольшой задержкой телепортирует игрока к его кровати. если кровати нет - крякает об этом в чат.
Имеющиеся проблемы:
1. Если кровать еще ни разу не была установлена, игрока, как и должно быть, не телепортирует к точке спавна, однако звук телепортации всё равно воспроизводится, хотя не должен, поскольку телепортация не происходит.
2. После установки кровати всё работает подобно ожиданиям, однако при разрушении кровати игрока всё ещё телепортирует к предыдущему её местоположению. Нужно как-то при нажатии ПКМ обновлять её позицию.
Дополнительные задачи:
1. Необходимо реализовать задержку срабатывания зеркала. Т.е. нажал ПКМ, прошло пару секунд - игрока телепортировало. Я пока не искал как это реализовать,так как не решил предыдущие проблемы. Но если кто-то подскажет - буду благодарен.
P.S. - Как можно заметить по коду, я там уже столько всего наворотил в тщетных попытках решения имеющихся вопросов, что сам запутался.
Последнее редактирование: