1
1
package cat .nyaa .nfs ;
2
2
3
3
import cat .nyaa .nfs .dataclasses .CheckArea ;
4
- import cat .nyaa .nfs .dataclasses .CheckAreaGroup ;
4
+ import cat .nyaa .nfs .dataclasses .Objective ;
5
5
import cat .nyaa .nfs .dataclasses .TimerRecords ;
6
6
import land .melon .lab .simplelanguageloader .utils .Pair ;
7
7
import org .bukkit .Location ;
17
17
import java .util .*;
18
18
19
19
public class TimerInstance implements Listener {
20
- private final CheckAreaGroup checkAreaGroup ;
20
+ private final Objective objective ;
21
21
private final TimerRecords timerRecords ;
22
22
private final PlayerRecordManager playerRecordManager ;
23
23
private final HashMap <UUID , List <Long >> playerProgress = new HashMap <>();
24
24
private final Map <UUID , Long > resetCoolDownMap = new HashMap <>();
25
25
private final DecimalFormat numberFormatter = new DecimalFormat ("#0.00" );
26
- private boolean disabled = false ;
27
26
28
27
29
- public TimerInstance (CheckAreaGroup checkAreaGroup , TimerRecords timerRecords , PlayerRecordManager playerRecordManager ) {
30
- this .checkAreaGroup = checkAreaGroup ;
28
+ public TimerInstance (Objective objective , TimerRecords timerRecords , PlayerRecordManager playerRecordManager ) {
29
+ this .objective = objective ;
31
30
this .timerRecords = timerRecords ;
32
31
this .playerRecordManager = playerRecordManager ;
33
32
}
@@ -36,7 +35,7 @@ public TimerInstance(CheckAreaGroup checkAreaGroup, TimerRecords timerRecords, P
36
35
public void onPlayerMove (PlayerMoveEvent event ) {
37
36
if (event .getTo () == null )
38
37
return ;
39
- if (checkAreaGroup .getSize () < 3 )
38
+ if (objective .getSize () < 3 )
40
39
return ;
41
40
List <Long > progress ;
42
41
if (playerProgress .containsKey (event .getPlayer ().getUniqueId ()))
@@ -45,40 +44,40 @@ public void onPlayerMove(PlayerMoveEvent event) {
45
44
progress = new ArrayList <>();
46
45
playerProgress .put (event .getPlayer ().getUniqueId (), progress );
47
46
}
48
- if (System .currentTimeMillis () - resetCoolDownMap .getOrDefault (event .getPlayer ().getUniqueId (), System .currentTimeMillis ()) > 10000
49
- && progress .size () > 0
50
- && isRelevant (event .getFrom (), event .getTo (), checkAreaGroup .getCheckArea (0 ))) {
47
+ if (System .currentTimeMillis () - resetCoolDownMap .getOrDefault (event .getPlayer ().getUniqueId (), System .currentTimeMillis ()) > 3000 // which is 1 seconds
48
+ && ! progress .isEmpty ()
49
+ && isRelevant (event .getFrom (), event .getTo (), objective .getCheckArea (0 ))) {
51
50
playerProgress .remove (event .getPlayer ().getUniqueId ());
52
51
resetCoolDownMap .put (event .getPlayer ().getUniqueId (), System .currentTimeMillis ());
53
52
}
54
- if (isRelevant (event .getFrom (), event .getTo (), checkAreaGroup .getCheckArea (progress .size ()))) {
53
+ if (isRelevant (event .getFrom (), event .getTo (), objective .getCheckArea (progress .size ()))) {
55
54
progress .add (System .currentTimeMillis ());
56
55
if (progress .size () == 1 ) {
57
56
resetCoolDownMap .put (event .getPlayer ().getUniqueId (), System .currentTimeMillis ());
58
- event .getPlayer ().sendTitle (" " , NeedForSpeed .instance .getLanguage ().firstCheckAreaSubtitle .produce (Pair .of ("groupName" , checkAreaGroup .getName ())), 0 , 20 , 5 );
59
- event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().firstCheckAreaNotice .produce (Pair .of ("groupName" , checkAreaGroup .getName ())));
57
+ event .getPlayer ().sendTitle (" " , NeedForSpeed .instance .getLanguage ().firstCheckAreaSubtitle .produce (Pair .of ("groupName" , objective .getName ())), 0 , 20 , 5 );
58
+ event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().firstCheckAreaNotice .produce (Pair .of ("groupName" , objective .getName ())));
60
59
event .getPlayer ().playSound (event .getPlayer ().getLocation (), Sound .BLOCK_NOTE_BLOCK_BELL , SoundCategory .PLAYERS , 1f , 1f );
61
60
playerProgress .put (event .getPlayer ().getUniqueId (), progress );
62
- } else if (progress .size () == checkAreaGroup .getCheckAreas ().size ()) {
61
+ } else if (progress .size () == objective .getCheckAreas ().size ()) {
63
62
var time = numberFormatter .format ((progress .get (progress .size () - 1 ) - progress .get (0 )) / 1000D );
64
- event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().finishNotice .produce (Pair .of ("groupName" , checkAreaGroup .getName ()), Pair .of ("time" , time )));
63
+ event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().finishNotice .produce (Pair .of ("groupName" , objective .getName ()), Pair .of ("time" , time )));
65
64
event .getPlayer ().playSound (event .getPlayer ().getLocation (), Sound .BLOCK_NOTE_BLOCK_BELL , SoundCategory .PLAYERS , 1f , 1f );
66
65
playerProgress .remove (event .getPlayer ().getUniqueId ());
67
- var isNewRecord = playerRecordManager .pushNewRecord (event .getPlayer ().getUniqueId (), checkAreaGroup .getUniqueID (), new ArrayList <>(progress ));
66
+ var isNewRecord = playerRecordManager .pushNewRecord (event .getPlayer ().getUniqueId (), objective .getUniqueID (), new ArrayList <>(progress ));
68
67
if (isNewRecord ) {
69
68
event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().newRecordNotice .produce ());
70
69
timerRecords .update (event .getPlayer ().getUniqueId (), progress .get (progress .size () - 1 ) - progress .get (0 ));
71
70
}
72
71
event .getPlayer ().sendTitle (" " , NeedForSpeed .instance .getLanguage ().finishSubtitle .produce (
73
- Pair .of ("groupName" , checkAreaGroup .getName ()),
72
+ Pair .of ("groupName" , objective .getName ()),
74
73
Pair .of ("time" , time ),
75
74
Pair .of ("completeTag" , isNewRecord ? NeedForSpeed .instance .getLanguage ().newRecordTag .produce () : NeedForSpeed .instance .getLanguage ().normalCompleteTag .produce ()
76
75
)), 0 , 20 , 5 );
77
76
} else {
78
77
var totalTime = numberFormatter .format ((progress .get (progress .size () - 1 ) - progress .get (0 )) / 1000D );
79
78
var partTime = numberFormatter .format ((progress .get (progress .size () - 1 ) - progress .get (progress .size () - 2 )) / 1000D );
80
- event .getPlayer ().sendTitle (" " , NeedForSpeed .instance .getLanguage ().checkAreaPassSubtitle .produce (Pair .of ("groupName" , checkAreaGroup .getName ()), Pair .of ("checkAreaNumber" , progress .size () - 1 ), Pair .of ("totalTime" , totalTime ), Pair .of ("partTime" , partTime )), 0 , 20 , 5 );
81
- event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().checkAreaPassNotice .produce (Pair .of ("groupName" , checkAreaGroup .getName ()), Pair .of ("checkAreaNumber" , progress .size () - 1 ), Pair .of ("totalTime" , totalTime ), Pair .of ("partTime" , partTime )));
79
+ event .getPlayer ().sendTitle (" " , NeedForSpeed .instance .getLanguage ().checkAreaPassSubtitle .produce (Pair .of ("groupName" , objective .getName ()), Pair .of ("checkAreaNumber" , progress .size () - 1 ), Pair .of ("totalTime" , totalTime ), Pair .of ("partTime" , partTime )), 0 , 20 , 5 );
80
+ event .getPlayer ().sendMessage (NeedForSpeed .instance .getLanguage ().checkAreaPassNotice .produce (Pair .of ("groupName" , objective .getName ()), Pair .of ("checkAreaNumber" , progress .size () - 1 ), Pair .of ("totalTime" , totalTime ), Pair .of ("partTime" , partTime )));
82
81
event .getPlayer ().playSound (event .getPlayer ().getLocation (), Sound .BLOCK_NOTE_BLOCK_BELL , SoundCategory .PLAYERS , 1f , 1f );
83
82
}
84
83
}
@@ -88,7 +87,7 @@ && isRelevant(event.getFrom(), event.getTo(), checkAreaGroup.getCheckArea(0))) {
88
87
@ EventHandler
89
88
public void onPlayerDeath (PlayerDeathEvent event ) {
90
89
if (playerProgress .containsKey (event .getEntity ().getUniqueId ()) && !playerProgress .get (event .getEntity ().getUniqueId ()).isEmpty ()) {
91
- event .getEntity ().sendTitle (NeedForSpeed .instance .getLanguage ().timerResetAuto .produce (Pair .of ("groupName" , checkAreaGroup .getName ())), " " , 0 , 20 , 10 );
90
+ event .getEntity ().sendTitle (NeedForSpeed .instance .getLanguage ().timerResetAuto .produce (Pair .of ("groupName" , objective .getName ())), " " , 0 , 20 , 10 );
92
91
playerProgress .remove (event .getEntity ().getUniqueId ());
93
92
}
94
93
}
@@ -116,12 +115,11 @@ private boolean isRelevant(Location from, Location to, CheckArea checkArea) {
116
115
}
117
116
118
117
public void disable () {
119
- disabled = true ;
120
118
HandlerList .unregisterAll (this );
121
119
}
122
120
123
- public CheckAreaGroup getCheckAreaGroup () {
124
- return checkAreaGroup ;
121
+ public Objective getObjective () {
122
+ return objective ;
125
123
}
126
124
127
125
public TimerRecords getTimerRecords () {
0 commit comments