LucaDev
Braumeister
Hey ich habe angefangen zu programmieren und wollte ein doppel-Sprung Plugin Programmieren
leider funktioniert es nicht woran liegt es?
Der Code:
leider funktioniert es nicht woran liegt es?
Der Code:
Code:
package de.KackenHD.DoubleJump;
import java.util.List;
import org.bukkit.ChatColor;
import org.bukkit.Effect;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerToggleFlightEvent;
import org.bukkit.util.Vector;
public class DoubleJump
implements Listener
{
private List<String> justJumped;
public void join(PlayerJoinEvent event)
{
Player player = event.getPlayer();
if (player.hasPermission("smash.jump"))
{
player.setAllowFlight(true);
this.justJumped.remove(player.getName());
}
}
public void onRespawn(PlayerRespawnEvent event)
{
Player player = event.getPlayer();
if ((player.hasPermission("smash.jump")) || (player.isOp()))
{
player.setAllowFlight(true);
this.justJumped.remove(player.getName());
}
}
public void setFlyOnJump(PlayerToggleFlightEvent event)
{
Player player = event.getPlayer();
String name = player.getName();
World world = player.getWorld();
boolean messageOnJump = false;
boolean sound = true;
boolean effect = true;
boolean wallJump = false;
boolean forwardOnJump = false;
int blocks = 6;
String message = "Jump:D";
Vector jump = player.getVelocity().multiply(1).setY(0.17D * blocks);
Vector look = player.getLocation().getDirection().multiply(0.5D);
if ((event.isFlying()) && (event.getPlayer().getGameMode() != GameMode.CREATIVE) && (player.hasPermission("smash.jump")))
{
if (!wallJump)
{
if (!this.justJumped.contains(name))
{
player.setFlying(false);
if (forwardOnJump)
{
player.setVelocity(jump.add(look));
}
else {
player.setVelocity(jump);
}
player.setAllowFlight(false);
if (messageOnJump)
{
player.sendMessage(ChatColor.GREEN + message);
}
if (sound)
{
player.playSound(player.getLocation(), Sound.IRONGOLEM_THROW, 10.0F, -10.0F);
}
if (effect)
{
for (int i = 0; i <= 10; i++)
{
world.playEffect(player.getLocation(), Effect.SMOKE, i);
}
}
}
else
{
player.setFlying(false);
player.setAllowFlight(false);
}
event.setCancelled(true);
}
else {
Block block = player.getTargetBlock(null, 2);
if (block.getType() != Material.AIR)
{
if (!this.justJumped.contains(name))
{
player.setFlying(false);
if (forwardOnJump)
{
player.setVelocity(jump.add(look));
}
else {
player.setVelocity(jump);
}
player.setAllowFlight(false);
if (messageOnJump)
{
player.sendMessage(ChatColor.GREEN + message);
}
if (sound)
{
player.playSound(player.getLocation(), Sound.IRONGOLEM_THROW, 10.0F, -10.0F);
}
if (effect)
{
for (int i = 0; i <= 10; i++)
{
world.playEffect(player.getLocation(), Effect.SMOKE, i);
}
}
}
else
{
player.setFlying(false);
player.setAllowFlight(false);
}
}
else {
player.setFlying(false);
player.setAllowFlight(false);
}
event.setCancelled(true);
}
}
}
public void onMove(PlayerMoveEvent event)
{
Player player = event.getPlayer();
Location loc = player.getLocation();
Block block = loc.add(0.0D, -1.0D, 0.0D).getBlock();
if (player.hasPermission("smash.jump"))
{
if (block.getType() == Material.AIR)
{
if (!this.justJumped.contains(player.getName()))
{
this.justJumped.add(player.getName());
}
}
else if (this.justJumped.contains(player.getName()))
{
this.justJumped.remove(player.getName());
player.setAllowFlight(true);
player.setFlying(false);
}
}
else {
this.justJumped.remove(player.getName());
player.setAllowFlight(false);
player.setFlying(false);
}
}
}
Zuletzt bearbeitet von einem Moderator: