NbtCompoundtopNbt=((ServerPlayerEntityInterface)player).getDataSaver();//alle daten der mod werden in diesem NBT Gespeichert
if(topNbt.get("multi_sleep")==null){//die daten fuer multi-sleep werden in dem nbt-tag "multi_sleep" gespeichert, der wiederum um anderen nbt gespeichert wird
topNbt.put("multi_sleep",newNbtCompound());//sollte dieser nbt-tag nicht existieren, wird ein neuer erstellt
NbtCompoundsubNbt=(NbtCompound)topNbt.get("multi_sleep");//wie bei setMultiSpawn()
spawn--;//weil der Array mit Slot 0 beginnt, rutscht alles eins auf
int[]fullArray=newint[0];
if(subNbt!=null){
fullArray=subNbt.getIntArray(String.valueOf(spawn));//holt sich den ganzen Array, mit allen gespeicherten Spawnpunkten; struktur wird etwas weiter unten erklaert
}
if(fullArray.length!=3){//sollte der Array leer oder anderweitig ungueltig sein wird er neu erstellt
publicsynchronizedvoidsetMultiSpawnVanilla(ServerPlayerEntityplayer){//bevor der Spieler respawnt, speichern wir einmal seinen Vanillaspawn ab, um ihn spaeter wieder darauf zu setzen
BlockPosposAlt=player.getSpawnPointPosition();//Spawnpunkt der Vanilla-respawn-funktion wird gespeichert
NbtCompoundsubNbt=(NbtCompound)topNbt.get("multi_sleep");//steht alles wieder in der ersten methode
if(subNbt!=null){
NbtCompoundnbt=(NbtCompound)subNbt.get("vanillaSpawnData");//hollt sich die daten
assertnbt!=null;
if(!nbt.getBoolean("used")){
nbt.putBoolean("used",true);//setzt den verwendet boolean auf true; nicht ganz perfekt, sollte ein fehler beim speichern auftreten wird es nicht nochmal versucht, speichert aber massiv an coding und leistung
subNbt.put("vanillaSpawnData",nbt);
topNbt.put("multi_sleep",subNbt);//muss den bearbeiteten nbt wieder abgespeichert (nur der boolean wurde ueberschrieben)
castedPlayer.setDataSaver(topNbt);
returnnbt;//gibt den nbt-tag an die aufrufende Methode
}else{
returnnull;
}
}else{
returnnull;
}
}
publicsynchronizedvoidsetMultiSpawnBlank(ServerPlayerEntityplayer,intspawn){//wird aufgerufen wenn das Bett dieses Spielers zerstoert wurde
NbtCompoundsubNbt=(NbtCompound)topNbt.get("multi_sleep");//alles wieder wie in der ersten Methode;
spawn--;//weil der Array mit Slot 0 beginnt, rutscht alles eins auf
int[]fullArray=newint[0];
if(subNbt!=null){
fullArray=subNbt.getIntArray(String.valueOf(spawn));//holt sich den ganzen Array, mit allen gespeicherten Spawnpunkten; struktur wird etwas weiter unten erklaert
}
fullArray[0]=77889944;//Errorcode der in deathScreenMultiButtonsC2SPacket als zerstoertes Bett rausgefiltert wird