17
17
import org .bukkit .util .Vector ;
18
18
19
19
public class Elevator {
20
+ public final String id ;
20
21
public Floor floor ;
21
22
public ChuList <ChuList <Block >> sGroups ;
22
23
public ChuList <ChuList <Block >> csGroups ;
@@ -25,14 +26,14 @@ public class Elevator {
25
26
26
27
//-- Initialization Functions
27
28
28
- public Elevator (Floor _floor , ChuList <ChuList <Block >> _sGroups , ChuList <ChuList <Block >> _csGroups ) {
29
- floor =_floor ; if (_sGroups ==null ) sGroups =new ChuList <>(); else sGroups =_sGroups ;
29
+ public Elevator (String _id , Floor _floor , ChuList <ChuList <Block >> _sGroups , ChuList <ChuList <Block >> _csGroups ) {
30
+ id = _id ; floor =_floor ; if (_sGroups ==null ) sGroups =new ChuList <>(); else sGroups =_sGroups ;
30
31
if (_csGroups ==null ) csGroups =new ChuList <>(); else csGroups =_csGroups ;
31
32
csData = new ChuList <>();
32
33
}
33
34
34
35
//Data Format: [World, Signs1 X, Signs1 Z, Signs2 X, Signs2 Z...]
35
- public static Elevator fromSaveData (java .util .List <String > data ) {
36
+ public static Elevator fromSaveData (String id , java .util .List <String > data ) {
36
37
if (data .size () < 3 || data .size () % 2 == 0 ) { Conf .err ("fromSaveData" , "Data length too small or not odd number." ); return null ; }
37
38
World w =Bukkit .getServer ().getWorld (data .getFirst ()); if (w ==null ) {
38
39
Conf .err ("fromSaveData" , "World '" +data .getFirst ()+"' does not exist!" ); return null ;
@@ -45,7 +46,7 @@ public static Elevator fromSaveData(java.util.List<String> data) {
45
46
if (sList .length !=0 ) sGroups .add (sList );
46
47
}
47
48
if (sGroups .length ==0 ) { Conf .err ("fromSaveData" , "No elevator signs found!" ); return null ; }
48
- Elevator elev = new Elevator (null , sGroups , null ); Block dSign = sGroups .getFirst ().getFirst ();
49
+ Elevator elev = new Elevator (id , null , sGroups , null ); Block dSign = sGroups .getFirst ().getFirst ();
49
50
Floor f =Floor .getFloor (w .getBlockAt (dSign .getX (), elev .getLevel (true )+2 , dSign .getZ ()), elev );
50
51
if (f ==null ) { Conf .err ("fromSaveData" , "No elevator floor detected!" ); return null ; }
51
52
elev .floor =f ; elev .rebuildCallSignList (null );
@@ -65,9 +66,11 @@ public ChuList<String> toSaveData() {
65
66
66
67
//The names Bond. James Bond
67
68
public void selfDestruct () {
68
- if (floor != null && sGroups .length >0 && sGroups .getFirst ().length >0 ) { resetElevator (true ); setDoors (0 ,false ); }
69
- floor =null ; for (ChuList <Block > c : csGroups ) for (Block s : c ) s .setType (Conf .AIR );
70
- Conf .elevators .entrySet ().remove (this );
69
+ if (floor != null && sGroups .length >0 && sGroups .getFirst ().length >0 ) {
70
+ resetElevator (); setDoors (0 ,false );
71
+ }
72
+ for (ChuList <Block > c : csGroups ) for (Block s : c ) s .setType (Conf .AIR );
73
+ floor =null ; Conf .elevators .remove (id );
71
74
}
72
75
73
76
public int yMin () { return sGroups .getFirst ().getFirst ().getY ()-2 ; }
@@ -235,7 +238,7 @@ public void updateFloorName(String flName) {
235
238
public FList getFloors () {
236
239
ChuList <Block > ds =sGroups .getFirst (); int n =0 ;
237
240
String s ,sel =Conf .rc (Conf .line (ds .getFirst (),1 ));
238
- sel =sel .substring (Conf .L_STL , sel .length ()-Conf .L_ENDL );
241
+ if (! sel . isEmpty ()) sel =sel .substring (Conf .L_STL , sel .length ()-Conf .L_ENDL );
239
242
int i =0 ,l =ds .length ; ChuList <String > fn =new ChuList <>(l );
240
243
for (; i <l ; i ++) {
241
244
fn .add (s =Conf .line (ds .get (i ),3 ));
0 commit comments