3
0
Mirror von https://github.com/ViaVersion/ViaBackwards.git synchronisiert 2024-10-07 18:50:07 +02:00

trying to rewrite entity data

Dieser Commit ist enthalten in:
creeper123123321 2019-03-04 09:20:13 -03:00
Ursprung de4789822e
Commit 912a109c91
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 0AC57D54786721D1
2 geänderte Dateien mit 82 neuen und 6 gelöschten Zeilen

Datei anzeigen

@ -1,6 +1,7 @@
package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data; package nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data;
import us.myles.ViaVersion.api.entities.Entity1_13Types;
import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.EntityTypeRewriter; import us.myles.ViaVersion.protocols.protocol1_14to1_13_2.data.EntityTypeRewriter;
import java.lang.reflect.Field; import java.lang.reflect.Field;
@ -10,6 +11,7 @@ import java.util.Optional;
public class EntityTypeMapping { public class EntityTypeMapping {
private static Map<Integer, Integer> entityTypes = new HashMap<>(); private static Map<Integer, Integer> entityTypes = new HashMap<>();
private static Map<Integer, Integer> oldEntityToOldObject = new HashMap<>();
static { static {
try { try {
@ -20,9 +22,26 @@ public class EntityTypeMapping {
} catch (NoSuchFieldException | IllegalAccessException ex) { } catch (NoSuchFieldException | IllegalAccessException ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
for (Map.Entry<Integer, Integer> newToOld : entityTypes.entrySet()) {
Entity1_13Types.EntityType type1_13 = Entity1_13Types.getTypeFromId(newToOld.getValue(), false);
Entity1_13Types.ObjectTypes object1_13 = null;
for (Entity1_13Types.ObjectTypes objectType : Entity1_13Types.ObjectTypes.values()) {
if (objectType.getType() == type1_13) {
object1_13 = objectType;
break;
}
}
if (object1_13 != null) {
oldEntityToOldObject.put(type1_13.getId(), object1_13.getId());
}
}
} }
public static Optional<Integer> getOldId(int type1_13) { public static Optional<Integer> getOldId(int type1_14) {
return Optional.ofNullable(entityTypes.get(type1_13)); return Optional.ofNullable(entityTypes.get(type1_14));
}
public static Optional<Integer> getObjectId(int type1_13) {
return Optional.ofNullable(oldEntityToOldObject.get(type1_13));
} }
} }

Datei anzeigen

@ -7,6 +7,10 @@ import nl.matsv.viabackwards.api.rewriters.EntityRewriter;
import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.Protocol1_13_2To1_14;
import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping; import nl.matsv.viabackwards.protocol.protocol1_13_2to1_14.data.EntityTypeMapping;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.minecraft.VillagerData;
import us.myles.ViaVersion.api.minecraft.item.Item;
import us.myles.ViaVersion.api.minecraft.metadata.Metadata;
import us.myles.ViaVersion.api.minecraft.metadata.types.MetaType1_13_2;
import us.myles.ViaVersion.api.remapper.PacketHandler; import us.myles.ViaVersion.api.remapper.PacketHandler;
import us.myles.ViaVersion.api.remapper.PacketRemapper; import us.myles.ViaVersion.api.remapper.PacketRemapper;
import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.Type;
@ -41,8 +45,8 @@ public class EntityPackets1_14 extends EntityRewriter<Protocol1_13_2To1_14> {
EntityType1_14.EntityType type1_14 = EntityType1_14.getTypeFromId(typeId); EntityType1_14.EntityType type1_14 = EntityType1_14.getTypeFromId(typeId);
typeId = EntityTypeMapping.getOldId(type1_14.getId()).orElse(type1_14.getId()); typeId = EntityTypeMapping.getOldId(type1_14.getId()).orElse(type1_14.getId());
EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true); // todo object id EntityType1_13.EntityType type1_13 = EntityType1_13.getTypeFromId(typeId, true);
wrapper.cancel(); typeId = EntityTypeMapping.getObjectId(type1_14.getId()).orElse(type1_14.getId());
if (type1_13 != null) { if (type1_13 != null) {
if (type1_13.is(EntityType1_13.EntityType.FALLING_BLOCK)) { if (type1_13.is(EntityType1_13.EntityType.FALLING_BLOCK)) {
@ -197,12 +201,65 @@ public class EntityPackets1_14 extends EntityRewriter<Protocol1_13_2To1_14> {
}); });
} }
}); });
} }
@Override @Override
protected void registerRewrites() { protected void registerRewrites() {
regEntType(EntityType1_14.EntityType.CAT, EntityType1_14.EntityType.OCELOT).mobName("Cat").spawnMetadata(e -> {
e.add(new Metadata(13, MetaType1_13_2.Byte, (byte) 0x4)); // Tamed cat
});
regEntType(EntityType1_14.EntityType.OCELOT, EntityType1_14.EntityType.OCELOT).mobName("Ocelot");
regEntType(EntityType1_14.EntityType.TRADER_LLAMA, EntityType1_14.EntityType.LLAMA).mobName("Trader Llama");
registerMetaHandler().handle(e -> {
if (e.getData().getMetaType().getTypeID() == 6) { // Slot
Protocol1_13_2To1_14.blockItem.handleItemToClient((Item) e.getData().getValue());
}
return e.getData();
});
// Remove entity pose
registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY, 6).removed();
registerMetaHandler().filter(EntityType1_14.EntityType.ENTITY).handle(e -> {
if (e.getIndex() > 6) e.getData().setId(e.getIndex() - 1);
return e.getData();
});
registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 13).removed();
registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 14).removed();
registerMetaHandler().filter(EntityType1_14.EntityType.CAT, 15).removed();
// Villager data -> var int
registerMetaHandler().handle(e -> {
if (e.getData().getValue() instanceof VillagerData) {
e.getData().setMetaType(MetaType1_13_2.VarInt);
e.getData().setValue(villagerDataToProfession(((VillagerData) e.getData().getValue())));
}
return e.getData();
});
}
public int villagerDataToProfession(VillagerData data) {
switch (data.getProfession()) {
case 1: // Armorer
case 10: // Mason
case 13: // Toolsmith
case 14: // Weaponsmith
return 3; // Blacksmith
case 2: // Butcher
case 8: // Leatherworker
return 4; // Butcher
case 3: // Cartographer
case 9: // Librarian
return 1; // Librarian
case 4: // Cleric
return 2; // Priest
case 5: // Farmer
case 6: // Fisherman
case 7: // Fletcher
case 12: // Shepherd
return 0; // Farmer
case 0: // None
case 11: // Nitwit
default:
return 5; // Nitwit
}
} }
} }