2019-03-03 20:07:55 +01:00
|
|
|
package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.packets;
|
|
|
|
|
|
|
|
import nl.matsv.viabackwards.api.rewriters.Rewriter;
|
|
|
|
import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14;
|
|
|
|
import us.myles.ViaVersion.api.PacketWrapper;
|
|
|
|
import us.myles.ViaVersion.api.minecraft.Position;
|
|
|
|
import us.myles.ViaVersion.api.remapper.PacketHandler;
|
|
|
|
import us.myles.ViaVersion.api.remapper.PacketRemapper;
|
|
|
|
import us.myles.ViaVersion.api.type.Type;
|
|
|
|
import us.myles.ViaVersion.packets.State;
|
|
|
|
|
|
|
|
public class PlayerPackets1_14 extends Rewriter<Protocol1_13_2To1_14> {
|
|
|
|
@Override
|
|
|
|
protected void registerPackets(Protocol1_13_2To1_14 protocol) {
|
|
|
|
|
2019-03-16 13:27:36 +01:00
|
|
|
// Server Difficulty
|
|
|
|
protocol.registerOutgoing(State.PLAY, 0x0D, 0x0D, new PacketRemapper() {
|
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.UNSIGNED_BYTE);
|
|
|
|
map(Type.BOOLEAN, Type.NOTHING); // Locked
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2019-03-03 20:07:55 +01:00
|
|
|
// Open Sign Editor
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerOutgoing(State.PLAY, 0x2F, 0x2C, new PacketRemapper() { // c
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.POSITION1_14, Type.POSITION);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Query Block NBT
|
|
|
|
protocol.registerIncoming(State.PLAY, 0x01, 0x01, new PacketRemapper() {
|
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.VAR_INT);
|
|
|
|
map(Type.POSITION, Type.POSITION1_14);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Edit Book
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x0C, 0x0B, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
handler(new PacketHandler() {
|
|
|
|
@Override
|
|
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
2019-05-21 17:19:49 +02:00
|
|
|
getProtocol().getBlockItemPackets().handleItemToServer(wrapper.passthrough(Type.FLAT_VAR_INT_ITEM));
|
2019-03-03 20:07:55 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Player Digging
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x1A, 0x18, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.VAR_INT);
|
|
|
|
map(Type.POSITION, Type.POSITION1_14);
|
|
|
|
map(Type.BYTE);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Recipe Book Data
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x1D, 0x1B, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.VAR_INT);
|
|
|
|
handler(new PacketHandler() {
|
|
|
|
@Override
|
|
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
|
|
|
int type = wrapper.get(Type.VAR_INT, 0);
|
|
|
|
if (type == 0) {
|
|
|
|
wrapper.passthrough(Type.STRING);
|
|
|
|
} else if (type == 1) {
|
|
|
|
wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Book Open
|
|
|
|
wrapper.passthrough(Type.BOOLEAN); // Crafting Recipe Filter Active
|
|
|
|
wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Book Open
|
|
|
|
wrapper.passthrough(Type.BOOLEAN); // Smelting Recipe Filter Active
|
|
|
|
|
2019-06-07 14:46:48 +02:00
|
|
|
// Blast furnace/smoker data
|
|
|
|
wrapper.write(Type.BOOLEAN, false);
|
|
|
|
wrapper.write(Type.BOOLEAN, false);
|
|
|
|
wrapper.write(Type.BOOLEAN, false);
|
|
|
|
wrapper.write(Type.BOOLEAN, false);
|
2019-03-03 20:07:55 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Update Command Block
|
2019-03-16 13:27:36 +01:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x24, 0x22, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.POSITION, Type.POSITION1_14);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Update Structure Block
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x28, 0x25, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.POSITION, Type.POSITION1_14);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Update Sign
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x29, 0x26, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
map(Type.POSITION, Type.POSITION1_14);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
// Player Block Placement
|
2019-05-19 19:15:50 +02:00
|
|
|
protocol.registerIncoming(State.PLAY, 0x2C, 0x29, new PacketRemapper() {
|
2019-03-03 20:07:55 +01:00
|
|
|
@Override
|
|
|
|
public void registerMap() {
|
|
|
|
handler(new PacketHandler() {
|
|
|
|
@Override
|
|
|
|
public void handle(PacketWrapper wrapper) throws Exception {
|
|
|
|
Position position = wrapper.read(Type.POSITION);
|
|
|
|
int face = wrapper.read(Type.VAR_INT);
|
|
|
|
int hand = wrapper.read(Type.VAR_INT);
|
|
|
|
float x = wrapper.read(Type.FLOAT);
|
|
|
|
float y = wrapper.read(Type.FLOAT);
|
|
|
|
float z = wrapper.read(Type.FLOAT);
|
|
|
|
|
|
|
|
wrapper.write(Type.VAR_INT, hand);
|
|
|
|
wrapper.write(Type.POSITION1_14, position);
|
|
|
|
wrapper.write(Type.VAR_INT, face);
|
|
|
|
wrapper.write(Type.FLOAT, x);
|
|
|
|
wrapper.write(Type.FLOAT, y);
|
|
|
|
wrapper.write(Type.FLOAT, z);
|
|
|
|
wrapper.write(Type.BOOLEAN, false); // Inside block
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected void registerRewrites() {
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|