Skip to content

Instantly share code, notes, and snippets.

@Daomephsta
Created September 14, 2019 21:32
Show Gist options
  • Save Daomephsta/9b9a8b775dab48fcd44c793cc4b8e8db to your computer and use it in GitHub Desktop.
Save Daomephsta/9b9a8b775dab48fcd44c793cc4b8e8db to your computer and use it in GitHub Desktop.
@Override
public AddAttributeModifiersRecipeProcessor read(String recipeId, PacketByteBuf bytes)
{
int uniqueKeys = bytes.readVarInt();
Multimap<String, Entry<EntityAttributeModifier, EquipmentSlot>> modifiers = ArrayListMultimap.create();
for (int i = 0; i < uniqueKeys; i++)
{
String attributeId = bytes.readString();
int valuesForKey = bytes.readVarInt();
for (int j = 0; j < valuesForKey; j++)
{
UUID uuid = bytes.readUuid();
String name = bytes.readString();
double amount = bytes.readDouble();
Operation operation = Operation.fromId(bytes.readVarInt());
EquipmentSlot slot = EquipmentSlot.values()[bytes.readVarInt()];
modifiers.put(attributeId, Pair.of(new EntityAttributeModifier(uuid, name, amount, operation), slot));
}
}
return new AddAttributeModifiersRecipeProcessor(modifiers);
}
@Override
public void write(PacketByteBuf bytes, AddAttributeModifiersRecipeProcessor instance)
{
bytes.writeVarInt(instance.modifiers.keySet().size());
for (String attributeId : instance.modifiers.keySet())
{
bytes.writeString(attributeId);
Collection<Entry<EntityAttributeModifier, EquipmentSlot>> attributeModifiers = instance.modifiers.get(attributeId);
bytes.writeVarInt(attributeModifiers.size());
for (Entry<EntityAttributeModifier, EquipmentSlot> entry : attributeModifiers)
{
EntityAttributeModifier modifier = entry.getKey();
EquipmentSlot slot = entry.getValue();
bytes.writeUuid(modifier.getId());
bytes.writeString(modifier.getName());
bytes.writeDouble(modifier.getAmount());
bytes.writeVarInt(modifier.getOperation().getId());
bytes.writeVarInt(slot.ordinal());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment