seperate all the skin layer parts out into different properties
This commit is contained in:
parent
f6f861a652
commit
7a3bf0deb0
10 changed files with 39 additions and 60 deletions
|
@ -24,14 +24,20 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
|||
registerSerializer(new ItemStackPropertySerializer());
|
||||
|
||||
registerType("glow", NamedTextColor.class);
|
||||
registerType("skin_layers", true);
|
||||
registerType("fire", false);
|
||||
registerType("invisible", false);
|
||||
registerType("silent", false);
|
||||
registerType("skin", SkinDescriptor.class);
|
||||
registerType("name", Component.class);
|
||||
registerType("look", false);
|
||||
registerType("cape", true);
|
||||
|
||||
registerType("skin_cape", true);
|
||||
registerType("skin_jacket", true);
|
||||
registerType("skin_left_sleeve", true);
|
||||
registerType("skin_right_sleeve", true);
|
||||
registerType("skin_left_leg", true);
|
||||
registerType("skin_right_leg", true);
|
||||
registerType("skin_hat", true);
|
||||
|
||||
registerType("helmet", ItemStack.class);
|
||||
registerType("chestplate", ItemStack.class);
|
||||
|
|
|
@ -19,8 +19,7 @@ import java.util.Collection;
|
|||
* 1.18-1.19 <a href="https://wiki.vg/index.php?title=Entity_metadata">...</a>
|
||||
*/
|
||||
public interface MetadataFactory {
|
||||
EntityData skinLayers(boolean enabled);
|
||||
EntityData cape(boolean enabled);
|
||||
EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat);
|
||||
EntityData effects(boolean onFire, boolean glowing, boolean invisible);
|
||||
EntityData silent(boolean enabled);
|
||||
Collection<EntityData> name(Component name);
|
||||
|
|
|
@ -4,11 +4,6 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
|||
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes;
|
||||
|
||||
public class V1_10MetadataFactory extends V1_9MetadataFactory {
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(13, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityData noGravity() {
|
||||
return newEntityData(5, EntityDataTypes.BOOLEAN, true);
|
||||
|
|
|
@ -4,12 +4,7 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
|||
|
||||
public class V1_14MetadataFactory extends V1_13MetadataFactory {
|
||||
@Override
|
||||
public EntityData skinLayers(boolean enabled) {
|
||||
return createSkinLayers(15, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(15, enabled);
|
||||
public EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return createSkinLayers(15, cape, jacket, leftSleeve, rightSleeve, leftLeg, rightLeg, hat);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
package lol.pyr.znpcsplus.metadata;
|
||||
|
||||
import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
||||
|
||||
public class V1_15MetadataFactory extends V1_14MetadataFactory {
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(16, enabled);
|
||||
}
|
||||
}
|
|
@ -2,9 +2,9 @@ package lol.pyr.znpcsplus.metadata;
|
|||
|
||||
import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
||||
|
||||
public class V1_16MetadataFactory extends V1_15MetadataFactory {
|
||||
public class V1_16MetadataFactory extends V1_14MetadataFactory {
|
||||
@Override
|
||||
public EntityData skinLayers(boolean enabled) {
|
||||
return createSkinLayers(16, enabled);
|
||||
public EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return createSkinLayers(16, cape, jacket, leftSleeve, rightSleeve, leftLeg, rightLeg, hat);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,7 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
|||
|
||||
public class V1_17MetadataFactory extends V1_16MetadataFactory {
|
||||
@Override
|
||||
public EntityData skinLayers(boolean enabled) {
|
||||
return createSkinLayers(17, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(17, enabled);
|
||||
public EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return createSkinLayers(17, cape, jacket, leftSleeve, rightSleeve, leftLeg, rightLeg, hat);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,13 +11,8 @@ import java.util.Collection;
|
|||
|
||||
public class V1_8MetadataFactory implements MetadataFactory {
|
||||
@Override
|
||||
public EntityData skinLayers(boolean enabled) {
|
||||
return createSkinLayers(12, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(10, enabled);
|
||||
public EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return createSkinLayers(12, cape, jacket, leftSleeve, rightSleeve, leftLeg, rightLeg, hat);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -43,12 +38,16 @@ public class V1_8MetadataFactory implements MetadataFactory {
|
|||
return newEntityData(4, EntityDataTypes.BYTE, (byte) (enabled ? 1 : 0));
|
||||
}
|
||||
|
||||
protected EntityData createSkinLayers(int index, boolean enabled) {
|
||||
return newEntityData(index, EntityDataTypes.BYTE, enabled ? Byte.MAX_VALUE : (byte) 0);
|
||||
}
|
||||
|
||||
protected EntityData createCape(int index, boolean enabled) {
|
||||
return newEntityData(index, EntityDataTypes.BYTE, (byte) (enabled ? 1 : 0));
|
||||
protected EntityData createSkinLayers(int index, boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return newEntityData(index, EntityDataTypes.BYTE, (byte) (
|
||||
(cape ? 0x01 : 0) |
|
||||
(jacket ? 0x02 : 0) |
|
||||
(leftSleeve ? 0x04 : 0) |
|
||||
(rightSleeve ? 0x08 : 0) |
|
||||
(leftLeg ? 0x10 : 0) |
|
||||
(rightLeg ? 0x20 : 0) |
|
||||
(hat ? 0x40 : 0))
|
||||
);
|
||||
}
|
||||
|
||||
protected <T> EntityData newEntityData(int index, EntityDataType<T> type, T value) {
|
||||
|
|
|
@ -10,13 +10,8 @@ import java.util.Collection;
|
|||
|
||||
public class V1_9MetadataFactory extends V1_8MetadataFactory {
|
||||
@Override
|
||||
public EntityData skinLayers(boolean enabled) {
|
||||
return createSkinLayers(13, enabled);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EntityData cape(boolean enabled) {
|
||||
return createCape(12, enabled);
|
||||
public EntityData skinLayers(boolean cape, boolean jacket, boolean leftSleeve, boolean rightSleeve, boolean leftLeg, boolean rightLeg, boolean hat) {
|
||||
return createSkinLayers(13, cape, jacket, leftSleeve, rightSleeve, leftLeg, rightLeg, hat);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -126,10 +126,15 @@ public class V1_8PacketFactory implements PacketFactory {
|
|||
@Override
|
||||
public Map<Integer, EntityData> generateMetadata(Player player, PacketEntity entity, PropertyHolder properties) {
|
||||
HashMap<Integer, EntityData> data = new HashMap<>();
|
||||
if (entity.getType() == EntityTypes.PLAYER) {
|
||||
add(data, metadataFactory.skinLayers(properties.getProperty(propertyRegistry.getByName("skin_layers", Boolean.class))));
|
||||
add(data, metadataFactory.cape(properties.getProperty(propertyRegistry.getByName("cape", Boolean.class))));
|
||||
}
|
||||
if (entity.getType() == EntityTypes.PLAYER) add(data, metadataFactory.skinLayers(
|
||||
properties.getProperty(propertyRegistry.getByName("skin_cape", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_jacket", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_left_sleeve", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_right_sleeve", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_left_leg", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_right_leg", Boolean.class)),
|
||||
properties.getProperty(propertyRegistry.getByName("skin_hat", Boolean.class))
|
||||
));
|
||||
add(data, metadataFactory.effects(properties.getProperty(propertyRegistry.getByName("fire", Boolean.class)), false, properties.getProperty(propertyRegistry.getByName("fire", Boolean.class))));
|
||||
add(data, metadataFactory.silent(properties.getProperty(propertyRegistry.getByName("silent", Boolean.class))));
|
||||
if (properties.hasProperty(propertyRegistry.getByName("name"))) addAll(data, metadataFactory.name(properties.getProperty(propertyRegistry.getByName("name", Component.class))));
|
||||
|
|
Loading…
Reference in a new issue