12
0

Add Spectate Command for YouTuber+ #15

Manuell gemergt
Lixfel hat 5 Commits von Spectate nach master 2020-09-26 20:27:44 +02:00 zusammengeführt
5 geänderte Dateien mit 75 neuen und 24 gelöschten Zeilen

Datei anzeigen

@ -19,6 +19,7 @@
package de.steamwar.misslewars;
import de.steamwar.misslewars.commands.CommandSpectate;
import de.steamwar.misslewars.countdowns.EndCountdown;
import de.steamwar.misslewars.countdowns.ItemCountdown;
import de.steamwar.misslewars.countdowns.WaitingCountdown;
@ -36,8 +37,7 @@ public class MissileWars extends JavaPlugin {
private static MWTeam redTeam; //red has South side -> spawns missles towards north
private static MWTeam blueTeam;
private static FightState fightState;
private static long startTime; //timestamp when the fight starts
/**
* create teams, ect
*/
@ -45,7 +45,6 @@ public class MissileWars extends JavaPlugin {
public void onLoad() {
plugin = this;
fightState = FightState.WAITING;
startTime = System.currentTimeMillis();
}
@Override
@ -62,6 +61,7 @@ public class MissileWars extends JavaPlugin {
new WaitingListener();
new FightListener();
new ChatListener();
getCommand("spectate").setExecutor(new CommandSpectate());
new WaitingCountdown();
new ItemCountdown();
@ -87,8 +87,6 @@ public class MissileWars extends JavaPlugin {
return;
fightState = FightState.FIGHTING;
StateDependent.setupState(fightState);
startTime = System.currentTimeMillis();
}
/**
@ -102,7 +100,7 @@ public class MissileWars extends JavaPlugin {
fightState = FightState.END;
StateDependent.setupState(fightState);
for(Player player : Bukkit.getOnlinePlayers()){
for(Player player : Bukkit.getOnlinePlayers()) {
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 100f, 1f);
player.setGameMode(GameMode.SPECTATOR);
}
@ -126,15 +124,15 @@ public class MissileWars extends JavaPlugin {
return fightState;
}
public static MWTeam getRedTeam(){
public static MWTeam getRedTeam() {
return redTeam;
}
public static MWTeam getBlueTeam(){
public static MWTeam getBlueTeam() {
return blueTeam;
}
public static MWTeam getTeam(Player p){
public static MWTeam getTeam(Player p) {
if(blueTeam.hasPlayer(p))
return blueTeam;
if(redTeam.hasPlayer(p))
@ -142,10 +140,17 @@ public class MissileWars extends JavaPlugin {
return null;
}
/**
* @return seconds since start
*/
public static int getFightTime() {
return Math.floorDiv((int) (System.currentTimeMillis() - startTime), 60);
public static void join(Player p) {
Review

Warum kann die Funktionalität nicht im JoinListener bleiben?

Warum kann die Funktionalität nicht im JoinListener bleiben?
Review

Ich wollte sowohl Leave als auch Join an einer weiteren Stelle benutzen, nämlich im Spectate Command, und hatte dann die Idee das in einer Klasse zu bündeln.

Ich wollte sowohl Leave als auch Join an einer weiteren Stelle benutzen, nämlich im Spectate Command, und hatte dann die Idee das in einer Klasse zu bündeln.
if (MissileWars.getRedTeam().getPlayers().size() < MissileWars.getBlueTeam().getPlayers().size()) {
Review

Wenn jemand joint, ist er immer in keinem Team

Wenn jemand joint, ist er immer in keinem Team
Review

Da hast du recht werde ich rausnehmen

Da hast du recht werde ich rausnehmen
MissileWars.getRedTeam().join(p);
} else {
MissileWars.getBlueTeam().join(p);
}
}
public static void leave(Player p) {
MissileWars.getBlueTeam().leave(p);
MissileWars.getRedTeam().leave(p);
}
}

Datei anzeigen

@ -0,0 +1,48 @@
/*
This file is a part of the SteamWar software.
Copyright (C) 2020 SteamWar.de-Serverteam
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package de.steamwar.misslewars.commands;
import de.steamwar.misslewars.MWTeam;
import de.steamwar.misslewars.MissileWars;
import org.bukkit.GameMode;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CommandSpectate implements CommandExecutor {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(!(sender instanceof Player)) return false;
Player player = (Player) sender;
MWTeam mwTeam = MissileWars.getTeam(player);
if (mwTeam == null) return false;
Review

Warum nur für YouTuber+ und nicht für alle?

Warum nur für YouTuber+ und nicht für alle?
Review

Damit es erstens kein Spotting gibt, und das Feature war mehr für aufnahmen gedacht

Damit es erstens kein Spotting gibt, und das Feature war mehr für aufnahmen gedacht
Review

Spotting dürfte in MW kein Problem sein, und warum sollten auch nicht andere Aufnahmen machen dürfen?

Spotting dürfte in MW kein Problem sein, und warum sollten auch nicht andere Aufnahmen machen dürfen?
if (mwTeam.getPlayers().size() == 1) {
player.sendMessage("§cDu bist alleine im Team, zuschauen ist daher nicht möglich.");
return false;
}
MissileWars.leave(player);
player.setGameMode(GameMode.SPECTATOR);
return true;
}
}

Datei anzeigen

@ -22,7 +22,6 @@ package de.steamwar.misslewars.listener;
import de.steamwar.misslewars.FightState;
import de.steamwar.misslewars.MissileWars;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerJoinEvent;
@ -43,9 +42,7 @@ public class ConnectionListener extends BasicListener{
@EventHandler
public void onLeave(PlayerQuitEvent e) {
Player p = e.getPlayer();
MissileWars.getBlueTeam().leave(p);
MissileWars.getRedTeam().leave(p);
MissileWars.leave(e.getPlayer());
}
}

Datei anzeigen

@ -35,10 +35,8 @@ public class JoinListener extends BasicListener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onJoin(PlayerJoinEvent e){
if(MissileWars.getRedTeam().getPlayers().size() < MissileWars.getBlueTeam().getPlayers().size())
MissileWars.getRedTeam().join(e.getPlayer());
else
MissileWars.getBlueTeam().join(e.getPlayer());
MissileWars.join(e.getPlayer());
e.setJoinMessage("§a» " + e.getPlayer().getDisplayName());
}
}

Datei anzeigen

@ -4,8 +4,11 @@ main: de.steamwar.misslewars.MissileWars
authors:
- Jan9103
- Lixfel
- YoyoNow
version: "1.0"
api-version: "1.13"
depend:
- WorldEdit
- SpigotCore
- SpigotCore
commands:
spectate: