mirror of
https://github.com/tanyaofei/minecraft-fakeplayer.git
synced 2025-09-14 11:16:46 +08:00
Provide a FakePipeline
This commit is contained in:
parent
a06e1d9d19
commit
cdd31f646d
@ -70,6 +70,13 @@
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.netty</groupId>
|
||||
<artifactId>netty-transport</artifactId>
|
||||
<version>4.1.82.Final</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -1,4 +1,4 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R1.network;
|
||||
package io.github.hello09x.fakeplayer.core.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@ -11,6 +11,7 @@ import java.net.SocketAddress;
|
||||
public class FakeChannel extends AbstractChannel {
|
||||
private final static EventLoop EVENT_LOOP = new DefaultEventLoop();
|
||||
private final ChannelConfig config = new DefaultChannelConfig(this);
|
||||
private final ChannelPipeline pipeline = new FakeChannelPipeline(this);
|
||||
private final InetAddress address;
|
||||
|
||||
public FakeChannel(@Nullable Channel parent, @NotNull InetAddress address) {
|
||||
@ -66,6 +67,11 @@ public class FakeChannel extends AbstractChannel {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline pipeline() {
|
||||
return pipeline;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress localAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
@ -0,0 +1,371 @@
|
||||
package io.github.hello09x.fakeplayer.core.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import io.netty.util.ReferenceCountUtil;
|
||||
import io.netty.util.concurrent.EventExecutorGroup;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.net.SocketAddress;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author tanyaofei
|
||||
* @since 2024/8/8
|
||||
**/
|
||||
public class FakeChannelPipeline implements ChannelPipeline {
|
||||
|
||||
private final Channel channel;
|
||||
|
||||
public FakeChannelPipeline(Channel channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addFirst(String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addFirst(EventExecutorGroup group, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addLast(String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addLast(EventExecutorGroup group, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addBefore(String baseName, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addBefore(EventExecutorGroup group, String baseName, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addAfter(String baseName, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addAfter(EventExecutorGroup group, String baseName, String name, ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addFirst(ChannelHandler... handlers) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addFirst(EventExecutorGroup group, ChannelHandler... handlers) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addLast(ChannelHandler... handlers) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline addLast(EventExecutorGroup group, ChannelHandler... handlers) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline remove(ChannelHandler handler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler remove(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends ChannelHandler> T remove(Class<T> handlerType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler removeFirst() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler removeLast() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline replace(ChannelHandler oldHandler, String newName, ChannelHandler newHandler) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler replace(String oldName, String newName, ChannelHandler newHandler) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends ChannelHandler> T replace(Class<T> oldHandlerType, String newName, ChannelHandler newHandler) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler first() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandlerContext firstContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler last() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandlerContext lastContext() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler get(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends ChannelHandler> T get(Class<T> handlerType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandlerContext context(ChannelHandler handler) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandlerContext context(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandlerContext context(Class<? extends ChannelHandler> handlerType) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Channel channel() {
|
||||
return this.channel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> names() {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, ChannelHandler> toMap() {
|
||||
return Map.of();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelRegistered() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelUnregistered() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelActive() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelInactive() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireExceptionCaught(Throwable cause) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireUserEventTriggered(Object event) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelRead(Object msg) {
|
||||
ReferenceCountUtil.release(msg);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelReadComplete() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline fireChannelWritabilityChanged() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture bind(SocketAddress localAddress) {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture connect(SocketAddress remoteAddress) {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress) {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture disconnect() {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture close() {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture deregister() {
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture bind(SocketAddress localAddress, ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture connect(SocketAddress remoteAddress, ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture disconnect(ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture close(ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture deregister(ChannelPromise promise) {
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelOutboundInvoker read() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture write(Object msg) {
|
||||
ReferenceCountUtil.release(msg);
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture write(Object msg, ChannelPromise promise) {
|
||||
ReferenceCountUtil.release(msg);
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPipeline flush() {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture writeAndFlush(Object msg, ChannelPromise promise) {
|
||||
ReferenceCountUtil.release(msg);
|
||||
promise.setSuccess();
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture writeAndFlush(Object msg) {
|
||||
ReferenceCountUtil.release(msg);
|
||||
return newSucceededFuture();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPromise newPromise() {
|
||||
return new DefaultChannelPromise(this.channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelProgressivePromise newProgressivePromise() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture newSucceededFuture() {
|
||||
var promise = new DefaultChannelPromise(this.channel);
|
||||
promise.setSuccess(null);
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelFuture newFailedFuture(Throwable cause) {
|
||||
var promise = new DefaultChannelPromise(this.channel);
|
||||
promise.setFailure(cause);
|
||||
return promise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPromise voidPromise() {
|
||||
var promise = new DefaultChannelPromise(this.channel);
|
||||
promise.setSuccess(null);
|
||||
return promise;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Iterator<Map.Entry<String, ChannelHandler>> iterator() {
|
||||
return Collections.<String, ChannelHandler>emptyMap().entrySet().iterator();
|
||||
}
|
||||
|
||||
}
|
@ -99,6 +99,11 @@
|
||||
<phase>package</phase>
|
||||
<configuration>
|
||||
<target>
|
||||
<copy tofile="../server-1.20.1/plugins/fakeplayer.jar">
|
||||
<fileset dir="${project.build.directory}">
|
||||
<include name="fakeplayer-${revision}.jar"/>
|
||||
</fileset>
|
||||
</copy>
|
||||
<copy tofile="../server-1.20.2/plugins/fakeplayer.jar">
|
||||
<fileset dir="${project.build.directory}">
|
||||
<include name="fakeplayer-${revision}.jar"/>
|
||||
|
@ -1,11 +1,10 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R1.network;
|
||||
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.github.hello09x.fakeplayer.core.network.FakeChannel;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.PacketSendListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.PacketFlow;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@ -15,9 +14,6 @@ public class FakeConnection extends Connection {
|
||||
super(PacketFlow.SERVERBOUND);
|
||||
this.channel = new FakeChannel(null, address);
|
||||
this.address = this.channel.remoteAddress();
|
||||
if (Bukkit.getServer().getName().contains("Leaves")) {
|
||||
this.channel.pipeline().addLast("packet_handler", new ChannelDuplexHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,6 +31,5 @@ public class FakeConnection extends Connection {
|
||||
|
||||
@Override
|
||||
public void handleDisconnection() {
|
||||
super.handleDisconnection();
|
||||
}
|
||||
}
|
@ -1,101 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R2.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public class FakeChannel extends AbstractChannel {
|
||||
|
||||
private final static EventLoop EVENT_LOOP = new DefaultEventLoop();
|
||||
|
||||
private final ChannelConfig config = new DefaultChannelConfig(this);
|
||||
|
||||
private final InetAddress address;
|
||||
|
||||
public FakeChannel(@Nullable Channel parent, @NotNull InetAddress address) {
|
||||
super(parent);
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelConfig config() {
|
||||
config.setAutoRead(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBeginRead() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBind(SocketAddress arg0) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doClose() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doDisconnect() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWrite(ChannelOutboundBuffer in) throws Exception {
|
||||
for (;;) {
|
||||
Object msg = in.current();
|
||||
if (msg == null) {
|
||||
break;
|
||||
}
|
||||
in.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isCompatible(EventLoop arg0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress localAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelMetadata metadata() {
|
||||
return new ChannelMetadata(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractUnsafe newUnsafe() {
|
||||
return new AbstractUnsafe() {
|
||||
@Override
|
||||
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {
|
||||
safeSetSuccess(promise);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress remoteAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventLoop eventLoop() {
|
||||
return EVENT_LOOP;
|
||||
}
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R2.network;
|
||||
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.github.hello09x.fakeplayer.core.network.FakeChannel;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.ConnectionProtocol;
|
||||
import net.minecraft.network.PacketSendListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.PacketFlow;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@ -18,9 +17,6 @@ public class FakeConnection extends Connection {
|
||||
this.channel = new FakeChannel(null, address);
|
||||
this.address = this.channel.remoteAddress();
|
||||
Connection.configureSerialization(this.channel.pipeline(), PacketFlow.SERVERBOUND, null);
|
||||
if (Bukkit.getServer().getName().contains("Leaves")) {
|
||||
this.channel.pipeline().addLast("packet_handler", new ChannelDuplexHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,100 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R3_R4.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public class FakeChannel extends AbstractChannel {
|
||||
|
||||
private final static EventLoop EVENT_LOOP = new DefaultEventLoop();
|
||||
private final ChannelConfig config = new DefaultChannelConfig(this);
|
||||
|
||||
private final InetAddress address;
|
||||
|
||||
public FakeChannel(@Nullable Channel parent, @NotNull InetAddress address) {
|
||||
super(parent);
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelConfig config() {
|
||||
config.setAutoRead(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBeginRead() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBind(SocketAddress arg0) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doClose() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doDisconnect() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWrite(ChannelOutboundBuffer in) throws Exception {
|
||||
for (;;) {
|
||||
Object msg = in.current();
|
||||
if (msg == null) {
|
||||
break;
|
||||
}
|
||||
in.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isCompatible(EventLoop arg0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress localAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelMetadata metadata() {
|
||||
return new ChannelMetadata(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractUnsafe newUnsafe() {
|
||||
return new AbstractUnsafe() {
|
||||
@Override
|
||||
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {
|
||||
safeSetSuccess(promise);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress remoteAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventLoop eventLoop() {
|
||||
return EVENT_LOOP;
|
||||
}
|
||||
}
|
@ -1,12 +1,11 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R3_R4.network;
|
||||
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.github.hello09x.fakeplayer.core.network.FakeChannel;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.ConnectionProtocol;
|
||||
import net.minecraft.network.PacketSendListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.PacketFlow;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@ -18,9 +17,6 @@ public class FakeConnection extends Connection {
|
||||
this.channel = new FakeChannel(null, address);
|
||||
this.address = this.channel.remoteAddress();
|
||||
Connection.configureSerialization(this.channel.pipeline(), PacketFlow.SERVERBOUND, null);
|
||||
if (Bukkit.getServer().getName().contains("Leaves")) {
|
||||
this.channel.pipeline().addLast("packet_handler", new ChannelDuplexHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,100 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R5_R6.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public class FakeChannel extends AbstractChannel {
|
||||
|
||||
private final static EventLoop EVENT_LOOP = new DefaultEventLoop();
|
||||
private final ChannelConfig config = new DefaultChannelConfig(this);
|
||||
|
||||
private final InetAddress address;
|
||||
|
||||
public FakeChannel(@Nullable Channel parent, @NotNull InetAddress address) {
|
||||
super(parent);
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelConfig config() {
|
||||
config.setAutoRead(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBeginRead() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBind(SocketAddress arg0) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doClose() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doDisconnect() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWrite(ChannelOutboundBuffer in) throws Exception {
|
||||
for (;;) {
|
||||
Object msg = in.current();
|
||||
if (msg == null) {
|
||||
break;
|
||||
}
|
||||
in.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isCompatible(EventLoop arg0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress localAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelMetadata metadata() {
|
||||
return new ChannelMetadata(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractUnsafe newUnsafe() {
|
||||
return new AbstractUnsafe() {
|
||||
@Override
|
||||
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {
|
||||
safeSetSuccess(promise);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress remoteAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventLoop eventLoop() {
|
||||
return EVENT_LOOP;
|
||||
}
|
||||
}
|
@ -1,11 +1,10 @@
|
||||
package io.github.hello09x.fakeplayer.v1_20_R5_R6.network;
|
||||
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.github.hello09x.fakeplayer.core.network.FakeChannel;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.PacketSendListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.PacketFlow;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.net.InetAddress;
|
||||
@ -17,9 +16,6 @@ public class FakeConnection extends Connection {
|
||||
this.channel = new FakeChannel(null, address);
|
||||
this.address = this.channel.remoteAddress();
|
||||
Connection.configureSerialization(this.channel.pipeline(), PacketFlow.SERVERBOUND, false, null);
|
||||
if (Bukkit.getServer().getName().contains("Leaves")) {
|
||||
this.channel.pipeline().addLast("packet_handler", new ChannelDuplexHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,99 +0,0 @@
|
||||
package io.github.hello09x.fakeplayer.v1_21_R1.network;
|
||||
|
||||
import io.netty.channel.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.SocketAddress;
|
||||
|
||||
public class FakeChannel extends AbstractChannel {
|
||||
private final static EventLoop EVENT_LOOP = new DefaultEventLoop();
|
||||
private final ChannelConfig config = new DefaultChannelConfig(this);
|
||||
|
||||
private final InetAddress address;
|
||||
|
||||
public FakeChannel(@Nullable Channel parent, @NotNull InetAddress address) {
|
||||
super(parent);
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelConfig config() {
|
||||
config.setAutoRead(true);
|
||||
return config;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBeginRead() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doBind(SocketAddress arg0) throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doClose() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doDisconnect() throws Exception {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWrite(ChannelOutboundBuffer in) throws Exception {
|
||||
for (;;) {
|
||||
Object msg = in.current();
|
||||
if (msg == null) {
|
||||
break;
|
||||
}
|
||||
in.remove();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isCompatible(EventLoop arg0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress localAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelMetadata metadata() {
|
||||
return new ChannelMetadata(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractUnsafe newUnsafe() {
|
||||
return new AbstractUnsafe() {
|
||||
@Override
|
||||
public void connect(SocketAddress remoteAddress, SocketAddress localAddress, ChannelPromise promise) {
|
||||
safeSetSuccess(promise);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SocketAddress remoteAddress0() {
|
||||
return new InetSocketAddress(address, 25565);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventLoop eventLoop() {
|
||||
return EVENT_LOOP;
|
||||
}
|
||||
}
|
@ -2,12 +2,11 @@ package io.github.hello09x.fakeplayer.v1_21_R1.network;
|
||||
|
||||
import io.github.hello09x.fakeplayer.core.Main;
|
||||
import io.github.hello09x.fakeplayer.core.manager.FakeplayerManager;
|
||||
import io.netty.channel.ChannelDuplexHandler;
|
||||
import io.github.hello09x.fakeplayer.core.network.FakeChannel;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.PacketSendListener;
|
||||
import net.minecraft.network.protocol.Packet;
|
||||
import net.minecraft.network.protocol.PacketFlow;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@ -24,9 +23,6 @@ public class FakeConnection extends Connection {
|
||||
this.channel = new FakeChannel(null, address);
|
||||
this.address = this.channel.remoteAddress();
|
||||
Connection.configureSerialization(this.channel.pipeline(), PacketFlow.SERVERBOUND, false, null);
|
||||
if (Bukkit.getServer().getName().contains("Leaves")) {
|
||||
this.channel.pipeline().addLast("packet_handler", new ChannelDuplexHandler());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -44,9 +40,4 @@ public class FakeConnection extends Connection {
|
||||
|
||||
}
|
||||
|
||||
// public void setProtocolAttr(@NotNull ConnectionProtocol protocol) {
|
||||
// this.channel.attr(Connection.ATTRIBUTE_SERVERBOUND_PROTOCOL).set(protocol.codec(PacketFlow.SERVERBOUND));
|
||||
// this.channel.attr(Connection.ATTRIBUTE_CLIENTBOUND_PROTOCOL).set(protocol.codec(PacketFlow.CLIENTBOUND));
|
||||
// }
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user