Skip to content

Commit 03e1694

Browse files
committed
Fixed '/pc stop' for preview mode.
1 parent b9d2572 commit 03e1694

4 files changed

Lines changed: 72 additions & 64 deletions

File tree

PowerCamera/src/nl/svenar/powercamera/CameraHandler.java

Lines changed: 68 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ private Location translateLinear(Location point, Location point_next, int progre
5959
if (!point.getWorld().getUID().toString().equals(point_next.getWorld().getUID().toString())) {
6060
return point_next;
6161
}
62-
62+
6363
Location new_point = new Location(point_next.getWorld(), point.getX(), point.getY(), point.getZ());
6464

6565
new_point.setX(calculateProgress(point.getX(), point_next.getX(), progress, progress_max));
@@ -80,49 +80,98 @@ public CameraHandler start() {
8080
this.previous_player_location = this.player.getLocation();
8181
this.previous_invisible = Util.isPlayerInvisible(this.player);
8282

83-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode")) player.setGameMode(GameMode.SPECTATOR);
84-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible")) player.setInvisible(true);
83+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
84+
player.setGameMode(GameMode.SPECTATOR);
85+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
86+
player.setInvisible(true);
8587

86-
runTaskTimer(this.plugin, 1L, 1L);
8788
this.plugin.player_camera_mode.put(this.player, CAMERA_MODE.VIEW);
89+
runTaskTimer(this.plugin, 1L, 1L);
8890
player.teleport(camera_path_points.get(0));
8991

90-
if (!this.player.hasPermission("powercamera.hidestartmessages") && !this.player.hasPermission("powercamera.hideallmessages")) this.player.sendMessage(this.plugin.getPluginChatPrefix() + ChatColor.GREEN + "Viewing the path of camera '" + this.camera_name + "'!");
92+
if (!this.player.hasPermission("powercamera.hidestartmessages"))
93+
this.player.sendMessage(this.plugin.getPluginChatPrefix() + ChatColor.GREEN + "Viewing the path of camera '" + this.camera_name + "'!");
9194
return this;
9295
}
9396

9497
public CameraHandler stop() {
9598
plugin.player_camera_mode.put(player, CAMERA_MODE.NONE);
96-
this.cancel();
99+
try {
100+
this.cancel();
101+
} catch (Exception e) {
102+
}
97103

98104
player.teleport(previous_player_location);
99-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode")) player.setGameMode(previous_gamemode);
100-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible")) player.setInvisible(previous_invisible);
105+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
106+
player.setGameMode(previous_gamemode);
107+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
108+
player.setInvisible(previous_invisible);
101109

102-
if (!this.player.hasPermission("powercamera.hidestartmessages") && !this.player.hasPermission("powercamera.hideallmessages")) player.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "The path of camera '" + camera_name + "' has ended!");
110+
if (!this.player.hasPermission("powercamera.hidestartmessages"))
111+
player.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "The path of camera '" + camera_name + "' has ended!");
103112
return this;
104113
}
105-
114+
106115
private Vector calculateVelocity(Location start, Location end) {
107116
return new Vector(end.getX() - start.getX(), end.getY() - start.getY(), end.getZ() - start.getZ());
108117
}
109118

