More entity rewriter cleanup

This commit is contained in:
KennyTV 2020-02-09 11:48:47 +01:00
parent a4ed18f59b
commit d6fe7914e8
15 changed files with 133 additions and 184 deletions

View File

@ -10,20 +10,22 @@
package nl.matsv.viabackwards.api.entities.storage; package nl.matsv.viabackwards.api.entities.storage;
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter;
public class EntityData { public class EntityData {
private final int id; private final int id;
private final boolean isObject;
private String mobName;
private final int replacementId; private final int replacementId;
private final int objectData; private String mobName;
private MetaCreator defaultMeta; private MetaCreator defaultMeta;
public EntityData(int id, boolean isObject, int replacementId, int objectData) { public EntityData(int id, int replacementId) {
this.id = id; this.id = id;
this.isObject = isObject;
this.replacementId = replacementId; this.replacementId = replacementId;
this.objectData = objectData; }
public EntityData jsonName(String name) {
this.mobName = ChatRewriter.legacyTextToJson(name);
return this;
} }
public EntityData mobName(String name) { public EntityData mobName(String name) {
@ -43,10 +45,6 @@ public class EntityData {
return id; return id;
} }
public boolean isObject() {
return isObject;
}
public String getMobName() { public String getMobName() {
return mobName; return mobName;
} }
@ -55,28 +53,31 @@ public class EntityData {
return replacementId; return replacementId;
} }
public int getObjectData() {
return objectData;
}
public MetaCreator getDefaultMeta() { public MetaCreator getDefaultMeta() {
return defaultMeta; return defaultMeta;
} }
public boolean isObject() {
return false;
}
public int getObjectData() {
return -1;
}
@Override @Override
public String toString() { public String toString() {
return "EntityData{" + return "EntityData{" +
"id=" + id + "id=" + id +
", isObject=" + isObject +
", mobName='" + mobName + '\'' + ", mobName='" + mobName + '\'' +
", replacementId=" + replacementId + ", replacementId=" + replacementId +
", objectData=" + objectData +
", defaultMeta=" + defaultMeta + ", defaultMeta=" + defaultMeta +
'}'; '}';
} }
@FunctionalInterface
public interface MetaCreator { public interface MetaCreator {
void handle(MetaStorage storage); void createMeta(MetaStorage storage);
} }
} }

View File

@ -0,0 +1,22 @@
package nl.matsv.viabackwards.api.entities.storage;
public class EntityObjectData extends EntityData {
private final boolean isObject;
private final int objectData;
public EntityObjectData(int id, boolean isObject, int replacementId, int objectData) {
super(id, replacementId);
this.isObject = isObject;
this.objectData = objectData;
}
@Override
public boolean isObject() {
return isObject;
}
@Override
public int getObjectData() {
return objectData;
}
}

View File

@ -1,4 +1,4 @@
package nl.matsv.viabackwards.api.entities.storage.object; package nl.matsv.viabackwards.api.entities.storage;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.data.StoredObject; import us.myles.ViaVersion.api.data.StoredObject;

View File

@ -3,6 +3,7 @@ package nl.matsv.viabackwards.api.rewriters;
import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.BackwardsProtocol;
import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.storage.MetaStorage;
import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
import us.myles.ViaVersion.api.minecraft.metadata.MetaType; import us.myles.ViaVersion.api.minecraft.metadata.MetaType;
import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.Metadata;
@ -16,11 +17,11 @@ import java.util.List;
public abstract class EntityRewriter<T extends BackwardsProtocol> extends EntityRewriterBase<T> { public abstract class EntityRewriter<T extends BackwardsProtocol> extends EntityRewriterBase<T> {
protected EntityRewriter(T protocol) { protected EntityRewriter(T protocol) {
super(protocol, MetaType1_14.OptChat, 2, true); super(protocol, MetaType1_14.OptChat, 2);
} }
protected EntityRewriter(T protocol, MetaType displayType) { protected EntityRewriter(T protocol, MetaType displayType) {
super(protocol, displayType, 2, true); super(protocol, displayType, 2);
} }
public void registerSpawnTrackerWithData(int oldPacketId, int newPacketId, EntityType fallingBlockType, ItemRewriter itemRewriter) { public void registerSpawnTrackerWithData(int oldPacketId, int newPacketId, EntityType fallingBlockType, ItemRewriter itemRewriter) {
@ -37,15 +38,7 @@ public abstract class EntityRewriter<T extends BackwardsProtocol> extends Entity
map(Type.BYTE); // 7 - Yaw map(Type.BYTE); // 7 - Yaw
map(Type.INT); // 8 - Data map(Type.INT); // 8 - Data
handler(wrapper -> { handler(wrapper -> {
int typeId = wrapper.get(Type.VAR_INT, 1); EntityType entityType = setOldEntityId(wrapper);
EntityType entityType = getTypeFromId(typeId);
addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), entityType);
int oldTypeId = getOldEntityId(entityType.getId());
if (typeId != oldTypeId) {
wrapper.set(Type.VAR_INT, 1, oldTypeId);
}
if (entityType == fallingBlockType) { if (entityType == fallingBlockType) {
int blockState = wrapper.get(Type.INT, 0); int blockState = wrapper.get(Type.INT, 0);
wrapper.set(Type.INT, 0, itemRewriter.toClientRewriter.rewrite(blockState)); wrapper.set(Type.INT, 0, itemRewriter.toClientRewriter.rewrite(blockState));
@ -62,20 +55,24 @@ public abstract class EntityRewriter<T extends BackwardsProtocol> extends Entity
map(Type.VAR_INT); // 0 - Entity ID map(Type.VAR_INT); // 0 - Entity ID
map(Type.UUID); // 1 - Entity UUID map(Type.UUID); // 1 - Entity UUID
map(Type.VAR_INT); // 2 - Entity Type map(Type.VAR_INT); // 2 - Entity Type
handler(wrapper -> { handler(wrapper -> setOldEntityId(wrapper));
int typeId = wrapper.get(Type.VAR_INT, 1);
EntityType entityType = getTypeFromId(typeId);
addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), entityType);
int oldTypeId = getOldEntityId(entityType.getId());
if (typeId != oldTypeId) {
wrapper.set(Type.VAR_INT, 1, oldTypeId);
}
});
} }
}); });
} }
private EntityType setOldEntityId(PacketWrapper wrapper) throws Exception {
int typeId = wrapper.get(Type.VAR_INT, 1);
EntityType entityType = getTypeFromId(typeId);
addTrackedEntity(wrapper, wrapper.get(Type.VAR_INT, 0), entityType);
int oldTypeId = getOldEntityId(entityType.getId());
if (typeId != oldTypeId) {
wrapper.set(Type.VAR_INT, 1, oldTypeId);
}
return entityType;
}
/** /**
* Helper method to handle a metadata list packet and its full initial meta rewrite. * Helper method to handle a metadata list packet and its full initial meta rewrite.
*/ */
@ -97,9 +94,10 @@ public abstract class EntityRewriter<T extends BackwardsProtocol> extends Entity
handleMeta(wrapper.user(), entityId, storage); handleMeta(wrapper.user(), entityId, storage);
EntityData entityData = getEntityData(type); EntityData entityData = getEntityData(type);
//TODO only do this once for a first meta packet?
if (entityData != null) { if (entityData != null) {
if (entityData.hasBaseMeta()) { if (entityData.hasBaseMeta()) {
entityData.getDefaultMeta().handle(storage); entityData.getDefaultMeta().createMeta(storage);
} }
} }

View File

@ -1,5 +1,6 @@
package nl.matsv.viabackwards.api.rewriters; package nl.matsv.viabackwards.api.rewriters;
import com.google.common.base.Preconditions;
import nl.matsv.viabackwards.ViaBackwards; import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.BackwardsProtocol;
import nl.matsv.viabackwards.api.entities.meta.MetaHandlerEvent; import nl.matsv.viabackwards.api.entities.meta.MetaHandlerEvent;
@ -20,31 +21,28 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper;
import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.exception.CancelException; import us.myles.ViaVersion.exception.CancelException;
import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.packets.State;
import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.ChatRewriter;
import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld; import us.myles.ViaVersion.protocols.protocol1_9_3to1_9_1_2.storage.ClientWorld;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; import java.util.logging.Logger;
public abstract class EntityRewriterBase<T extends BackwardsProtocol> extends Rewriter<T> { public abstract class EntityRewriterBase<T extends BackwardsProtocol> extends Rewriter<T> {
private final Map<EntityType, EntityData> entityTypes = new ConcurrentHashMap<>(); private final Map<EntityType, EntityData> entityTypes = new HashMap<>();
private final List<MetaHandlerSettings> metaHandlers = new ArrayList<>(); private final List<MetaHandlerSettings> metaHandlers = new ArrayList<>();
private final MetaType displayNameMetaType; private final MetaType displayNameMetaType;
private final int displayNameIndex; private final int displayNameIndex;
private final boolean isDisplayNameJson;
protected EntityRewriterBase(T protocol) { protected EntityRewriterBase(T protocol) {
this(protocol, MetaType1_9.String, 2, false); this(protocol, MetaType1_9.String, 2);
} }
protected EntityRewriterBase(T protocol, MetaType displayNameMetaType, int displayNameIndex, boolean isDisplayNameJson) { protected EntityRewriterBase(T protocol, MetaType displayNameMetaType, int displayNameIndex) {
super(protocol); super(protocol);
this.displayNameMetaType = displayNameMetaType; this.displayNameMetaType = displayNameMetaType;
this.displayNameIndex = displayNameIndex; this.displayNameIndex = displayNameIndex;
this.isDisplayNameJson = isDisplayNameJson;
} }
protected EntityType getEntityType(UserConnection connection, int id) { protected EntityType getEntityType(UserConnection connection, int id) {
@ -64,7 +62,10 @@ public abstract class EntityRewriterBase<T extends BackwardsProtocol> extends Re
} }
protected EntityData mapEntity(EntityType oldType, EntityType replacement) { protected EntityData mapEntity(EntityType oldType, EntityType replacement) {
EntityData data = new EntityData(oldType.getId(), false, replacement.getId(), -1); Preconditions.checkArgument(oldType.getClass() == replacement.getClass());
// Already rewrite the id here
EntityData data = new EntityData(oldType.getId(), getOldEntityId(replacement.getId()));
entityTypes.put(oldType, data); entityTypes.put(oldType, data);
return data; return data;
} }
@ -137,11 +138,7 @@ public abstract class EntityRewriterBase<T extends BackwardsProtocol> extends Re
if (entityData.getMobName() != null && if (entityData.getMobName() != null &&
(data.getValue() == null || ((String) data.getValue()).isEmpty()) && (data.getValue() == null || ((String) data.getValue()).isEmpty()) &&
data.getMetaType().getTypeID() == displayNameMetaType.getTypeID()) { data.getMetaType().getTypeID() == displayNameMetaType.getTypeID()) {
String mobName = entityData.getMobName(); data.setValue(entityData.getMobName());
if (isDisplayNameJson) {
mobName = ChatRewriter.legacyTextToJson(mobName);
}
data.setValue(mobName);
} }
} }
} }

View File

@ -1,7 +1,9 @@
package nl.matsv.viabackwards.api.rewriters; package nl.matsv.viabackwards.api.rewriters;
import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.BackwardsProtocol; import nl.matsv.viabackwards.api.BackwardsProtocol;
import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.entities.storage.EntityObjectData;
import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.storage.MetaStorage;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
import us.myles.ViaVersion.api.entities.ObjectType; import us.myles.ViaVersion.api.entities.ObjectType;
@ -12,23 +14,24 @@ import us.myles.ViaVersion.api.remapper.PacketRemapper;
import us.myles.ViaVersion.api.type.Type; import us.myles.ViaVersion.api.type.Type;
import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.packets.State;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function;
public abstract class LegacyEntityRewriter<T extends BackwardsProtocol> extends EntityRewriterBase<T> { public abstract class LegacyEntityRewriter<T extends BackwardsProtocol> extends EntityRewriterBase<T> {
private final Map<ObjectType, EntityData> objectTypes = new ConcurrentHashMap<>(); private final Map<ObjectType, EntityData> objectTypes = new HashMap<>();
protected LegacyEntityRewriter(T protocol) { protected LegacyEntityRewriter(T protocol) {
super(protocol); super(protocol);
} }
protected LegacyEntityRewriter(T protocol, MetaType displayType, boolean isDisplayJson) { protected LegacyEntityRewriter(T protocol, MetaType displayType) {
super(protocol, displayType, 2, isDisplayJson); super(protocol, displayType, 2);
} }
protected EntityData mapObjectType(ObjectType oldObjectType, ObjectType replacement, int data) { protected EntityObjectData mapObjectType(ObjectType oldObjectType, ObjectType replacement, int data) {
EntityData entData = new EntityData(oldObjectType.getId(), true, replacement.getId(), data); EntityObjectData entData = new EntityObjectData(oldObjectType.getId(), true, replacement.getId(), data);
objectTypes.put(oldObjectType, entData); objectTypes.put(oldObjectType, entData);
return entData; return entData;
} }
@ -70,10 +73,9 @@ public abstract class LegacyEntityRewriter<T extends BackwardsProtocol> extends
EntityData entityData = getEntityData(type); EntityData entityData = getEntityData(type);
if (entityData != null) { if (entityData != null) {
int replacementId = getOldEntityId(entityData.getReplacementId()); wrapper.set(Type.VAR_INT, 1, entityData.getReplacementId());
wrapper.set(Type.VAR_INT, 1, replacementId);
if (entityData.hasBaseMeta()) { if (entityData.hasBaseMeta()) {
entityData.getDefaultMeta().handle(storage); entityData.getDefaultMeta().createMeta(storage);
} }
} }
@ -96,6 +98,24 @@ public abstract class LegacyEntityRewriter<T extends BackwardsProtocol> extends
}; };
} }
protected PacketHandler getObjectRewriter(Function<Byte, ObjectType> objectGetter) {
return wrapper -> {
ObjectType type = objectGetter.apply(wrapper.get(Type.BYTE, 0));
if (type == null) {
ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0));
return;
}
EntityData data = getObjectData(type);
if (data != null) {
wrapper.set(Type.BYTE, 0, (byte) data.getReplacementId());
if (data.getObjectData() != -1) {
wrapper.set(Type.INT, 0, data.getObjectData());
}
}
};
}
protected EntityType getObjectTypeFromId(int typeId) { protected EntityType getObjectTypeFromId(int typeId) {
return getTypeFromId(typeId); return getTypeFromId(typeId);
} }

