2017-05-10 2 views
0

현재 내 코드는 특정 섹션에서 내 구성의 모든 값을 가져온 다음 목록에서 무작위로 선택한 다른 값을 갖습니다. getRandomStringFromList(getLocationList())을 통해 임의의 결과를 얻습니다. 그래서 이것을 다음과 같이 사용합니다 :임의의 결과에서 동일한 값 사용

p.teleport(new Location(Bukkit.getWorld("world"), 
    plugin.getConfig().getInt("locations." + plugin.getRandomStringFromList(plugin.getLocationList()) + ".x"), 
    plugin.getConfig().getInt("locations." + plugin.getRandomStringFromList(plugin.getLocationList()) + ".y"), 
    plugin.getConfig().getInt("locations." + plugin.getRandomStringFromList(plugin.getLocationList()) + ".z")) 
); 

그러나 이것은 약간의 문제가 있습니다. 같은 결과를 사용하는 대신 3 가지 모두에 대해 다른 임의의 것을 얻습니다. 세 번째에서 결과를 사용하려면 모두에게 필요합니다. 어떻게해야합니까?

+1

당신은 한 줄의 코드 (디버깅에 혼란스럽지 않음)로 시작할 수 있습니다. 이렇게하면 tmp 변수에 무작위 값을 저장하여 재사용 할 수 있습니다. – AxelH

답변

1

임의의 문자열을 로컬 변수에 저장하고 p.teleport에서 사용합니다. 코드는 다음과 같이 보일 것이다 : 당신은 같은 라인에 3 개의 다른 인스턴스에서 "위치를 얻을"무작위 때문에

String randomString = plugin.getRandomStringFromList(plugin.getLocationList()); 

p.teleport(new Location(Bukkit.getWorld("world"), 
    plugin.getConfig().getInt("locations." + randomString + ".x"), 
    plugin.getConfig().getInt("locations." + randomString + ".y"), 
    plugin.getConfig().getInt("locations." + randomString + ".z"))); 
+1

당신이 라인을 다시 포맷하기 때문에 Upvote 당신이 여전히 독특한 라인에서 일어나는 많은 생각하지만, 적어도 읽을 수 – AxelH

0

이것은

당신이 할 수있는 것은 당신이 첫 번째 인스턴스의 결과를 절약 할 수 있다는 것입니다 그것을 재사용하십시오

var location = plugin.getRandomStringFromList(plugin.getLocationList()); 

p.teleport(new Location(Bukkit.getWorld("world"), 

plugin.getConfig().getInt("locations." + location + ".x"), 
plugin.getConfig().getInt("locations." + location + ".y"), 
plugin.getConfig().getInt("locations." + location + ".z")));