110119
@Override
111120
public void run() {
112-
if (this.ticks > camera_path_points.size() - 2) {
113-
this.stop();
114-
return;
121+
if (plugin.player_camera_mode.get(player) == PowerCamera.CAMERA_MODE.VIEW) {
122+
if (this.ticks > camera_path_points.size() - 2) {
123+
this.stop();
124+
return;
125+
}
126+
127+
Location current_pos = camera_path_points.get(this.ticks);
128+
Location next_point = camera_path_points.get(this.ticks + 1);
129+
130+
player.teleport(camera_path_points.get(this.ticks));
131+
132+
player.setVelocity(calculateVelocity(current_pos, next_point));
133+
134+
this.ticks += 1;
135+
} else {
136+
if (plugin.player_camera_mode.get(player) == PowerCamera.CAMERA_MODE.NONE)
137+
return;
138+
player.teleport(previous_player_location);
139+
if (plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
140+
player.setGameMode(previous_gamemode);
141+
if (plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
142+
player.setInvisible(previous_invisible);
143+
plugin.player_camera_mode.put(player, PowerCamera.CAMERA_MODE.NONE);
144+
player.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Preview ended!");
115145
}
116146

117-
Location current_pos = camera_path_points.get(this.ticks);
118-
Location next_point = camera_path_points.get(this.ticks + 1);
147+
}
148+
149+
public CameraHandler preview(Player player, int num, int preview_time) {
150+
List<String> camera_points = plugin.getConfigCameras().getPoints(camera_name);
119151

120-
player.teleport(camera_path_points.get(this.ticks));
121-
122-
player.setVelocity(calculateVelocity(current_pos, next_point));
152+
if (num < 0)
153+
num = 0;
123154

124-
this.ticks += 1;
155+
if (num > camera_points.size() - 1)
156+
num = camera_points.size() - 1;
125157

158+
player.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Preview started of point " + (num + 1) + "!");
159+
player.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Ending in " + preview_time + " seconds.");
160+
161+
previous_gamemode = player.getGameMode();
162+
previous_player_location = player.getLocation();
163+
Location point = Util.deserializeLocation(camera_points.get(num));
164+
previous_invisible = player.isInvisible();
165+
166+
plugin.player_camera_mode.put(player, PowerCamera.CAMERA_MODE.PREVIEW);
167+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
168+
player.setGameMode(GameMode.SPECTATOR);
169+
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
170+
player.setInvisible(true);
171+
player.teleport(point);
172+
173+
runTaskLater(this.plugin, preview_time * 20);
174+
return this;
126175
}
127176

128177
}

PowerCamera/src/nl/svenar/powercamera/commands/cmd_preview.java

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package nl.svenar.powercamera.commands;
22

3-
import java.util.List;
43

54
import org.bukkit.ChatColor;
6-
import org.bukkit.GameMode;
7-
import org.bukkit.Location;
85
import org.bukkit.command.Command;
96
import org.bukkit.command.CommandSender;
107
import org.bukkit.entity.Player;
11-
import org.bukkit.scheduler.BukkitRunnable;
128

9+
import nl.svenar.powercamera.CameraHandler;
1310
import nl.svenar.powercamera.PowerCamera;
14-
import nl.svenar.powercamera.Util;
1511

1612
public class cmd_preview extends PowerCameraCommand {
1713

@@ -30,45 +26,8 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel,
3026

3127
int num = Integer.parseInt(args[0]) - 1;
3228

33-
List<String> camera_points = plugin.getConfigCameras().getPoints(camera_name);
29+
this.plugin.player_camera_handler.put(((Player) sender).getUniqueId(), new CameraHandler(plugin, (Player) sender, camera_name).generatePath().preview((Player) sender, num, preview_time));
3430

35-
if (num < 0)
36-
num = 0;
37-
38-
if (num > camera_points.size() - 1)
39-
num = camera_points.size() - 1;
40-
41-
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Preview started of point " + (num + 1) + "!");
42-
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Ending in " + preview_time + " seconds.");
43-
44-
GameMode previous_gamemode = ((Player) sender).getGameMode();
45-
Location previous_player_location = ((Player) sender).getLocation();
46-
Location point = Util.deserializeLocation(camera_points.get(num));
47-
boolean previous_invisible = ((Player) sender).isInvisible();
48-
49-
plugin.player_camera_mode.put((Player) sender, PowerCamera.CAMERA_MODE.PREVIEW);
50-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
51-
((Player) sender).setGameMode(GameMode.SPECTATOR);
52-
if (this.plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
53-
((Player) sender).setInvisible(true);
54-
((Player) sender).teleport(point);
55-
56-
new BukkitRunnable() {
57-
@Override
58-
public void run() {
59-
((Player) sender).teleport(previous_player_location);
60-
if (plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.spectator-mode"))
61-
((Player) sender).setGameMode(previous_gamemode);
62-
if (plugin.getConfigPlugin().getConfig().getBoolean("camera-effects.invisible"))
63-
((Player) sender).setInvisible(previous_invisible);
64-
plugin.player_camera_mode.put((Player) sender, PowerCamera.CAMERA_MODE.NONE);
65-
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Preview ended!");
66-
}
67-
68-
}.runTaskLater(this.plugin, preview_time * 20);
69-
70-
// plugin.getConfigCameras().camera_removepoint(camera_name, num);
71-
// sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Point removed from camera '" + camera_name + "'!");
7231
} else {
7332
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.RED + "No camera selected!");
7433
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Select a camera by doing: /" + commandLabel + " select <name>");

PowerCamera/src/nl/svenar/powercamera/commands/cmd_start.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel,
3939
if (sender.hasPermission("powercamera.cmd.start." + camera_name.toLowerCase())) {
4040
if (this.plugin.player_camera_mode.get((Player) sender) == null || this.plugin.player_camera_mode.get((Player) sender) == PowerCamera.CAMERA_MODE.NONE) {
4141
if (this.plugin.getConfigCameras().camera_exists(camera_name)) {
42-
new CameraHandler(plugin, (Player) sender, camera_name).generatePath().start();
42+
this.plugin.player_camera_handler.put(((Player) sender).getUniqueId(), new CameraHandler(plugin, (Player) sender, camera_name).generatePath().start());
4343
} else {
4444
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.RED + "Camera '" + camera_name + "' not found!");
4545
}

PowerCamera/src/nl/svenar/powercamera/commands/cmd_stop.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String commandLabel,
1919
if (sender.hasPermission("powercamera.cmd.stop")) {
2020
if (this.plugin.player_camera_mode.get((Player) sender) != null && this.plugin.player_camera_mode.get((Player) sender) != PowerCamera.CAMERA_MODE.NONE && this.plugin.player_camera_handler.get(((Player) sender).getUniqueId()) != null) {
2121
this.plugin.player_camera_handler.get(((Player) sender).getUniqueId()).stop();
22-
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Current camera stopped");
22+
if (!sender.hasPermission("powercamera.hidestartmessages")) sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.GREEN + "Current camera stopped");
2323
} else {
2424
sender.sendMessage(plugin.getPluginChatPrefix() + ChatColor.RED + "No camera active!");
2525
}

0 commit comments

Comments
 (0)