View File

@ -10,7 +10,6 @@
package nl.matsv.viabackwards.protocol.protocol1_10to1_11.packets; package nl.matsv.viabackwards.protocol.protocol1_10to1_11.packets;
import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.storage.MetaStorage;
import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.exceptions.RemovedValueException;
@ -20,7 +19,6 @@ import nl.matsv.viabackwards.protocol.protocol1_10to1_11.Protocol1_10To1_11;
import nl.matsv.viabackwards.protocol.protocol1_10to1_11.storage.ChestedHorseStorage; import nl.matsv.viabackwards.protocol.protocol1_10to1_11.storage.ChestedHorseStorage;
import nl.matsv.viabackwards.utils.Block; import nl.matsv.viabackwards.utils.Block;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.entities.Entity1_11Types; import us.myles.ViaVersion.api.entities.Entity1_11Types;
import us.myles.ViaVersion.api.entities.Entity1_12Types; import us.myles.ViaVersion.api.entities.Entity1_12Types;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
@ -81,26 +79,7 @@ public class EntityPackets1_11 extends LegacyEntityRewriter<Protocol1_10To1_11>
// Track Entity // Track Entity
handler(getObjectTrackerHandler()); handler(getObjectTrackerHandler());
handler(getObjectRewriter(id -> Entity1_11Types.ObjectType.findById(id).orElse(null)));
handler(new PacketHandler() {
@Override
public void handle(PacketWrapper wrapper) throws Exception {
Optional<Entity1_11Types.ObjectType> type = Entity1_11Types.ObjectType.findById(wrapper.get(Type.BYTE, 0));
if (type.isPresent()) {
EntityData data = getObjectData(type.get());
if (data != null) {
wrapper.set(Type.BYTE, 0, ((Integer) data.getReplacementId()).byteValue());
if (data.getObjectData() != -1)
wrapper.set(Type.INT, 0, data.getObjectData());
}
} else {
if (Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0));
}
}
}
});
// Handle FallingBlock blocks // Handle FallingBlock blocks
handler(new PacketHandler() { handler(new PacketHandler() {
@ -168,7 +147,7 @@ public class EntityPackets1_11 extends LegacyEntityRewriter<Protocol1_10To1_11>
if (entityData != null) { if (entityData != null) {
wrapper.set(Type.UNSIGNED_BYTE, 0, (short) entityData.getReplacementId()); wrapper.set(Type.UNSIGNED_BYTE, 0, (short) entityData.getReplacementId());
if (entityData.hasBaseMeta()) { if (entityData.hasBaseMeta()) {
entityData.getDefaultMeta().handle(storage); entityData.getDefaultMeta().createMeta(storage);
} }
} }
@ -260,10 +239,10 @@ public class EntityPackets1_11 extends LegacyEntityRewriter<Protocol1_10To1_11>
// Guardian // Guardian
mapEntity(Entity1_11Types.EntityType.ELDER_GUARDIAN, Entity1_11Types.EntityType.GUARDIAN); mapEntity(Entity1_11Types.EntityType.ELDER_GUARDIAN, Entity1_11Types.EntityType.GUARDIAN);
// Skeletons // Skeletons
mapEntity(Entity1_11Types.EntityType.WITHER_SKELETON, Entity1_11Types.EntityType.SKELETON).spawnMetadata(storage -> storage.add(getSkeletonTypeMeta(1))); mapEntity(Entity1_11Types.EntityType.WITHER_SKELETON, Entity1_11Types.EntityType.SKELETON).mobName("Wither Skeleton").spawnMetadata(storage -> storage.add(getSkeletonTypeMeta(1)));
mapEntity(Entity1_11Types.EntityType.STRAY, Entity1_11Types.EntityType.SKELETON).spawnMetadata(storage -> storage.add(getSkeletonTypeMeta(2))); mapEntity(Entity1_11Types.EntityType.STRAY, Entity1_11Types.EntityType.SKELETON).mobName("Stray").spawnMetadata(storage -> storage.add(getSkeletonTypeMeta(2)));
// Zombies // Zombies
mapEntity(Entity1_11Types.EntityType.HUSK, Entity1_11Types.EntityType.ZOMBIE).spawnMetadata(storage -> handleZombieType(storage, 6)); mapEntity(Entity1_11Types.EntityType.HUSK, Entity1_11Types.EntityType.ZOMBIE).mobName("Husk").spawnMetadata(storage -> handleZombieType(storage, 6));
mapEntity(Entity1_11Types.EntityType.ZOMBIE_VILLAGER, Entity1_11Types.EntityType.ZOMBIE).spawnMetadata(storage -> handleZombieType(storage, 1)); mapEntity(Entity1_11Types.EntityType.ZOMBIE_VILLAGER, Entity1_11Types.EntityType.ZOMBIE).spawnMetadata(storage -> handleZombieType(storage, 1));
// Horses // Horses
mapEntity(Entity1_11Types.EntityType.HORSE, Entity1_11Types.EntityType.HORSE).spawnMetadata(storage -> storage.add(getHorseMetaType(0))); // Nob able to ride the horse without having the MetaType sent. mapEntity(Entity1_11Types.EntityType.HORSE, Entity1_11Types.EntityType.HORSE).spawnMetadata(storage -> storage.add(getHorseMetaType(0))); // Nob able to ride the horse without having the MetaType sent.

View File

@ -10,8 +10,6 @@
package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets; package nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.packets;
import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.exceptions.RemovedValueException;
import nl.matsv.viabackwards.api.rewriters.LegacyEntityRewriter; import nl.matsv.viabackwards.api.rewriters.LegacyEntityRewriter;
import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.Protocol1_11_1To1_12;
@ -19,7 +17,6 @@ import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ParrotStorage;
import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker; import nl.matsv.viabackwards.protocol.protocol1_11_1to1_12.data.ShoulderTracker;
import nl.matsv.viabackwards.utils.Block; import nl.matsv.viabackwards.utils.Block;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.entities.Entity1_12Types; import us.myles.ViaVersion.api.entities.Entity1_12Types;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
import us.myles.ViaVersion.api.minecraft.metadata.Metadata; import us.myles.ViaVersion.api.minecraft.metadata.Metadata;
@ -57,26 +54,7 @@ public class EntityPackets1_12 extends LegacyEntityRewriter<Protocol1_11_1To1_12
// Track Entity // Track Entity
handler(getObjectTrackerHandler()); handler(getObjectTrackerHandler());
handler(getObjectRewriter(id -> Entity1_12Types.ObjectType.findById(id).orElse(null)));
handler(new PacketHandler() {
@Override
public void handle(PacketWrapper wrapper) throws Exception {
Optional<Entity1_12Types.ObjectType> type = Entity1_12Types.ObjectType.findById(wrapper.get(Type.BYTE, 0));
if (type.isPresent()) {
EntityData data = getObjectData(type.get());
if (data != null) {
wrapper.set(Type.BYTE, 0, ((Integer) data.getReplacementId()).byteValue());
if (data.getObjectData() != -1)
wrapper.set(Type.INT, 0, data.getObjectData());
}
} else {
if (Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0));
}
}
}
});
// Handle FallingBlock blocks // Handle FallingBlock blocks
handler(new PacketHandler() { handler(new PacketHandler() {

View File

@ -10,22 +10,15 @@
package nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.packets; package nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.packets;
import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.rewriters.LegacyEntityRewriter; import nl.matsv.viabackwards.api.rewriters.LegacyEntityRewriter;
import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1; import nl.matsv.viabackwards.protocol.protocol1_11to1_11_1.Protocol1_11To1_11_1;
import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.entities.Entity1_11Types; import us.myles.ViaVersion.api.entities.Entity1_11Types;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
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;
import us.myles.ViaVersion.api.type.types.version.Types1_9; import us.myles.ViaVersion.api.type.types.version.Types1_9;
import us.myles.ViaVersion.packets.State; import us.myles.ViaVersion.packets.State;
import java.util.Optional;
public class EntityPackets1_11_1 extends LegacyEntityRewriter<Protocol1_11To1_11_1> { public class EntityPackets1_11_1 extends LegacyEntityRewriter<Protocol1_11To1_11_1> {
public EntityPackets1_11_1(Protocol1_11To1_11_1 protocol) { public EntityPackets1_11_1(Protocol1_11To1_11_1 protocol) {
@ -50,26 +43,7 @@ public class EntityPackets1_11_1 extends LegacyEntityRewriter<Protocol1_11To1_11
// Track Entity // Track Entity
handler(getObjectTrackerHandler()); handler(getObjectTrackerHandler());
handler(getObjectRewriter(id -> Entity1_11Types.ObjectType.findById(id).orElse(null)));
handler(new PacketHandler() {
@Override
public void handle(PacketWrapper wrapper) throws Exception {
Optional<Entity1_11Types.ObjectType> type = Entity1_11Types.ObjectType.findById(wrapper.get(Type.BYTE, 0));
if (type.isPresent()) {
EntityData data = getObjectData(type.get());
if (data != null) {
wrapper.set(Type.BYTE, 0, ((Integer) data.getReplacementId()).byteValue());
if (data.getObjectData() != -1)
wrapper.set(Type.INT, 0, data.getObjectData());
}
} else {
if (Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0));
}
}
}
});
} }
}); });

View File

@ -1,6 +1,6 @@
package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage; package nl.matsv.viabackwards.protocol.protocol1_12_2to1_13.storage;
import nl.matsv.viabackwards.api.entities.storage.object.PlayerPositionStorage; import nl.matsv.viabackwards.api.entities.storage.PlayerPositionStorage;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
public class PlayerPositionStorage1_13 extends PlayerPositionStorage { public class PlayerPositionStorage1_13 extends PlayerPositionStorage {

View File

@ -34,7 +34,7 @@ public class EntityPackets1_14 extends LegacyEntityRewriter<Protocol1_13_2To1_14
private EntityPositionHandler positionHandler; private EntityPositionHandler positionHandler;
public EntityPackets1_14(Protocol1_13_2To1_14 protocol) { public EntityPackets1_14(Protocol1_13_2To1_14 protocol) {
super(protocol, MetaType1_13_2.OptChat, true); super(protocol, MetaType1_13_2.OptChat);
} }
@Override @Override
@ -315,13 +315,13 @@ public class EntityPackets1_14 extends LegacyEntityRewriter<Protocol1_13_2To1_14
@Override @Override
protected void registerRewrites() { protected void registerRewrites() {
mapEntity(Entity1_14Types.EntityType.CAT, Entity1_14Types.EntityType.OCELOT).mobName("Cat"); mapEntity(Entity1_14Types.EntityType.CAT, Entity1_14Types.EntityType.OCELOT).jsonName("Cat");
mapEntity(Entity1_14Types.EntityType.TRADER_LLAMA, Entity1_14Types.EntityType.LLAMA).mobName("Trader Llama"); mapEntity(Entity1_14Types.EntityType.TRADER_LLAMA, Entity1_14Types.EntityType.LLAMA).jsonName("Trader Llama");
mapEntity(Entity1_14Types.EntityType.FOX, Entity1_14Types.EntityType.WOLF).mobName("Fox"); mapEntity(Entity1_14Types.EntityType.FOX, Entity1_14Types.EntityType.WOLF).jsonName("Fox");
mapEntity(Entity1_14Types.EntityType.PANDA, Entity1_14Types.EntityType.POLAR_BEAR).mobName("Panda"); mapEntity(Entity1_14Types.EntityType.PANDA, Entity1_14Types.EntityType.POLAR_BEAR).jsonName("Panda");
mapEntity(Entity1_14Types.EntityType.PILLAGER, Entity1_14Types.EntityType.VILLAGER).mobName("Pillager"); mapEntity(Entity1_14Types.EntityType.PILLAGER, Entity1_14Types.EntityType.VILLAGER).jsonName("Pillager");
mapEntity(Entity1_14Types.EntityType.WANDERING_TRADER, Entity1_14Types.EntityType.VILLAGER).mobName("Wandering Trader"); mapEntity(Entity1_14Types.EntityType.WANDERING_TRADER, Entity1_14Types.EntityType.VILLAGER).jsonName("Wandering Trader");
mapEntity(Entity1_14Types.EntityType.RAVAGER, Entity1_14Types.EntityType.COW).mobName("Ravager"); mapEntity(Entity1_14Types.EntityType.RAVAGER, Entity1_14Types.EntityType.COW).jsonName("Ravager");
registerMetaHandler().handle(e -> { registerMetaHandler().handle(e -> {
Metadata meta = e.getData(); Metadata meta = e.getData();

View File

@ -230,7 +230,7 @@ public class EntityPackets1_15 extends EntityRewriter<Protocol1_14_4To1_15> {
registerMetaHandler().filter(Entity1_15Types.EntityType.BEE, 15).removed(); registerMetaHandler().filter(Entity1_15Types.EntityType.BEE, 15).removed();
registerMetaHandler().filter(Entity1_15Types.EntityType.BEE, 16).removed(); registerMetaHandler().filter(Entity1_15Types.EntityType.BEE, 16).removed();
mapEntity(Entity1_15Types.EntityType.BEE, Entity1_15Types.EntityType.PUFFER_FISH).mobName("Bee").spawnMetadata(storage -> { mapEntity(Entity1_15Types.EntityType.BEE, Entity1_15Types.EntityType.PUFFER_FISH).jsonName("Bee").spawnMetadata(storage -> {
storage.add(new Metadata(14, MetaType1_14.Boolean, false)); storage.add(new Metadata(14, MetaType1_14.Boolean, false));
storage.add(new Metadata(15, MetaType1_14.VarInt, 2)); storage.add(new Metadata(15, MetaType1_14.VarInt, 2));
}); });

View File

@ -3,6 +3,7 @@ package nl.matsv.viabackwards.protocol.protocol1_15_2to1_16.packets;
import nl.matsv.viabackwards.api.rewriters.EntityRewriter; import nl.matsv.viabackwards.api.rewriters.EntityRewriter;
import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data.ParticleMapping; import nl.matsv.viabackwards.protocol.protocol1_14_4to1_15.data.ParticleMapping;
import nl.matsv.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16; import nl.matsv.viabackwards.protocol.protocol1_15_2to1_16.Protocol1_15_2To1_16;
import us.myles.ViaVersion.api.entities.Entity1_15Types;
import us.myles.ViaVersion.api.entities.Entity1_16Types; import us.myles.ViaVersion.api.entities.Entity1_16Types;
import us.myles.ViaVersion.api.entities.EntityType; import us.myles.ViaVersion.api.entities.EntityType;
import us.myles.ViaVersion.api.minecraft.item.Item; import us.myles.ViaVersion.api.minecraft.item.Item;
@ -57,7 +58,7 @@ public class EntityPackets1_16 extends EntityRewriter<Protocol1_15_2To1_16> {
Metadata meta = e.getData(); Metadata meta = e.getData();
MetaType type = meta.getMetaType(); MetaType type = meta.getMetaType();
if (type == MetaType1_14.Slot) { if (type == MetaType1_14.Slot) {
meta.setValue(getProtocol().getBlockItemPackets().handleItemToClient((Item) meta.getValue())); meta.setValue(protocol.getBlockItemPackets().handleItemToClient((Item) meta.getValue()));
} else if (type == MetaType1_14.BlockID) { } else if (type == MetaType1_14.BlockID) {
meta.setValue(Protocol1_15_2To1_16.getNewBlockStateId((int) meta.getValue())); meta.setValue(Protocol1_15_2To1_16.getNewBlockStateId((int) meta.getValue()));
} else if (type == MetaType1_14.PARTICLE) { } else if (type == MetaType1_14.PARTICLE) {
@ -67,7 +68,7 @@ public class EntityPackets1_16 extends EntityRewriter<Protocol1_15_2To1_16> {
return meta; return meta;
}); });
mapEntity(Entity1_16Types.EntityType.HOGLIN, Entity1_16Types.EntityType.COW).mobName("Hoglin"); mapEntity(Entity1_16Types.EntityType.HOGLIN, Entity1_16Types.EntityType.COW).jsonName("Hoglin");
} }
@Override @Override
@ -77,8 +78,8 @@ public class EntityPackets1_16 extends EntityRewriter<Protocol1_15_2To1_16> {
@Override @Override
protected int getOldEntityId(int newId) { protected int getOldEntityId(int newId) {
if (newId == 100) { if (newId == Entity1_16Types.EntityType.HOGLIN.getId()) {
return Entity1_16Types.EntityType.COW.getId(); return Entity1_15Types.EntityType.COW.getId();
} }
return newId; return newId;
} }

View File

@ -10,7 +10,6 @@
package nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.packets; package nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.packets;
import nl.matsv.viabackwards.ViaBackwards;
import nl.matsv.viabackwards.api.entities.storage.EntityData; import nl.matsv.viabackwards.api.entities.storage.EntityData;
import nl.matsv.viabackwards.api.entities.storage.MetaStorage; import nl.matsv.viabackwards.api.entities.storage.MetaStorage;
import nl.matsv.viabackwards.api.exceptions.RemovedValueException; import nl.matsv.viabackwards.api.exceptions.RemovedValueException;
@ -18,7 +17,6 @@ import nl.matsv.viabackwards.api.rewriters.LegacyEntityRewriter;
import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10; import nl.matsv.viabackwards.protocol.protocol1_9_4to1_10.Protocol1_9_4To1_10;
import nl.matsv.viabackwards.utils.Block; import nl.matsv.viabackwards.utils.Block;
import us.myles.ViaVersion.api.PacketWrapper; import us.myles.ViaVersion.api.PacketWrapper;
import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.entities.Entity1_10Types; import us.myles.ViaVersion.api.entities.Entity1_10Types;
import us.myles.ViaVersion.api.entities.Entity1_11Types; import us.myles.ViaVersion.api.entities.Entity1_11Types;
import us.myles.ViaVersion.api.entities.Entity1_12Types; import us.myles.ViaVersion.api.entities.Entity1_12Types;
@ -57,26 +55,7 @@ public class EntityPackets1_10 extends LegacyEntityRewriter<Protocol1_9_4To1_10>
// Track Entity // Track Entity
handler(getObjectTrackerHandler()); handler(getObjectTrackerHandler());
handler(getObjectRewriter(id -> Entity1_11Types.ObjectType.findById(id).orElse(null)));
handler(new PacketHandler() {
@Override
public void handle(PacketWrapper wrapper) throws Exception {
Optional<Entity1_11Types.ObjectType> type = Entity1_11Types.ObjectType.findById(wrapper.get(Type.BYTE, 0));
if (type.isPresent()) {
EntityData data = getObjectData(type.get());
if (data != null) {
wrapper.set(Type.BYTE, 0, ((Integer) data.getReplacementId()).byteValue());
if (data.getObjectData() != -1)
wrapper.set(Type.INT, 0, data.getObjectData());
}
} else {
if (Via.getManager().isDebug()) {
ViaBackwards.getPlatform().getLogger().warning("Could not find Entity Type" + wrapper.get(Type.BYTE, 0));
}
}
}
});
// Handle FallingBlock blocks // Handle FallingBlock blocks
handler(new PacketHandler() { handler(new PacketHandler() {
@ -144,7 +123,7 @@ public class EntityPackets1_10 extends LegacyEntityRewriter<Protocol1_9_4To1_10>
if (entityData != null) { if (entityData != null) {
wrapper.set(Type.UNSIGNED_BYTE, 0, (short) entityData.getReplacementId()); wrapper.set(Type.UNSIGNED_BYTE, 0, (short) entityData.getReplacementId());
if (entityData.hasBaseMeta()) if (entityData.hasBaseMeta())
entityData.getDefaultMeta().handle(storage); entityData.getDefaultMeta().createMeta(storage);
} }
// Rewrite Metadata // Rewrite Metadata

View File

@ -5517,10 +5517,10 @@
"block.bone_block.place": "block.lantern.place", "block.bone_block.place": "block.lantern.place",
"block.bone_block.step": "block.lantern.step", "block.bone_block.step": "block.lantern.step",
"block.roots.break": "block.crop.break", "block.roots.break": "block.crop.break",
"block.roots.step": "block.crop.step", "block.roots.step": "block.grass.step",
"block.roots.place": "block.crop.place", "block.roots.place": "block.grass.place",
"block.roots.hit": "block.crop.hit", "block.roots.hit": "block.grass.hit",
"block.roots.fall": "block.crop.fall", "block.roots.fall": "block.grass.fall",
"block.nether_bricks.break": "block.metal.break", "block.nether_bricks.break": "block.metal.break",
"block.nether_bricks.step": "block.metal.step", "block.nether_bricks.step": "block.metal.step",
"block.nether_bricks.place": "block.metal.place", "block.nether_bricks.place": "block.metal.place",
@ -5542,10 +5542,10 @@
"block.nether_sprouts.hit": "block.sand.hit", "block.nether_sprouts.hit": "block.sand.hit",
"block.nether_sprouts.fall": "block.sand.fall", "block.nether_sprouts.fall": "block.sand.fall",
"block.fungi.break": "block.grass.break", "block.fungi.break": "block.grass.break",
"block.fungi.step": "block.sweet_berry_bush.step", "block.fungi.step": "block.grass.step",
"block.fungi.place": "block.sweet_berry_bush.place", "block.fungi.place": "block.grass.place",
"block.fungi.hit": "block.sweet_berry_bush.hit", "block.fungi.hit": "block.grass.hit",
"block.fungi.fall": "block.sweet_berry_bush.fall", "block.fungi.fall": "block.grass.fall",
"block.weeping_vines.break": "block.wet_grass.break", "block.weeping_vines.break": "block.wet_grass.break",
"block.weeping_vines.step": "block.wet_grass.step", "block.weeping_vines.step": "block.wet_grass.step",
"block.weeping_vines.place": "block.wet_grass.place", "block.weeping_vines.place": "block.wet_grass.place",