2014-12-17 2 views
0

에 사망 플레이어 저장하는 방법 :대부분이 나는 다음의 각 YML 파일을 별도의 저장 PlayerDeathEvent의 방법이 bukkit

* 플레이어가 처치 (매번 플레이어가 죽으면, 그것은 추가 할 것을 A) 살인자의 파일에 위와 같은

* 플레이어의 죽음을 (죽여도 죽은의 파일에 죽음)

를 추가하지만 다섯 명 최고의 선수를 검색 할 수있는 모든 파일을 검사하는 방법이 필요합니다 가장 높은 "킬 (Kills)"값을 가지기 때문에 명령을 입력 할 때마다 모든 파일을 검사하는 것이 꽤 무거울 것이라고 생각합니다.

"킬"이 가장 높은 플레이어를 누가 더 잘 확인할 수 있습니까?

질문을 명확히 할 필요가 있으면 알려 주시기 바랍니다.

+0

왜 간단한 RDBS를 사용하지 않습니까? – mavarazy

답변

1

가장 좋은 방법은 플레이어의 모든 데이터 (플레이어의 UUID, 그의 살인 등)를 포함하는 새로운 클래스를 만들고 config.yml에 저장된 플레이어의 통계를 List<PlayerKills>으로 유지하는 것입니다. 서버가 실행 중일 때는로드 된 상태로 유지하십시오. 그런 다음 필요할 때마다 목록의 모든 인스턴스를 살펴보고 해당 항목 수만큼 상위 5 개를 수집합니다.

public class PlayerKills { 
private UUID playerUUID; 
private int kills; 

public PlayerKills(UUID uuid) { 
    this.playerUUID = uuid; 
} 
public void addkill() { 
    this.kills++; 
} 
public int getKills() { 
    return this.kills; 
} 
} 

또 다른 방법은, MySQL 데이터베이스를 사용하고, 간단한 SQL 쿼리와 함께 상위 5 플레이어를 수집하는 것입니다 : 여기

은 예입니다. 이는 서버 네트워크에서 작동하는 장점이 있지만 외부 플러그인/라이브러리와 MySQL 데이터베이스가 필요하다는 단점이 있습니다.

+0

전체 목록을 어떻게 저장합니까? – Kerooker

+0

@Kerooker 사용자 정의 클래스 목록을 작성하려면 PlayerKills 클래스가 ConfigurationSerializable 인터페이스를 구현하도록해야합니다. 자세한 내용은 다음을 참조하십시오. http://wiki.bukkit.org/Configuration_API_Reference#Serializing_and_Deserializing_Objects – Victor2748