2014-01-19 8 views
0

Bukkit 플러그인에서 MinecraftForge 메서드로 작업하려고합니다. 여기 Minecraft Forge Method 데이터 형식

지금까지 내 코드입니다 :

NetworkManager ic2 = new ic2.core.IC2().network; 
DimensionManager dmm = new net.minecraftforge.common.DimensionManager(); 
T worlds = dmm.getWorlds(); // What Data Type? 

문제는 getWorlds() 방법은 내가 아무 생각이 없기 때문에 그래서 지금은 붙어 오전, 일식 인식 할 수없는 in[]의 데이터 유형이 될 것이다 세상을 변화시킬 데이터 유형.

이 좀 더 파고를했고, 내가 사용하고 단조 버전이 발견

public static in[] getWorlds() { 
    return (in[]) worlds.values().toArray(new in[worlds.size()]); 
} 

을 사용하고 포지의 버전에 getWorlds() 방법이다.

import in; 

그리고 클래스 목록에 "in"클래스가 있습니다. 하지만 이클립스에서는 목록에 나타나지 않습니다. 그것은 내가 디 컴파일 한 것과 같은 항아리입니다.

+0

[DimensionManager 소스 코드] (https://github.com/Kiniamaro/MinecraftMod/blob/master/src/minecraft/net/minecraftforge/common/DimensionManager.java)를 보면 ' DimensionManager # getWorlds'는 'WorldServer []'를 반환합니다 – BackSlash

+0

그래서 데이터 유형이 "WorldServer"여야합니까? 그 중 하나가 작동하지 않습니다 .. – Mattigins

+0

아니, 데이터 형식은'WorldServer []'이어야합니다 – BackSlash

답변

2

Forge 라이브러리의 getWorldsin[]을 반환하는 이유는 모장의 난독 화 때문입니다. Forge는 모든 단일 참조를 in에서 WorldServer으로 수정할 수 없습니다. 너무 복잡하기 때문입니다.

Minecraft에서 사용되는 대부분의 클래스는 기본 패키지의 일부이므로 직접 가져올 수 없습니다.

MOD는 출력 바이트 코드에서 참조를 변환하여 난독 화 된 클래스를 참조하는 특수 모듈을 사용하기 때문에이 제한을 초과 할 수 있습니다.

Forge 컴파일러를 사용하여 Bukkit에 대해 코드를 컴파일해야합니다.