WhiteJQ
Ньюби
- Баллы
- 1
Здравствуйте, я разрабатываю сервер, и нужно написать фаерболы, чтобы они пуляли игрока вперед, от земли, так же сделать, если игрок стоит задом, то тоже пуляло. Прикрепил видео ссылкой, как это сделано на известном сервере RuHypixel
Есть так же баг с последним оставшимся фаерболом, он не вычитается :c
Кто накодит, дай бог вам здоровья!
Ссылка на видео: https://www.mediafire.com/file/ziremshfzp9jbuw/2024-02-21_00-20-39.mp4/file
Вот так накодил я (база фаерболов, чтобы кидали вверх):
Есть так же баг с последним оставшимся фаерболом, он не вычитается :c
Кто накодит, дай бог вам здоровья!
Ссылка на видео: https://www.mediafire.com/file/ziremshfzp9jbuw/2024-02-21_00-20-39.mp4/file
Вот так накодил я (база фаерболов, чтобы кидали вверх):
Код:
package ru.solarcloud.duels.fireballfight.management;
import net.minecraft.server.v1_8_R3.EntityPlayer;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport;
import net.minecraft.server.v1_8_R3.PacketPlayOutEntityVelocity;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Fireball;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.util.Vector;
import ru.tynixcloud.util.PlayerCooldownUtil;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import java.util.concurrent.TimeUnit;
public class FireballManagement implements Listener {
private final ProtocolManager protocolManager;
public FireballManagement() {
this.protocolManager = ProtocolLibrary.getProtocolManager();
}
@EventHandler
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
Entity damages = event.getDamager();
Entity damaged = event.getEntity();
if (damages.getType() == EntityType.FIREBALL) {
if (damaged instanceof Player) {
Player player = (Player) damaged;
event.setCancelled(true);
// Location location = player.getEyeLocation().clone();
Vector playerDirection = player.getLocation().getDirection();
Vector velocity = playerDirection.clone().multiply(2).normalize();
velocity.setY(1.5);
player.setVelocity(velocity);
}
}
}
@EventHandler
public void on(PlayerInteractEvent event) {
Player player = event.getPlayer();
if (event.hasItem() && event.getItem() != null && event.getItem().getType() == Material.FIREBALL) {
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (PlayerCooldownUtil.hasCooldown("fireball", player)) {
return;
}
spawnCustomFireball(player);
PlayerCooldownUtil.putCooldown("fireball", player, TimeUnit.SECONDS.toMillis(1));
}
}
}
@EventHandler
public void onDamage(EntityDamageEvent event) {
if (event.getCause().equals(EntityDamageEvent.DamageCause.FALL)) {
event.setCancelled(true);
}
}
@EventHandler
public void onplace(BlockPlaceEvent event) {
Player player = event.getPlayer();
if (player.getItemInHand().getType().equals(Material.FIREBALL)) {
event.setBuild(false);
}
}
public void spawnCustomFireball(Player player) {
Fireball fireball = player.launchProjectile(Fireball.class);
fireball.setVelocity(fireball.getLocation().getDirection().multiply(1.4));
fireball.setIsIncendiary(false);
}
}
, Yield 7 ставил