Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-27 08:30:09 +01:00
Remove more debug code
Correct casting detector in packet wrapper. Re-order some packets Implement Plugin Message Transformers Implement Sound Transformer Implement Block Entity Transformer
Dieser Commit ist enthalten in:
Ursprung
ccda9f11c8
Commit
7a98cdd28f
@ -94,12 +94,12 @@ public class PacketWrapper {
|
||||
try {
|
||||
Object value = packetValue.getValue();
|
||||
if (value != null) {
|
||||
if (!value.getClass().equals(packetValue.getKey().getOutputClass())) {
|
||||
if (!packetValue.getKey().getOutputClass().isAssignableFrom(value.getClass())) {
|
||||
// attempt conversion
|
||||
if (packetValue.getKey() instanceof TypeConverter) {
|
||||
value = ((TypeConverter) packetValue.getKey()).from(value);
|
||||
} else {
|
||||
System.out.println("Possible type mismatch: " + value.getClass().getName() + " -> " + packetValue.getKey().getTypeName());
|
||||
System.out.println("Possible type mismatch: " + value.getClass().getName() + " -> " + packetValue.getKey().getOutputClass());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -135,7 +135,6 @@ public class MetadataRewriter {
|
||||
list.remove(entry);
|
||||
break;
|
||||
}
|
||||
System.out.println("List Item: " + entry.getType().getTypeName() + " - " + entry.getValue() + " New Type: " + metaIndex.getNewType());
|
||||
} else {
|
||||
list.remove(entry);
|
||||
}
|
||||
|
@ -82,7 +82,6 @@ public class EntityPackets {
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
System.out.println("handling holo for tp");
|
||||
int entityID = wrapper.get(Type.VAR_INT, 0);
|
||||
if (((ViaVersionPlugin) ViaVersion.getInstance()).isHologramPatch()) {
|
||||
EntityTracker tracker = wrapper.user().get(EntityTracker.class);
|
||||
@ -116,7 +115,6 @@ public class EntityPackets {
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
System.out.println("look move");
|
||||
int entityID = wrapper.get(Type.VAR_INT, 0);
|
||||
if (((ViaVersionPlugin) ViaVersion.getInstance()).isHologramPatch()) {
|
||||
EntityTracker tracker = wrapper.user().get(EntityTracker.class);
|
||||
|
@ -291,11 +291,6 @@ public class InventoryPackets {
|
||||
}
|
||||
});
|
||||
|
||||
/* Packets which do not have any field remapping or handlers */
|
||||
|
||||
protocol.registerIncoming(State.PLAY, 0x0F, 0x05); // Confirm Transaction Packet
|
||||
protocol.registerIncoming(State.PLAY, 0x11, 0x06); // Enchant Item Packet
|
||||
|
||||
// Held Item Change Packet
|
||||
protocol.registerIncoming(State.PLAY, 0x09, 0x17, new PacketRemapper() {
|
||||
@Override
|
||||
@ -313,5 +308,12 @@ public class InventoryPackets {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* Packets which do not have any field remapping or handlers */
|
||||
|
||||
protocol.registerIncoming(State.PLAY, 0x0F, 0x05); // Confirm Transaction Packet
|
||||
protocol.registerIncoming(State.PLAY, 0x11, 0x06); // Enchant Item Packet
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -221,6 +221,23 @@ public class PlayerPackets {
|
||||
});
|
||||
}
|
||||
});
|
||||
// Packet Plugin Message Outgoing
|
||||
protocol.registerOutgoing(State.PLAY, 0x3F, 0x18, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // 0 - Channel Name
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
String name = wrapper.get(Type.STRING, 0);
|
||||
if(name.equalsIgnoreCase("MC|BOpen")){
|
||||
wrapper.passthrough(Type.REMAINING_BYTES); // This is so ugly, :(
|
||||
wrapper.write(Type.VAR_INT, 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* Packets which do not have any field remapping or handlers */
|
||||
|
||||
@ -359,6 +376,39 @@ public class PlayerPackets {
|
||||
}
|
||||
});
|
||||
|
||||
// Packet Plugin Message Incoming
|
||||
protocol.registerIncoming(State.PLAY, 0x17, 0x09, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.STRING); // 0 - Channel Name
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
String name = wrapper.get(Type.STRING, 0);
|
||||
if(name.equalsIgnoreCase("MC|BSign")){
|
||||
Item item = wrapper.passthrough(Type.ITEM);
|
||||
if(item != null){
|
||||
item.setId((short) Material.WRITTEN_BOOK.getId());
|
||||
}
|
||||
}
|
||||
if(name.equalsIgnoreCase("MC|AutoCmd")){
|
||||
wrapper.set(Type.STRING, 0, "MC|AdvCdm");
|
||||
wrapper.write(Type.BYTE, (byte) 0);
|
||||
wrapper.passthrough(Type.INT); // X
|
||||
wrapper.passthrough(Type.INT); // Y
|
||||
wrapper.passthrough(Type.INT); // Z
|
||||
wrapper.passthrough(Type.STRING); // Command
|
||||
wrapper.passthrough(Type.BOOLEAN); // Flag
|
||||
wrapper.clearInputBuffer();
|
||||
}
|
||||
if(name.equalsIgnoreCase("MC|AdvCmd")){
|
||||
wrapper.set(Type.STRING, 0, "MC|AdvCdm");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* Packets which do not have any field remapping or handlers */
|
||||
|
||||
protocol.registerIncoming(State.PLAY, 0x01, 0x02); // Chat Message Packet
|
||||
@ -373,8 +423,5 @@ public class PlayerPackets {
|
||||
protocol.registerIncoming(State.PLAY, 0x05, 0x0E, new PlayerMovementMapper()); // Player Look Packet
|
||||
protocol.registerIncoming(State.PLAY, 0x03, 0x0F, new PlayerMovementMapper()); // Player Packet
|
||||
|
||||
// TODO Plugin Channels :(
|
||||
protocol.registerIncoming(State.PLAY, 0x17, 0x09); // plugin message incoming
|
||||
protocol.registerOutgoing(State.PLAY, 0x3F, 0x18); // plugin message outgoing
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,14 @@
|
||||
package us.myles.ViaVersion2.api.protocol1_9to1_8.packets;
|
||||
|
||||
import org.spacehq.opennbt.tag.builtin.CompoundTag;
|
||||
import org.spacehq.opennbt.tag.builtin.StringTag;
|
||||
import us.myles.ViaVersion.CancelException;
|
||||
import us.myles.ViaVersion.ViaVersionPlugin;
|
||||
import us.myles.ViaVersion.api.ViaVersion;
|
||||
import us.myles.ViaVersion.chunks.Chunk;
|
||||
import us.myles.ViaVersion.packets.State;
|
||||
import us.myles.ViaVersion.sounds.SoundEffect;
|
||||
import us.myles.ViaVersion.util.PacketUtil;
|
||||
import us.myles.ViaVersion2.api.PacketWrapper;
|
||||
import us.myles.ViaVersion2.api.item.Item;
|
||||
import us.myles.ViaVersion2.api.protocol.Protocol;
|
||||
@ -37,11 +42,17 @@ public class WorldPackets {
|
||||
map(Type.INT); // 0 - Effect ID
|
||||
// Everything else get's written through
|
||||
|
||||
// TODO: Effect canceller patch
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
wrapper.cancel();
|
||||
int id = wrapper.get(Type.INT, 0);
|
||||
if (id >= 1000 && id < 2000 && id != 1005) { // Sound Effect
|
||||
wrapper.cancel();
|
||||
}
|
||||
if (id == 1005) { // Fix jukebox
|
||||
id = 1010;
|
||||
}
|
||||
wrapper.set(Type.INT, 0, id);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -55,11 +66,24 @@ public class WorldPackets {
|
||||
// 1 - Sound Category ID
|
||||
// Everything else get's written through
|
||||
|
||||
// TODO: Sound Effect translator patch
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
wrapper.cancel();
|
||||
String name = wrapper.get(Type.STRING, 0);
|
||||
|
||||
SoundEffect effect = SoundEffect.getByName(name);
|
||||
int catid = 0;
|
||||
String newname = name;
|
||||
if (effect != null) {
|
||||
if (effect.isBreaksound()) {
|
||||
wrapper.cancel();
|
||||
return;
|
||||
}
|
||||
catid = effect.getCategory().getId();
|
||||
newname = effect.getNewName();
|
||||
}
|
||||
wrapper.set(Type.STRING, 0, newname);
|
||||
wrapper.write(Type.VAR_INT, catid); // Write Category ID
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -86,11 +110,44 @@ public class WorldPackets {
|
||||
}
|
||||
});
|
||||
|
||||
// Update Block Entity Packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x35, 0x09, new PacketRemapper() {
|
||||
@Override
|
||||
public void registerMap() {
|
||||
map(Type.POSITION); // 0 - Block Position
|
||||
map(Type.UNSIGNED_BYTE); // 1 - Action
|
||||
map(Type.NBT); // 2 - NBT (Might not be present)
|
||||
handler(new PacketHandler() {
|
||||
@Override
|
||||
public void handle(PacketWrapper wrapper) throws Exception {
|
||||
int action = wrapper.get(Type.UNSIGNED_BYTE, 0);
|
||||
if (action == 1) { // Update Spawner
|
||||
CompoundTag tag = wrapper.get(Type.NBT, 0);
|
||||
if (tag != null) {
|
||||
if (tag.contains("EntityId")) {
|
||||
String entity = (String) tag.get("EntityId").getValue();
|
||||
CompoundTag spawn = new CompoundTag("SpawnData");
|
||||
spawn.put(new StringTag("id", entity));
|
||||
tag.put(spawn);
|
||||
} else { // EntityID does not exist
|
||||
CompoundTag spawn = new CompoundTag("SpawnData");
|
||||
spawn.put(new StringTag("id", "AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given.
|
||||
tag.put(spawn);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (action == 2) { // Update Command Block
|
||||
// To prevent window issues don't send updates
|
||||
wrapper.cancel();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/* Packets which do not have any field remapping or handlers */
|
||||
|
||||
protocol.registerOutgoing(State.PLAY, 0x25, 0x08); // Block Break Animation Packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x35, 0x09); // Update Block Entity Packet
|
||||
// TODO: Update_Block_Entity actually implement
|
||||
protocol.registerOutgoing(State.PLAY, 0x24, 0x0A); // Block Action Packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x23, 0x0B); // Block Change Packet
|
||||
protocol.registerOutgoing(State.PLAY, 0x22, 0x10); // Multi Block Change Packet
|
||||
|
@ -31,7 +31,6 @@ public class MetadataListType extends Type<List<Metadata>> {
|
||||
public void write(ByteBuf buffer, List<Metadata> object) throws Exception {
|
||||
for (Metadata m : object) {
|
||||
Protocol1_9TO1_8.METADATA.write(buffer, m);
|
||||
System.out.println("Writing meta data: " + m.getType().getTypeName() + " - " + m.getId() + " - " + m.getTypeID());
|
||||
}
|
||||
// Write end of list
|
||||
Protocol1_9TO1_8.METADATA.write(buffer, null);
|
||||
|
@ -26,7 +26,6 @@ public class MetadataType extends Type<Metadata> {
|
||||
public void write(ByteBuf buffer, Metadata object) throws Exception {
|
||||
if (object == null) {
|
||||
buffer.writeByte(255);
|
||||
System.out.println("writing null :)");
|
||||
} else {
|
||||
buffer.writeByte(object.getId());
|
||||
buffer.writeByte(object.getTypeID());
|
||||
|
@ -18,7 +18,6 @@ public class ArrayType<T> extends Type<T[]> {
|
||||
int amount = Type.VAR_INT.read(buffer);
|
||||
T[] array = (T[]) Array.newInstance(elementType.getOutputClass(), amount);
|
||||
|
||||
System.out.println("READING ARRAY " + array.length);
|
||||
for (int i = 0; i < amount; i++) {
|
||||
array[i] = elementType.read(buffer);
|
||||
}
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren