Skip to content

Commit 7d4a370

Browse files
committed
update
1 parent a95a5a8 commit 7d4a370

File tree

3 files changed

+128
-27
lines changed

3 files changed

+128
-27
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package cn.clexus.targetTracker.events;
2+
3+
import cn.clexus.targetTracker.points.Point;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
6+
import org.bukkit.event.Event;
7+
import org.bukkit.event.HandlerList;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
public class TrackStartEvent extends Event implements Cancellable {
11+
private static final HandlerList handlers = new HandlerList();
12+
private boolean cancelled;
13+
private Player player;
14+
private Point point;
15+
16+
@Override
17+
public boolean isCancelled() {
18+
return cancelled;
19+
}
20+
21+
@Override
22+
public void setCancelled(boolean cancel) {
23+
this.cancelled = cancel;
24+
}
25+
26+
@Override
27+
public @NotNull HandlerList getHandlers() {
28+
return handlers;
29+
}
30+
31+
public Point getPoint() {
32+
return point;
33+
}
34+
35+
public Player getPlayer() {
36+
return player;
37+
}
38+
39+
public void setPoint(Point point) {
40+
this.point = point;
41+
}
42+
43+
public TrackStartEvent(Player player, Point point) {
44+
this.player = player;
45+
this.point = point;
46+
}
47+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.clexus.targetTracker.events;
2+
3+
import cn.clexus.targetTracker.points.Point;
4+
import org.bukkit.entity.Player;
5+
import org.bukkit.event.Cancellable;
6+
import org.bukkit.event.Event;
7+
import org.bukkit.event.HandlerList;
8+
import org.jetbrains.annotations.NotNull;
9+
10+
public class TrackStopEvent extends Event implements Cancellable {
11+
private static final HandlerList handlers = new HandlerList();
12+
public @NotNull HandlerList getHandlers() {
13+
return handlers;
14+
}
15+
private boolean cancelled;
16+
private Player player;
17+
private Point point;
18+
private boolean trigger;
19+
20+
@Override
21+
public boolean isCancelled() {
22+
return cancelled;
23+
}
24+
25+
@Override
26+
public void setCancelled(boolean cancel) {
27+
this.cancelled = cancel;
28+
}
29+
public TrackStopEvent(Player player, Point point, boolean trigger) {
30+
this.player = player;
31+
this.point = point;
32+
this.trigger = trigger;
33+
}
34+
35+
public Player getPlayer() {
36+
return player;
37+
}
38+
39+
public Point getPoint() {
40+
return point;
41+
}
42+
43+
public boolean isTrigger() {
44+
return trigger;
45+
}
46+
}

src/main/java/cn/clexus/targetTracker/managers/PointsManager.java

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cn.clexus.targetTracker.managers;
22
import cn.clexus.targetTracker.TargetTracker;
3+
import cn.clexus.targetTracker.events.TrackStartEvent;
4+
import cn.clexus.targetTracker.events.TrackStopEvent;
35
import cn.clexus.targetTracker.utils.I18n;
46
import cn.clexus.targetTracker.utils.ParseUtil;
57
import com.github.retrooper.packetevents.protocol.world.Location;
@@ -51,36 +53,42 @@ public int getTargetEntityId(Point point, Player player) {
5153
return -1;
5254
}
5355
public boolean startTrack(Point point, Player player) {
54-
if(activeTracks.containsKey(player.getUniqueId()+":"+point.getId())) {
55-
return false;
56-
}
57-
Location playerLocation = new Location(player.getX(), player.getY(), player.getZ(), player.getYaw(), player.getPitch());
58-
Location targetLocation = new Location(
59-
point.getTarget().getLocation().getX(),
60-
point.getTarget().getLocation().getY(),
61-
point.getTarget().getLocation().getZ(),
62-
0,
63-
0
64-
);
65-
double initialDistance = point.getMark().getDistance();
66-
67-
int markEntityId = Bukkit.getUnsafe().nextEntityId();
68-
int targetEntityId = Bukkit.getUnsafe().nextEntityId();
69-
70-
sendSpawnPacket(player, markEntityId, playerLocation, point.getMark().getScale());
71-
sendSpawnPacket(player, targetEntityId, targetLocation, point.getTarget().getScale());
72-
73-
int distance = (int) player.getLocation().distance(point.getTarget().getLocation());
74-
sendTextChangePacket(player, markEntityId, point.getMark().getDisplay(), distance);
75-
sendTextChangePacket(player, targetEntityId, point.getTarget().getDisplay(), distance);
76-
77-
TrackTask task = new TrackTask(player, point, markEntityId, targetEntityId, point.getTarget().getLocation(), initialDistance);
78-
task.runTaskTimer(TargetTracker.getInstance(), 0L, 1L);
79-
activeTracks.put(player.getUniqueId()+":"+point.getId(), task);
80-
return true;
56+
TrackStartEvent event = new TrackStartEvent(player, point);
57+
Bukkit.getPluginManager().callEvent(event);
58+
if(event.isCancelled()) {
59+
return false;
60+
}
61+
if(activeTracks.containsKey(player.getUniqueId()+":"+point.getId())) {
62+
return false;
63+
}
64+
Location playerLocation = new Location(player.getX(), player.getY(), player.getZ(), player.getYaw(), player.getPitch());
65+
Location targetLocation = new Location(
66+
point.getTarget().getLocation().getX(),
67+
point.getTarget().getLocation().getY(),
68+
point.getTarget().getLocation().getZ(),
69+
0,
70+
0
71+
);
72+
double initialDistance = point.getMark().getDistance();
73+
int markEntityId = Bukkit.getUnsafe().nextEntityId();
74+
int targetEntityId = Bukkit.getUnsafe().nextEntityId();
75+
sendSpawnPacket(player, markEntityId, playerLocation, point.getMark().getScale());
76+
sendSpawnPacket(player, targetEntityId, targetLocation, point.getTarget().getScale());
77+
int distance = (int) player.getLocation().distance(point.getTarget().getLocation());
78+
sendTextChangePacket(player, markEntityId, point.getMark().getDisplay(), distance);
79+
sendTextChangePacket(player, targetEntityId, point.getTarget().getDisplay(), distance);
80+
TrackTask task = new TrackTask(player, point, markEntityId, targetEntityId, point.getTarget().getLocation(), initialDistance);
81+
task.runTaskTimer(TargetTracker.getInstance(), 0L, 1L);
82+
activeTracks.put(player.getUniqueId()+":"+point.getId(), task);
83+
return true;
8184
}
8285

8386
public boolean stopTrack(Player player, Point point, boolean trigger) {
87+
TrackStopEvent event = new TrackStopEvent(player, point, trigger);
88+
Bukkit.getPluginManager().callEvent(event);
89+
if(event.isCancelled()) {
90+
return false;
91+
}
8492
TrackTask task = activeTracks.remove(player.getUniqueId()+":"+point.getId());
8593
if (task != null) {
8694
task.cancel();

0 commit comments

Comments
 (0)