Domanda:
Esiste uno strumento semplice per la migrazione dell'inventario in un altro mondo per tutti i giocatori su un server vanilla?
dlras2
2011-09-21 23:59:52 UTC
view on stackexchange narkive permalink

Con tutti i recenti cambiamenti della generazione del bioma, ultimamente mi sono ritrovato a generare molti nuovi mondi e una volta che 1.9 colpisce lo farò di nuovo.

Quando riavvio il mondo sul mio server Vorrei migrare gli inventari di tutti i miei giocatori nel nuovo mondo. In questo modo le persone che hanno già giocato per un bel po 'di tempo sul mio server non perderanno tutto e potranno portare oro, diamanti, biscotti, ecc. Per facilitare la transizione. Sono diffidente nel copiare semplicemente i dati del giocatore perché se include la posizione del giocatore c'è un'alta probabilità che i giocatori appaiano in posti dove non dovrebbero. (Come in un terreno solido.)

Quindi sto cercando uno strumento automatico che posso eseguire una volta prima che i giocatori accedano al nuovo mondo che copi tutto l'inventario dei giocatori e nient'altro. Nota che sto solo eseguendo un server vanilla e vorrei continuare a farlo. Se questo strumento non esiste, esiste un modo manuale per farlo?

Modifica: se ricevo una risposta sufficientemente buona e qualcuno sa come migrare manualmente lo spazio pubblicitario, potrei semplicemente codificare lo strumento da solo e metterlo da qualche parte per tutti.

IIRC, ora esiste un sistema di sicurezza per impedire alle persone di spawnare nei muri, quindi dovrebbe essere sicuro copiare tutti i dati dei giocatori. Non penso che sia possibile separare l'inventario dal resto dei dati dei giocatori, ma potresti semplicemente TP tutti a un bot che si unisce fresco al punto di spawn.
@John - Non deporre le uova in un muro va bene, ma se la tua gigantesca base sotterranea si trasformasse in un enorme sistema di grotte non illuminate - o nel mezzo di un burrone - durante la notte, non saresti molto felice.
Stai ricominciando così la base sarebbe andata comunque, giusto? Ecco perché suggerisco TP-ing. Non copiare i dati di una persona - TP tutti a questa persona - copia i dati di questa persona - TP lui a qualcuno che ha appena TP-ed a lui (e quindi spawn).
@John - Sì, la base sarebbe sparita, ma non voglio che i giocatori appaiano, muoiano e perdano tutto il loro inventario. Voglio che si generino come al solito per un nuovo mondo, ma con i loro oggetti della loro vita passata. Il metodo TP che stai suggerendo potrebbe funzionare, ma non è fattibile per più di pochi giocatori.
Hmm, hai ragione. Non avevo considerato la possibilità di un gran numero di giocatori. (ri: morire: lascia il server in modalità pacifica fino al termine del TP-ing)
@John - Peaceful non risolverebbe il problema della deposizione delle uova a cento metri sopra il fondo di un burrone ...
Cinque risposte:
klaxer
2011-09-23 23:04:12 UTC
view on stackexchange narkive permalink

player.dat è un file compresso con gzip. Se lo decomprimi, puoi trovare il campo Pos (stringa "Pos" e poi 32 byte di coordinate). Quindi, è necessario modificare quei byte.

Ho usato Perl per questo scopo:

process_file.sh

  #! / Bin / bash FILE_NAME_BASE = "$ {1% .dat}" echo "Elaborazione $ {FILE_NAME_BASE} ..." mv "$ {FILE_NAME_BASE} .dat" "$ {FILE_NAME_BASE} .gz" gunzip "$ {FILE_NAME_BASE} .gz" perl -pe 's / Pos [\ x {00} - \ x {ff}] {32} / Pos \ x {06} \ x {00} \ x {00} \ x {00} \ x {03} \ x { c0} \ x {88} \ x {c4} \ x {00} \ x {00} \ x {00} \ x {00} \ x {00} \ x {40} \ x {51} \ x { 67} \ x {ae} \ x {14} \ x {80} \ x {00} \ x {00} \ x {c0} \ x {b3} \ x {e4} \ x {80} \ x { 00} \ x {00} \ x {00} \ x {00} \ x {02} \ x {00} \ x {0a} / '< "$ {FILE_NAME_BASE}" > "$ {FILE_NAME_BASE} .out" mv "$ {FILE_NAME_BASE} .out" "$ {FILE_NAME_BASE}" gzip "$ {FILE_NAME_BASE}" mv "$ {FILE_NAME_BASE} .gz" "$ {FILE_NAME_BASE} .dat" 

