BEDFIGHTTTTTTTT
This commit is contained in:
parent
a8fdd72217
commit
710dc7f1d0
@ -0,0 +1,106 @@
|
|||||||
|
package land.battle.practice.match.custom;
|
||||||
|
|
||||||
|
import land.battle.practice.Practice;
|
||||||
|
import land.battle.practice.match.Match;
|
||||||
|
import land.battle.practice.match.team.impl.MatchTeam;
|
||||||
|
import land.battle.practice.player.PlayerData;
|
||||||
|
import land.battle.practice.player.PlayerState;
|
||||||
|
import land.battle.practice.util.CC;
|
||||||
|
import org.bukkit.Sound;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
|
import static com.cryptomorin.xseries.messages.Titles.sendTitle;
|
||||||
|
|
||||||
|
public class CustomMatchRespawnRunnable extends BukkitRunnable {
|
||||||
|
|
||||||
|
private final Practice plugin = Practice.getInstance();
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
private final PlayerData practicePlayerData;
|
||||||
|
|
||||||
|
private final Match match;
|
||||||
|
private final MatchTeam playerTeam;
|
||||||
|
private final PotionEffect weakness = new PotionEffect(PotionEffectType.WEAKNESS,
|
||||||
|
Integer.MAX_VALUE, 0);
|
||||||
|
|
||||||
|
private final int startingTime;
|
||||||
|
private int respawnTime;
|
||||||
|
|
||||||
|
public CustomMatchRespawnRunnable(Player player, PlayerData practicePlayerData,
|
||||||
|
Match match, MatchTeam playerTeam, int startingTime, int respawnTime) {
|
||||||
|
this.player = player;
|
||||||
|
this.practicePlayerData = practicePlayerData;
|
||||||
|
|
||||||
|
this.match = match;
|
||||||
|
this.playerTeam = playerTeam;
|
||||||
|
|
||||||
|
this.startingTime = startingTime;
|
||||||
|
this.respawnTime = respawnTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
final PlayerData playerData = this.plugin.getPlayerManager().getPlayerData(player.getUniqueId());
|
||||||
|
|
||||||
|
if (playerData.getPlayerState() == PlayerState.FIGHTING) {
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (respawnTime <= 1) {
|
||||||
|
player.removePotionEffect(PotionEffectType.WEAKNESS);
|
||||||
|
player.teleport(
|
||||||
|
playerTeam.getTeamID() == 1 ? match.getStandaloneArena().getPositionOne().toBukkitLocation()
|
||||||
|
: match.getStandaloneArena().getPositionTwo().toBukkitLocation());
|
||||||
|
|
||||||
|
player.setFallDistance(50);
|
||||||
|
player.setAllowFlight(false);
|
||||||
|
player.setFlying(false);
|
||||||
|
|
||||||
|
sendTitle(player, "&aRespawning...", "");
|
||||||
|
player.sendMessage(CC.translate("&aYou have respawned!"));
|
||||||
|
player.playSound(player.getLocation(), Sound.ORB_PICKUP, 10, 1);
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 20, 0));
|
||||||
|
|
||||||
|
match.getTeams().forEach(
|
||||||
|
team -> team.getAlivePlayers().stream().filter(player1 -> !player.equals(player1)).forEach(
|
||||||
|
matchplayer -> player.sendMessage(CC.translate(playerTeam.getTeamID() == 1 ? "&9"
|
||||||
|
: "&c" + player.getName() + "&a has respawned!"))));
|
||||||
|
|
||||||
|
player.resetMaxHealth();
|
||||||
|
player.setHealth(player.getMaxHealth());
|
||||||
|
player.setFoodLevel(20);
|
||||||
|
|
||||||
|
match.getKit().applyToPlayer(player);
|
||||||
|
|
||||||
|
cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (respawnTime == startingTime) {
|
||||||
|
|
||||||
|
|
||||||
|
player.addPotionEffect(weakness);
|
||||||
|
player.getInventory().clear();
|
||||||
|
player.updateInventory();
|
||||||
|
|
||||||
|
player.setHealth(player.getMaxHealth());
|
||||||
|
player.setFoodLevel(20);
|
||||||
|
|
||||||
|
player.setVelocity(player.getVelocity().add(new Vector(0, 0.25, 0)));
|
||||||
|
player.setAllowFlight(true);
|
||||||
|
player.setFlying(true);
|
||||||
|
player.setVelocity(player.getVelocity().add(new Vector(0, 0.15, 0)));
|
||||||
|
player.setAllowFlight(true);
|
||||||
|
player.setFlying(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
respawnTime--;
|
||||||
|
sendTitle(player, "&a" + respawnTime, "");
|
||||||
|
player.playSound(player.getLocation(), Sound.NOTE_PLING, 0.7f, 1.0f);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user