11package dev .lars .utilsmanager .features .freecam ;
22
3- import com .destroystokyo .paper .profile .PlayerProfile ;
43import dev .lars .apimanager .apis .languageAPI .LanguageAPI ;
54import dev .lars .utilsmanager .UtilsManager ;
65import dev .lars .utilsmanager .utils .Statements ;
98import net .kyori .adventure .text .Component ;
109import net .kyori .adventure .text .event .ClickEvent ;
1110import net .kyori .adventure .text .format .NamedTextColor ;
12- import org .bukkit .Bukkit ;
13- import org .bukkit .GameMode ;
14- import org .bukkit .Material ;
15- import org .bukkit .entity .ArmorStand ;
16- import org .bukkit .entity .EntityType ;
1711import org .bukkit .entity .Player ;
18- import org .bukkit .inventory .ItemStack ;
19- import org .bukkit .inventory .meta .SkullMeta ;
2012import org .jetbrains .annotations .NotNull ;
2113
2214public class FreeCamCommand implements BasicCommand {
2315
2416 @ Override
25- public void execute (@ NotNull CommandSourceStack stack , @ NotNull String [] args ) {
17+ public void execute (@ NotNull CommandSourceStack stack , @ NotNull String @ NotNull [] args ) {
2618 if (!(stack .getExecutor () instanceof Player player )) {
2719 stack .getSender ().sendMessage (Statements .getOnlyPlayers ());
2820 return ;
2921 }
30- if (!player .hasPermission ("utilsmanager.freecam" )) {
22+
23+ if (!player .hasPermission ("utilsmanager.feature.freecam" )) {
3124 player .sendMessage (Statements .getNotAllowed (player ));
3225 return ;
3326 }
34- FreecamListener freecamListener = UtilsManager .getInstance ().getFreecamListener ();
35- if (freecamListener .getFreeCamUser ().containsKey (player .getName ())) {
27+
28+ FreeCamManager freeCamManager = UtilsManager .getInstance ().getFreeCamManager ();
29+ if (!freeCamManager .enterFreeCam (player )) {
3630 if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
3731 player .sendMessage (Statements .getPrefix ().append (Component .text ("Du bist bereits im Kamera Modus!" , NamedTextColor .RED )));
3832 } else {
3933 player .sendMessage (Statements .getPrefix ().append (Component .text ("You're already in the Freecam mode!" , NamedTextColor .RED )));
4034 }
41- return ;
42- }
43- freecamListener .getFreeCamUser ().put (player .getName (), player .getLocation ());
44- player .setGameMode (GameMode .SPECTATOR );
45-
46- ArmorStand armorStand = (ArmorStand ) Bukkit .getWorld ("world" ).spawnEntity (player .getLocation (), EntityType .ARMOR_STAND );
47- armorStand .setVisible (false );
48- armorStand .setGravity (false );
49- armorStand .setMarker (true );
50- armorStand .setPersistent (false );
51- ItemStack skull = new ItemStack (Material .PLAYER_HEAD );
52- SkullMeta skullMeta = (SkullMeta ) skull .getItemMeta ();
53- if (skullMeta != null ) {
54- PlayerProfile profile = Bukkit .createProfile (player .getUniqueId (), player .getName ());
55- skullMeta .setPlayerProfile (profile );
56- skull .setItemMeta (skullMeta );
57- }
58- freecamListener .getFreeCamArmorStand ().put (player .getUniqueId (), armorStand );
59-
60- armorStand .getEquipment ().setHelmet (skull );
61- if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
62- player .sendMessage (Statements .getPrefix ().append (Component .text ("Du befindest dich nun im Kamera Modus. Benutzte " , NamedTextColor .GREEN ))
63- .append (Component .text ("/freecamleave" , NamedTextColor .AQUA ).clickEvent (ClickEvent .runCommand ("freecamleave" )))
64- .append (Component .text (" zum verlassen." , NamedTextColor .GREEN )));
65- player .sendActionBar (Component .text ("Drücke " , NamedTextColor .YELLOW )
66- .append (Component .text ("F" , NamedTextColor .AQUA ))
67- .append (Component .text (" um den Freecam-Modus zu verlassen." , NamedTextColor .YELLOW ))
68- );
6935 } else {
70- player .sendMessage (Statements .getPrefix ().append (Component .text ("You're now in the cam mode. Use " , NamedTextColor .GREEN ))
71- .append (Component .text ("/freecamleave" , NamedTextColor .AQUA ).clickEvent (ClickEvent .runCommand ("freecamleave" )))
72- .append (Component .text (" to leave." , NamedTextColor .GREEN )));
73- player .sendActionBar (Component .text ("Press " , NamedTextColor .YELLOW )
74- .append (Component .text ("F" , NamedTextColor .AQUA ))
75- .append (Component .text (" to leave the freecam mode." , NamedTextColor .YELLOW ))
76- );
36+ if (LanguageAPI .getApi ().getLanguage (player ) == 2 ) {
37+ player .sendMessage (Statements .getPrefix ().append (Component .text ("Du befindest dich nun im Kamera Modus. Benutzte " , NamedTextColor .GREEN ))
38+ .append (Component .text ("/freecamleave" , NamedTextColor .AQUA ).clickEvent (ClickEvent .runCommand ("/freecamleave" )))
39+ .append (Component .text (" zum verlassen." , NamedTextColor .GREEN )));
40+ player .sendActionBar (Component .text ("Mache einen Mausklick um den Freecam-Modus zu verlassen." , NamedTextColor .AQUA ));
41+ } else {
42+ player .sendMessage (Statements .getPrefix ().append (Component .text ("You're now in the cam mode. Use " , NamedTextColor .GREEN ))
43+ .append (Component .text ("/freecamleave" , NamedTextColor .AQUA ).clickEvent (ClickEvent .runCommand ("/freecamleave" )))
44+ .append (Component .text (" to leave." , NamedTextColor .GREEN )));
45+ player .sendActionBar (Component .text ("Click with the mouse to leave the freecam mode." , NamedTextColor .AQUA ));
46+ }
7747 }
7848 }
7949}
0 commit comments