package amidst.minecraft.remote; import java.io.IOException; import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryonet.Client; import com.esotericsoftware.kryonet.Connection; import com.esotericsoftware.kryonet.Listener; import amidst.minecraft.Biome; import amidst.minecraft.IMinecraftInterface; import amidst.version.VersionInfo; public class RemoteMinecraft implements IMinecraftInterface { Client client; static NetGetBiomeDataResult currentResults = null; public RemoteMinecraft(String address) { client = new Client(65536, 65536); Kryo kryo = client.getKryo(); kryo.register(NetCreateWorldRequest.class); kryo.register(NetGetBiomeDataRequest.class); kryo.register(NetGetBiomeDataResult.class); kryo.register(NetBiome.class); kryo.register(NetBiome[].class); kryo.register(NetInfoRequest.class); kryo.register(int[].class); client.addListener(new Listener() { @Override public void received(Connection connection, Object object) { if (object instanceof NetGetBiomeDataResult) { currentResults = (NetGetBiomeDataResult)object; //Log.i("Received NetGetBiomeDataResult: " + currentResults); } else if (object instanceof NetBiome[]) { NetBiome[] biomes = (NetBiome[])object; for (int i = 0; i < biomes.length; i++) { if (biomes[i] != null) { new Biome(biomes[i].name, biomes[i].id, biomes[i].color | 0xFF000000, true); } } } } }); client.start(); try { client.connect(5000, address, 54580, 54580); } catch (IOException e) { e.printStackTrace(); } client.sendTCP(new NetInfoRequest()); } @Override public int[] getBiomeData(int x, int y, int width, int height, boolean useQuarterResolutionMap) { //Log.i("Send NetGetBiomeDataRequest"); client.sendTCP(new NetGetBiomeDataRequest(x, y, width, height, useQuarterResolutionMap)); while (currentResults == null) { try { Thread.sleep(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //Log.i("Passed to getBiomeData"); int[] data = currentResults.data; currentResults = null; return data; } @Override public void createWorld(long seed, String type, String generatorOptions) { client.sendTCP(new NetCreateWorldRequest(seed)); } @Override public VersionInfo getVersion() { return VersionInfo.unknown; } }