60 lines
1.8 KiB
Java
60 lines
1.8 KiB
Java
package org.kne.cloud.network.minecraft;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.util.ArrayList;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.function.Function;
|
|
|
|
import org.kne.cloud.network.StreamBridge;
|
|
|
|
public class MinecraftStreamBridge extends StreamBridge {
|
|
private List<Function<MinecraftPacket,MinecraftPacket>>transformers=new ArrayList<Function<MinecraftPacket,MinecraftPacket>>();
|
|
public List<Function<MinecraftPacket, MinecraftPacket>> getTransformers() {
|
|
return transformers;
|
|
}
|
|
|
|
@Override
|
|
public void runTask() {
|
|
MinecraftInputStream min=(MinecraftInputStream) in;
|
|
MinecraftOutputStream mout=(MinecraftOutputStream) out;
|
|
try {
|
|
MinecraftPacket mp=null;
|
|
while ((mp=min.readPacket())!=null) {
|
|
for (Iterator<Function<MinecraftPacket, MinecraftPacket>> iterator = transformers.iterator(); iterator.hasNext();) {
|
|
Function<MinecraftPacket, MinecraftPacket> function = (Function<MinecraftPacket, MinecraftPacket>) iterator
|
|
.next();
|
|
mp=function.apply(mp);
|
|
}
|
|
mout.writePacket(mp);
|
|
mout.flush();
|
|
//System.out.println(mp);
|
|
}
|
|
//super.runTask();
|
|
} catch (IOException e) {
|
|
// TODO 自动生成的 catch 块
|
|
e.printStackTrace();
|
|
}finally {
|
|
try {
|
|
in.close();
|
|
} catch (IOException e) {
|
|
// TODO 自动生成的 catch 块
|
|
e.printStackTrace();
|
|
}
|
|
try {
|
|
out.close();
|
|
} catch (IOException e) {
|
|
// TODO 自动生成的 catch 块
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
public MinecraftStreamBridge(InputStream in,MinecraftProtocolContext cin, OutputStream out,MinecraftProtocolContext cout, boolean server) {
|
|
super(new MinecraftInputStream( in,cin), new MinecraftOutputStream( out,cout));
|
|
}
|
|
|
|
}
|