process_all.sh

  #! / bin / bash find. -name "* .dat" -exec ./process_file.sh \ {\} \; echo "Fatto". 

Se esegui process_all.sh nella cartella world / players , cambia il campo Pos di tutti i giocatori a 06 00 00 00 03 c0 88 c4 00 00 00 00 00 40 51 67 ae 14 80 00 00 c0 b3 e4 80 00 00 00 00 02 00 0a (esadecimale). Ovviamente puoi modificare questi valori per spostare i giocatori in un altro punto.

Joe Dovahkiin
2011-09-24 01:18:44 UTC
view on stackexchange narkive permalink

Questo metodo è un po 'poco ortodosso, ma se riesci a farcela sarà fantastico.

Passaggio 1: chiedi a tutti i tuoi giocatori di costruire un'arca. Informali che qualsiasi persona o oggetto che non si trova nell'arca quando il mondo finirà verrà lasciato indietro. Consenti loro di portare anche il petto. Nel caso in cui l'inventario dell'utente non venga copiato correttamente, istruisci i tuoi follower - ehm, intendo i giocatori - di mettere i loro effetti personali in una cassa.

Passaggio 2: crea un nuovo mondo, utilizzando un seme del mondo con un bioma oceanico vicino allo spawn. Se l'idea di "arca" non ha successo, questo darà ai giocatori un atterraggio sicuro. Se l'arca ha successo, si aggiungerà all'effetto.

Passaggio 3: Usa il programma di editor di mappe MCEdit per copiare l'intera arca nel nuovo mondo. Puoi farlo selezionando l'area, esportandola come schema, quindi importandola nel nuovo mondo. Se hai costruito l'arca a livello del mare, dovrebbe copiarsi perfettamente in qualsiasi area oceanica vicino al tuo spawn.

Questo è semplicemente epico ...
James
2011-09-22 02:37:46 UTC
view on stackexchange narkive permalink

Copia i file manualmente, e poi c'è uno strumento a riga di comando che sembra che potresti essere in grado di impostare per passare attraverso ogni file e cambiare il punto di spawn dei giocatori, nonché spostare quel giocatore IN quel punto di spawn.

Non ho testato personalmente questo strumento, ma il suo elenco di funzionalità si adatta alla tua situazione: http://www.electricmonk.nl/Programmings/MCPlayerEdit

Spero che questo aiuti.

Shangz
2011-09-22 16:44:35 UTC
view on stackexchange narkive permalink

Nel file world / player puoi copiare e incollare i file .dat nel tuo nuovo file world player. In questo modo sarai in grado di mantenere l'inventario, ma non sono così sicuro che i tuoi giocatori spawneranno allo spawn perché le loro ultime coordinate sono registrate.

Ken
2011-09-22 20:03:46 UTC
view on stackexchange narkive permalink

Se stai usando bukkit, puoi usare multiverse e stargates per collegare le tue mappe / mondi e consentire (dire?) alle persone di spostare le proprie cose.

Questa è la soluzione che sto usando e prenderò un altro plug-in (non ricordo il nome) per modificare i blocchi di vetro e altri oggetti fragili per far cadere il proprio oggetto in modo che le persone possano spostare anche parti delle loro strutture .

edit

Vedo che hai detto che stai utilizzando un server vanilla, ma le mappe sono compatibili tra vanilla e bukkit quindi potrebbe essere utile per te usa bukkit per una settimana per consentire alle persone di spostare i loro oggetti.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...