Move type instances out of its enclosing class

Type constants being hold by its own abstract class has lead to classloading issues in the past, now we're finally free
This commit is contained in:
Nassim Jahnke 2024-05-11 19:01:31 +02:00
parent ca25e62d2d
commit 5286efde15
No known key found for this signature in database
GPG Key ID: EF6771C01F6EF02F
236 changed files with 4703 additions and 4466 deletions

View File

@ -48,40 +48,41 @@ import com.viaversion.viaversion.api.minecraft.item.data.ToolProperties;
import com.viaversion.viaversion.api.minecraft.item.data.Unbreakable;
import com.viaversion.viaversion.api.minecraft.item.data.WrittenBook;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.util.Unit;
public record StructuredDataKey<T>(String identifier, Type<T> type) {
public static final StructuredDataKey<CompoundTag> CUSTOM_DATA = new StructuredDataKey<>("custom_data", Type.COMPOUND_TAG);
public static final StructuredDataKey<Integer> MAX_STACK_SIZE = new StructuredDataKey<>("max_stack_size", Type.VAR_INT);
public static final StructuredDataKey<Integer> MAX_DAMAGE = new StructuredDataKey<>("max_damage", Type.VAR_INT);
public static final StructuredDataKey<Integer> DAMAGE = new StructuredDataKey<>("damage", Type.VAR_INT);
public static final StructuredDataKey<CompoundTag> CUSTOM_DATA = new StructuredDataKey<>("custom_data", Types.COMPOUND_TAG);
public static final StructuredDataKey<Integer> MAX_STACK_SIZE = new StructuredDataKey<>("max_stack_size", Types.VAR_INT);
public static final StructuredDataKey<Integer> MAX_DAMAGE = new StructuredDataKey<>("max_damage", Types.VAR_INT);
public static final StructuredDataKey<Integer> DAMAGE = new StructuredDataKey<>("damage", Types.VAR_INT);
public static final StructuredDataKey<Unbreakable> UNBREAKABLE = new StructuredDataKey<>("unbreakable", Unbreakable.TYPE);
public static final StructuredDataKey<Tag> CUSTOM_NAME = new StructuredDataKey<>("custom_name", Type.TAG);
public static final StructuredDataKey<Tag> ITEM_NAME = new StructuredDataKey<>("item_name", Type.TAG);
public static final StructuredDataKey<Tag[]> LORE = new StructuredDataKey<>("lore", Type.TAG_ARRAY);
public static final StructuredDataKey<Integer> RARITY = new StructuredDataKey<>("rarity", Type.VAR_INT);
public static final StructuredDataKey<Tag> CUSTOM_NAME = new StructuredDataKey<>("custom_name", Types.TAG);
public static final StructuredDataKey<Tag> ITEM_NAME = new StructuredDataKey<>("item_name", Types.TAG);
public static final StructuredDataKey<Tag[]> LORE = new StructuredDataKey<>("lore", Types.TAG_ARRAY);
public static final StructuredDataKey<Integer> RARITY = new StructuredDataKey<>("rarity", Types.VAR_INT);
public static final StructuredDataKey<Enchantments> ENCHANTMENTS = new StructuredDataKey<>("enchantments", Enchantments.TYPE);
public static final StructuredDataKey<AdventureModePredicate> CAN_PLACE_ON = new StructuredDataKey<>("can_place_on", AdventureModePredicate.TYPE);
public static final StructuredDataKey<AdventureModePredicate> CAN_BREAK = new StructuredDataKey<>("can_break", AdventureModePredicate.TYPE);
public static final StructuredDataKey<AttributeModifiers> ATTRIBUTE_MODIFIERS = new StructuredDataKey<>("attribute_modifiers", AttributeModifiers.TYPE);
public static final StructuredDataKey<Integer> CUSTOM_MODEL_DATA = new StructuredDataKey<>("custom_model_data", Type.VAR_INT);
public static final StructuredDataKey<Unit> HIDE_ADDITIONAL_TOOLTIP = new StructuredDataKey<>("hide_additional_tooltip", Type.EMPTY);
public static final StructuredDataKey<Unit> HIDE_TOOLTIP = new StructuredDataKey<>("hide_tooltip", Type.EMPTY);
public static final StructuredDataKey<Integer> REPAIR_COST = new StructuredDataKey<>("repair_cost", Type.VAR_INT);
public static final StructuredDataKey<Unit> CREATIVE_SLOT_LOCK = new StructuredDataKey<>("creative_slot_lock", Type.EMPTY);
public static final StructuredDataKey<Boolean> ENCHANTMENT_GLINT_OVERRIDE = new StructuredDataKey<>("enchantment_glint_override", Type.BOOLEAN);
public static final StructuredDataKey<Tag> INTANGIBLE_PROJECTILE = new StructuredDataKey<>("intangible_projectile", Type.TAG); // Doesn't actually hold data
public static final StructuredDataKey<Integer> CUSTOM_MODEL_DATA = new StructuredDataKey<>("custom_model_data", Types.VAR_INT);
public static final StructuredDataKey<Unit> HIDE_ADDITIONAL_TOOLTIP = new StructuredDataKey<>("hide_additional_tooltip", Types.EMPTY);
public static final StructuredDataKey<Unit> HIDE_TOOLTIP = new StructuredDataKey<>("hide_tooltip", Types.EMPTY);
public static final StructuredDataKey<Integer> REPAIR_COST = new StructuredDataKey<>("repair_cost", Types.VAR_INT);
public static final StructuredDataKey<Unit> CREATIVE_SLOT_LOCK = new StructuredDataKey<>("creative_slot_lock", Types.EMPTY);
public static final StructuredDataKey<Boolean> ENCHANTMENT_GLINT_OVERRIDE = new StructuredDataKey<>("enchantment_glint_override", Types.BOOLEAN);
public static final StructuredDataKey<Tag> INTANGIBLE_PROJECTILE = new StructuredDataKey<>("intangible_projectile", Types.TAG); // Doesn't actually hold data
public static final StructuredDataKey<FoodProperties> FOOD = new StructuredDataKey<>("food", FoodProperties.TYPE);
public static final StructuredDataKey<Unit> FIRE_RESISTANT = new StructuredDataKey<>("fire_resistant", Type.EMPTY);
public static final StructuredDataKey<Unit> FIRE_RESISTANT = new StructuredDataKey<>("fire_resistant", Types.EMPTY);
public static final StructuredDataKey<ToolProperties> TOOL = new StructuredDataKey<>("tool", ToolProperties.TYPE);
public static final StructuredDataKey<Enchantments> STORED_ENCHANTMENTS = new StructuredDataKey<>("stored_enchantments", Enchantments.TYPE);
public static final StructuredDataKey<DyedColor> DYED_COLOR = new StructuredDataKey<>("dyed_color", DyedColor.TYPE);
public static final StructuredDataKey<Integer> MAP_COLOR = new StructuredDataKey<>("map_color", Type.INT);
public static final StructuredDataKey<Integer> MAP_ID = new StructuredDataKey<>("map_id", Type.VAR_INT);
public static final StructuredDataKey<CompoundTag> MAP_DECORATIONS = new StructuredDataKey<>("map_decorations", Type.COMPOUND_TAG);
public static final StructuredDataKey<Integer> MAP_POST_PROCESSING = new StructuredDataKey<>("map_post_processing", Type.VAR_INT);
public static final StructuredDataKey<Integer> MAP_COLOR = new StructuredDataKey<>("map_color", Types.INT);
public static final StructuredDataKey<Integer> MAP_ID = new StructuredDataKey<>("map_id", Types.VAR_INT);
public static final StructuredDataKey<CompoundTag> MAP_DECORATIONS = new StructuredDataKey<>("map_decorations", Types.COMPOUND_TAG);
public static final StructuredDataKey<Integer> MAP_POST_PROCESSING = new StructuredDataKey<>("map_post_processing", Types.VAR_INT);
public static final StructuredDataKey<Item[]> CHARGED_PROJECTILES = new StructuredDataKey<>("charged_projectiles", Types1_20_5.ITEM_ARRAY);
public static final StructuredDataKey<Item[]> BUNDLE_CONTENTS = new StructuredDataKey<>("bundle_contents", Types1_20_5.ITEM_ARRAY);
public static final StructuredDataKey<PotionContents> POTION_CONTENTS = new StructuredDataKey<>("potion_contents", PotionContents.TYPE);
@ -89,26 +90,26 @@ public record StructuredDataKey<T>(String identifier, Type<T> type) {
public static final StructuredDataKey<FilterableString[]> WRITABLE_BOOK_CONTENT = new StructuredDataKey<>("writable_book_content", FilterableString.ARRAY_TYPE);
public static final StructuredDataKey<WrittenBook> WRITTEN_BOOK_CONTENT = new StructuredDataKey<>("written_book_content", WrittenBook.TYPE);
public static final StructuredDataKey<ArmorTrim> TRIM = new StructuredDataKey<>("trim", ArmorTrim.TYPE);
public static final StructuredDataKey<CompoundTag> DEBUG_STICK_STATE = new StructuredDataKey<>("debug_stick_state", Type.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> ENTITY_DATA = new StructuredDataKey<>("entity_data", Type.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> BUCKET_ENTITY_DATA = new StructuredDataKey<>("bucket_entity_data", Type.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> BLOCK_ENTITY_DATA = new StructuredDataKey<>("block_entity_data", Type.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> DEBUG_STICK_STATE = new StructuredDataKey<>("debug_stick_state", Types.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> ENTITY_DATA = new StructuredDataKey<>("entity_data", Types.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> BUCKET_ENTITY_DATA = new StructuredDataKey<>("bucket_entity_data", Types.COMPOUND_TAG);
public static final StructuredDataKey<CompoundTag> BLOCK_ENTITY_DATA = new StructuredDataKey<>("block_entity_data", Types.COMPOUND_TAG);
public static final StructuredDataKey<Holder<Instrument>> INSTRUMENT = new StructuredDataKey<>("instrument", Instrument.TYPE);
public static final StructuredDataKey<Integer> OMINOUS_BOTTLE_AMPLIFIER = new StructuredDataKey<>("ominous_bottle_amplifier", Type.VAR_INT);
public static final StructuredDataKey<Tag> RECIPES = new StructuredDataKey<>("recipes", Type.TAG);
public static final StructuredDataKey<Integer> OMINOUS_BOTTLE_AMPLIFIER = new StructuredDataKey<>("ominous_bottle_amplifier", Types.VAR_INT);
public static final StructuredDataKey<Tag> RECIPES = new StructuredDataKey<>("recipes", Types.TAG);
public static final StructuredDataKey<LodestoneTracker> LODESTONE_TRACKER = new StructuredDataKey<>("lodestone_tracker", LodestoneTracker.TYPE);
public static final StructuredDataKey<FireworkExplosion> FIREWORK_EXPLOSION = new StructuredDataKey<>("firework_explosion", FireworkExplosion.TYPE);
public static final StructuredDataKey<Fireworks> FIREWORKS = new StructuredDataKey<>("fireworks", Fireworks.TYPE);
public static final StructuredDataKey<GameProfile> PROFILE = new StructuredDataKey<>("profile", Type.GAME_PROFILE);
public static final StructuredDataKey<String> NOTE_BLOCK_SOUND = new StructuredDataKey<>("note_block_sound", Type.STRING);
public static final StructuredDataKey<GameProfile> PROFILE = new StructuredDataKey<>("profile", Types.GAME_PROFILE);
public static final StructuredDataKey<String> NOTE_BLOCK_SOUND = new StructuredDataKey<>("note_block_sound", Types.STRING);
public static final StructuredDataKey<BannerPatternLayer[]> BANNER_PATTERNS = new StructuredDataKey<>("banner_patterns", BannerPatternLayer.ARRAY_TYPE);
public static final StructuredDataKey<Integer> BASE_COLOR = new StructuredDataKey<>("base_color", Type.VAR_INT);
public static final StructuredDataKey<Integer> BASE_COLOR = new StructuredDataKey<>("base_color", Types.VAR_INT);
public static final StructuredDataKey<PotDecorations> POT_DECORATIONS = new StructuredDataKey<>("pot_decorations", PotDecorations.TYPE);
public static final StructuredDataKey<Item[]> CONTAINER = new StructuredDataKey<>("container", Types1_20_5.ITEM_ARRAY);
public static final StructuredDataKey<BlockStateProperties> BLOCK_STATE = new StructuredDataKey<>("block_state", BlockStateProperties.TYPE);
public static final StructuredDataKey<Bee[]> BEES = new StructuredDataKey<>("bees", Bee.ARRAY_TYPE);
public static final StructuredDataKey<Tag> LOCK = new StructuredDataKey<>("lock", Type.TAG);
public static final StructuredDataKey<CompoundTag> CONTAINER_LOOT = new StructuredDataKey<>("container_loot", Type.COMPOUND_TAG);
public static final StructuredDataKey<Tag> LOCK = new StructuredDataKey<>("lock", Types.TAG);
public static final StructuredDataKey<CompoundTag> CONTAINER_LOOT = new StructuredDataKey<>("container_loot", Types.COMPOUND_TAG);
@Override
public String toString() {

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.nbt.tag.Tag;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@ -35,35 +36,35 @@ public record ArmorTrimMaterial(String assetName, int itemId, float itemModelInd
public static final HolderType<ArmorTrimMaterial> TYPE = new HolderType<>() {
@Override
public ArmorTrimMaterial readDirect(final ByteBuf buffer) {
final String assetName = Type.STRING.read(buffer);
final int item = Type.VAR_INT.readPrimitive(buffer);
final String assetName = Types.STRING.read(buffer);
final int item = Types.VAR_INT.readPrimitive(buffer);
final float itemModelIndex = buffer.readFloat();
final int overrideArmorMaterialsSize = Type.VAR_INT.readPrimitive(buffer);
final int overrideArmorMaterialsSize = Types.VAR_INT.readPrimitive(buffer);
final Int2ObjectMap<String> overrideArmorMaterials = new Int2ObjectOpenHashMap<>(overrideArmorMaterialsSize);
for (int i = 0; i < overrideArmorMaterialsSize; i++) {
final int key = Type.VAR_INT.readPrimitive(buffer);
final String value = Type.STRING.read(buffer);
final int key = Types.VAR_INT.readPrimitive(buffer);
final String value = Types.STRING.read(buffer);
overrideArmorMaterials.put(key, value);
}
final Tag description = Type.TAG.read(buffer);
final Tag description = Types.TAG.read(buffer);
return new ArmorTrimMaterial(assetName, item, itemModelIndex, overrideArmorMaterials, description);
}
@Override
public void writeDirect(final ByteBuf buffer, final ArmorTrimMaterial value) {
Type.STRING.write(buffer, value.assetName());
Type.VAR_INT.writePrimitive(buffer, value.itemId());
Types.STRING.write(buffer, value.assetName());
Types.VAR_INT.writePrimitive(buffer, value.itemId());
buffer.writeFloat(value.itemModelIndex());
Type.VAR_INT.writePrimitive(buffer, value.overrideArmorMaterials().size());
Types.VAR_INT.writePrimitive(buffer, value.overrideArmorMaterials().size());
for (final Int2ObjectMap.Entry<String> entry : value.overrideArmorMaterials().int2ObjectEntrySet()) {
Type.VAR_INT.writePrimitive(buffer, entry.getIntKey());
Type.STRING.write(buffer, entry.getValue());
Types.VAR_INT.writePrimitive(buffer, entry.getIntKey());
Types.STRING.write(buffer, entry.getValue());
}
Type.TAG.write(buffer, value.description());
Types.TAG.write(buffer, value.description());
}
};

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.nbt.tag.Tag;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import io.netty.buffer.ByteBuf;
@ -32,18 +33,18 @@ public record ArmorTrimPattern(String assetName, int itemId, Tag description, bo
public static final HolderType<ArmorTrimPattern> TYPE = new HolderType<>() {
@Override
public ArmorTrimPattern readDirect(final ByteBuf buffer) {
final String assetName = Type.STRING.read(buffer);
final int itemId = Type.VAR_INT.readPrimitive(buffer);
final Tag description = Type.TAG.read(buffer);
final String assetName = Types.STRING.read(buffer);
final int itemId = Types.VAR_INT.readPrimitive(buffer);
final Tag description = Types.TAG.read(buffer);
final boolean decal = buffer.readBoolean();
return new ArmorTrimPattern(assetName, itemId, description, decal);
}
@Override
public void writeDirect(final ByteBuf buffer, final ArmorTrimPattern value) {
Type.STRING.write(buffer, value.assetName());
Type.VAR_INT.writePrimitive(buffer, value.itemId());
Type.TAG.write(buffer, value.description());
Types.STRING.write(buffer, value.assetName());
Types.VAR_INT.writePrimitive(buffer, value.itemId());
Types.TAG.write(buffer, value.description());
buffer.writeBoolean(value.decal());
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -31,17 +32,17 @@ public record AttributeModifier(int attribute, ModifierData modifier, int slotTy
public static final Type<AttributeModifier> TYPE = new Type<>(AttributeModifier.class) {
@Override
public AttributeModifier read(final ByteBuf buffer) {
final int attribute = Type.VAR_INT.readPrimitive(buffer);
final int attribute = Types.VAR_INT.readPrimitive(buffer);
final ModifierData modifier = ModifierData.TYPE.read(buffer);
final int slot = Type.VAR_INT.readPrimitive(buffer);
final int slot = Types.VAR_INT.readPrimitive(buffer);
return new AttributeModifier(attribute, modifier, slot);
}
@Override
public void write(final ByteBuf buffer, final AttributeModifier value) {
Type.VAR_INT.writePrimitive(buffer, value.attribute);
Types.VAR_INT.writePrimitive(buffer, value.attribute);
ModifierData.TYPE.write(buffer, value.modifier);
Type.VAR_INT.writePrimitive(buffer, value.slotType);
Types.VAR_INT.writePrimitive(buffer, value.slotType);
}
};
public static final Type<AttributeModifier[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import io.netty.buffer.ByteBuf;
@ -31,15 +32,15 @@ public record BannerPattern(String assetId, String translationKey) {
public static final HolderType<BannerPattern> TYPE = new HolderType<>() {
@Override
public BannerPattern readDirect(final ByteBuf buffer) {
final String assetId = Type.STRING.read(buffer);
final String translationKey = Type.STRING.read(buffer);
final String assetId = Types.STRING.read(buffer);
final String translationKey = Types.STRING.read(buffer);
return new BannerPattern(assetId, translationKey);
}
@Override
public void writeDirect(final ByteBuf buffer, final BannerPattern value) {
Type.STRING.write(buffer, value.assetId);
Type.STRING.write(buffer, value.translationKey);
Types.STRING.write(buffer, value.assetId);
Types.STRING.write(buffer, value.translationKey);
}
};

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.minecraft.Holder;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -33,14 +34,14 @@ public record BannerPatternLayer(Holder<BannerPattern> pattern, int dyeColor) {
@Override
public BannerPatternLayer read(final ByteBuf buffer) {
final Holder<BannerPattern> pattern = BannerPattern.TYPE.read(buffer);
final int color = Type.VAR_INT.readPrimitive(buffer);
final int color = Types.VAR_INT.readPrimitive(buffer);
return new BannerPatternLayer(pattern, color);
}
@Override
public void write(final ByteBuf buffer, final BannerPatternLayer value) {
BannerPattern.TYPE.write(buffer, value.pattern);
Type.VAR_INT.writePrimitive(buffer, value.dyeColor);
Types.VAR_INT.writePrimitive(buffer, value.dyeColor);
}
};
public static final Type<BannerPatternLayer[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -32,17 +33,17 @@ public record Bee(CompoundTag entityData, int ticksInHive, int minTicksInHive) {
public static final Type<Bee> TYPE = new Type<>(Bee.class) {
@Override
public Bee read(final ByteBuf buffer) {
final CompoundTag entityData = Type.COMPOUND_TAG.read(buffer);
final int ticksInHive = Type.VAR_INT.readPrimitive(buffer);
final int minTicksInHive = Type.VAR_INT.readPrimitive(buffer);
final CompoundTag entityData = Types.COMPOUND_TAG.read(buffer);
final int ticksInHive = Types.VAR_INT.readPrimitive(buffer);
final int minTicksInHive = Types.VAR_INT.readPrimitive(buffer);
return new Bee(entityData, ticksInHive, minTicksInHive);
}
@Override
public void write(final ByteBuf buffer, final Bee value) {
Type.COMPOUND_TAG.write(buffer, value.entityData);
Type.VAR_INT.writePrimitive(buffer, value.ticksInHive);
Type.VAR_INT.writePrimitive(buffer, value.minTicksInHive);
Types.COMPOUND_TAG.write(buffer, value.entityData);
Types.VAR_INT.writePrimitive(buffer, value.ticksInHive);
Types.VAR_INT.writePrimitive(buffer, value.minTicksInHive);
}
};
public static final Type<Bee[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.minecraft.HolderSet;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -35,22 +36,22 @@ public record BlockPredicate(@Nullable HolderSet holderSet, StatePropertyMatcher
public static final Type<BlockPredicate> TYPE = new Type<>(BlockPredicate.class) {
@Override
public BlockPredicate read(final ByteBuf buffer) {
final HolderSet holders = Type.OPTIONAL_HOLDER_SET.read(buffer);
final HolderSet holders = Types.OPTIONAL_HOLDER_SET.read(buffer);
final StatePropertyMatcher[] propertyMatchers = buffer.readBoolean() ? StatePropertyMatcher.ARRAY_TYPE.read(buffer) : null;
final CompoundTag tag = Type.OPTIONAL_COMPOUND_TAG.read(buffer);
final CompoundTag tag = Types.OPTIONAL_COMPOUND_TAG.read(buffer);
return new BlockPredicate(holders, propertyMatchers, tag);
}
@Override
public void write(final ByteBuf buffer, final BlockPredicate value) {
Type.OPTIONAL_HOLDER_SET.write(buffer, value.holderSet);
Types.OPTIONAL_HOLDER_SET.write(buffer, value.holderSet);
buffer.writeBoolean(value.propertyMatchers != null);
if (value.propertyMatchers != null) {
StatePropertyMatcher.ARRAY_TYPE.write(buffer, value.propertyMatchers);
}
Type.OPTIONAL_COMPOUND_TAG.write(buffer, value.tag);
Types.OPTIONAL_COMPOUND_TAG.write(buffer, value.tag);
}
};
public static final Type<BlockPredicate[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Map;
@ -32,20 +33,20 @@ public record BlockStateProperties(Map<String, String> properties) {
public static final Type<BlockStateProperties> TYPE = new Type<>(BlockStateProperties.class) {
@Override
public BlockStateProperties read(final ByteBuf buffer) {
final int size = Type.VAR_INT.readPrimitive(buffer);
final int size = Types.VAR_INT.readPrimitive(buffer);
final Map<String, String> properties = new Object2ObjectOpenHashMap<>(size);
for (int i = 0; i < size; i++) {
properties.put(Type.STRING.read(buffer), Type.STRING.read(buffer));
properties.put(Types.STRING.read(buffer), Types.STRING.read(buffer));
}
return new BlockStateProperties(properties);
}
@Override
public void write(final ByteBuf buffer, final BlockStateProperties value) {
Type.VAR_INT.writePrimitive(buffer, value.properties.size());
Types.VAR_INT.writePrimitive(buffer, value.properties.size());
for (final Map.Entry<String, String> entry : value.properties.entrySet()) {
Type.STRING.write(buffer, entry.getKey());
Type.STRING.write(buffer, entry.getValue());
Types.STRING.write(buffer, entry.getKey());
Types.STRING.write(buffer, entry.getValue());
}
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.ints.Int2IntMap;
import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
@ -33,10 +34,10 @@ public record Enchantments(Int2IntMap enchantments, boolean showInTooltip) {
@Override
public Enchantments read(final ByteBuf buffer) {
final Int2IntMap enchantments = new Int2IntOpenHashMap();
final int size = Type.VAR_INT.readPrimitive(buffer);
final int size = Types.VAR_INT.readPrimitive(buffer);
for (int i = 0; i < size; i++) {
final int id = Type.VAR_INT.readPrimitive(buffer);
final int level = Type.VAR_INT.readPrimitive(buffer);
final int id = Types.VAR_INT.readPrimitive(buffer);
final int level = Types.VAR_INT.readPrimitive(buffer);
enchantments.put(id, level);
}
@ -45,10 +46,10 @@ public record Enchantments(Int2IntMap enchantments, boolean showInTooltip) {
@Override
public void write(final ByteBuf buffer, final Enchantments value) {
Type.VAR_INT.writePrimitive(buffer, value.enchantments.size());
Types.VAR_INT.writePrimitive(buffer, value.enchantments.size());
for (final Int2IntMap.Entry entry : value.enchantments.int2IntEntrySet()) {
Type.VAR_INT.writePrimitive(buffer, entry.getIntKey());
Type.VAR_INT.writePrimitive(buffer, entry.getIntValue());
Types.VAR_INT.writePrimitive(buffer, entry.getIntKey());
Types.VAR_INT.writePrimitive(buffer, entry.getIntValue());
}
buffer.writeBoolean(value.showInTooltip());
}

View File

@ -24,12 +24,13 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.nbt.tag.Tag;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class FilterableComponent extends Filterable<Tag> {
public static final Type<FilterableComponent> TYPE = new FilterableType<>(Type.TAG, Type.OPTIONAL_TAG, FilterableComponent.class) {
public static final Type<FilterableComponent> TYPE = new FilterableType<>(Types.TAG, Types.OPTIONAL_TAG, FilterableComponent.class) {
@Override
protected FilterableComponent create(final Tag raw, final Tag filtered) {
return new FilterableComponent(raw, filtered);

View File

@ -23,12 +23,13 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import org.checkerframework.checker.nullness.qual.Nullable;
public final class FilterableString extends Filterable<String> {
public static final Type<FilterableString> TYPE = new FilterableType<>(Type.STRING, Type.OPTIONAL_STRING, FilterableString.class) {
public static final Type<FilterableString> TYPE = new FilterableType<>(Types.STRING, Types.OPTIONAL_STRING, FilterableString.class) {
@Override
protected FilterableString create(final String raw, final String filtered) {
return new FilterableString(raw, filtered);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -30,9 +31,9 @@ public record FireworkExplosion(int shape, int[] colors, int[] fadeColors, boole
public static final Type<FireworkExplosion> TYPE = new Type<>(FireworkExplosion.class) {
@Override
public FireworkExplosion read(final ByteBuf buffer) {
final int shape = Type.VAR_INT.readPrimitive(buffer);
final int[] colors = Type.INT_ARRAY_PRIMITIVE.read(buffer);
final int[] fadeColors = Type.INT_ARRAY_PRIMITIVE.read(buffer);
final int shape = Types.VAR_INT.readPrimitive(buffer);
final int[] colors = Types.INT_ARRAY_PRIMITIVE.read(buffer);
final int[] fadeColors = Types.INT_ARRAY_PRIMITIVE.read(buffer);
final boolean hasTrail = buffer.readBoolean();
final boolean hasTwinkle = buffer.readBoolean();
return new FireworkExplosion(shape, colors, fadeColors, hasTrail, hasTwinkle);
@ -40,9 +41,9 @@ public record FireworkExplosion(int shape, int[] colors, int[] fadeColors, boole
@Override
public void write(final ByteBuf buffer, final FireworkExplosion value) {
Type.VAR_INT.writePrimitive(buffer, value.shape);
Type.INT_ARRAY_PRIMITIVE.write(buffer, value.colors);
Type.INT_ARRAY_PRIMITIVE.write(buffer, value.fadeColors);
Types.VAR_INT.writePrimitive(buffer, value.shape);
Types.INT_ARRAY_PRIMITIVE.write(buffer, value.colors);
Types.INT_ARRAY_PRIMITIVE.write(buffer, value.fadeColors);
buffer.writeBoolean(value.hasTrail);
buffer.writeBoolean(value.hasTwinkle);
}

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public record Fireworks(int flightDuration, FireworkExplosion[] explosions) {
@ -30,14 +31,14 @@ public record Fireworks(int flightDuration, FireworkExplosion[] explosions) {
public static final Type<Fireworks> TYPE = new Type<>(Fireworks.class) {
@Override
public Fireworks read(final ByteBuf buffer) {
final int flightDuration = Type.VAR_INT.readPrimitive(buffer);
final int flightDuration = Types.VAR_INT.readPrimitive(buffer);
final FireworkExplosion[] explosions = FireworkExplosion.ARRAY_TYPE.read(buffer);
return new Fireworks(flightDuration, explosions);
}
@Override
public void write(final ByteBuf buffer, final Fireworks value) {
Type.VAR_INT.writePrimitive(buffer, value.flightDuration);
Types.VAR_INT.writePrimitive(buffer, value.flightDuration);
FireworkExplosion.ARRAY_TYPE.write(buffer, value.explosions);
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public record FoodProperties(int nutrition, float saturationModifier, boolean canAlwaysEat, float eatSeconds,
@ -31,7 +32,7 @@ public record FoodProperties(int nutrition, float saturationModifier, boolean ca
public static final Type<FoodProperties> TYPE = new Type<>(FoodProperties.class) {
@Override
public FoodProperties read(final ByteBuf buffer) {
final int nutrition = Type.VAR_INT.readPrimitive(buffer);
final int nutrition = Types.VAR_INT.readPrimitive(buffer);
final float saturationModifier = buffer.readFloat();
final boolean canAlwaysEat = buffer.readBoolean();
final float eatSeconds = buffer.readFloat();
@ -41,7 +42,7 @@ public record FoodProperties(int nutrition, float saturationModifier, boolean ca
@Override
public void write(final ByteBuf buffer, final FoodProperties value) {
Type.VAR_INT.writePrimitive(buffer, value.nutrition);
Types.VAR_INT.writePrimitive(buffer, value.nutrition);
buffer.writeFloat(value.saturationModifier);
buffer.writeBoolean(value.canAlwaysEat);
buffer.writeFloat(value.eatSeconds);

View File

@ -24,7 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.minecraft.Holder;
import com.viaversion.viaversion.api.minecraft.SoundEvent;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import io.netty.buffer.ByteBuf;
@ -33,16 +33,16 @@ public record Instrument(Holder<SoundEvent> soundEvent, int useDuration, float r
public static final HolderType<Instrument> TYPE = new HolderType<>() {
@Override
public Instrument readDirect(final ByteBuf buffer) {
final Holder<SoundEvent> soundEvent = Type.SOUND_EVENT.read(buffer);
final int useDuration = Type.VAR_INT.readPrimitive(buffer);
final Holder<SoundEvent> soundEvent = Types.SOUND_EVENT.read(buffer);
final int useDuration = Types.VAR_INT.readPrimitive(buffer);
final float range = buffer.readFloat();
return new Instrument(soundEvent, useDuration, range);
}
@Override
public void writeDirect(final ByteBuf buffer, final Instrument value) {
Type.SOUND_EVENT.write(buffer, value.soundEvent());
Type.VAR_INT.writePrimitive(buffer, value.useDuration());
Types.SOUND_EVENT.write(buffer, value.soundEvent());
Types.VAR_INT.writePrimitive(buffer, value.useDuration());
buffer.writeFloat(value.range());
}
};

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.minecraft.GlobalPosition;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -32,14 +33,14 @@ public record LodestoneTracker(@Nullable GlobalPosition position, boolean tracke
public static final Type<LodestoneTracker> TYPE = new Type<>(LodestoneTracker.class) {
@Override
public LodestoneTracker read(final ByteBuf buffer) {
final GlobalPosition position = Type.OPTIONAL_GLOBAL_POSITION.read(buffer);
final GlobalPosition position = Types.OPTIONAL_GLOBAL_POSITION.read(buffer);
final boolean tracked = buffer.readBoolean();
return new LodestoneTracker(position, tracked);
}
@Override
public void write(final ByteBuf buffer, final LodestoneTracker value) {
Type.OPTIONAL_GLOBAL_POSITION.write(buffer, value.position);
Types.OPTIONAL_GLOBAL_POSITION.write(buffer, value.position);
buffer.writeBoolean(value.tracked);
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public record MapDecoration(String type, double x, double z, float rotation) {
@ -30,16 +31,16 @@ public record MapDecoration(String type, double x, double z, float rotation) {
public static final Type<MapDecoration> TYPE = new Type<>(MapDecoration.class) {
@Override
public MapDecoration read(final ByteBuf buffer) {
final String type = Type.STRING.read(buffer);
final double x = Type.DOUBLE.readPrimitive(buffer);
final double z = Type.DOUBLE.readPrimitive(buffer);
final float rotation = Type.FLOAT.readPrimitive(buffer);
final String type = Types.STRING.read(buffer);
final double x = Types.DOUBLE.readPrimitive(buffer);
final double z = Types.DOUBLE.readPrimitive(buffer);
final float rotation = Types.FLOAT.readPrimitive(buffer);
return new MapDecoration(type, x, z, rotation);
}
@Override
public void write(final ByteBuf buffer, final MapDecoration value) {
Type.STRING.write(buffer, value.type);
Types.STRING.write(buffer, value.type);
buffer.writeDouble(value.x);
buffer.writeDouble(value.z);
buffer.writeFloat(value.rotation);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.objects.Object2ObjectMap;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
@ -34,9 +35,9 @@ public record MapDecorations(Map<String, MapDecoration> decorations) {
@Override
public MapDecorations read(final ByteBuf buffer) {
final Object2ObjectMap<String, MapDecoration> decorations = new Object2ObjectOpenHashMap<>();
final int size = Type.VAR_INT.readPrimitive(buffer);
final int size = Types.VAR_INT.readPrimitive(buffer);
for (int i = 0; i < size; i++) {
final String id = Type.STRING.read(buffer);
final String id = Types.STRING.read(buffer);
final MapDecoration decoration = MapDecoration.TYPE.read(buffer);
decorations.put(id, decoration);
}
@ -45,9 +46,9 @@ public record MapDecorations(Map<String, MapDecoration> decorations) {
@Override
public void write(final ByteBuf buffer, final MapDecorations value) {
Type.VAR_INT.writePrimitive(buffer, value.decorations.size());
Types.VAR_INT.writePrimitive(buffer, value.decorations.size());
for (final Map.Entry<String, MapDecoration> entry : value.decorations.entrySet()) {
Type.STRING.write(buffer, entry.getKey());
Types.STRING.write(buffer, entry.getKey());
MapDecoration.TYPE.write(buffer, entry.getValue());
}
}

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.util.UUID;
@ -31,19 +32,19 @@ public record ModifierData(UUID uuid, String name, double amount, int operation)
public static final Type<ModifierData> TYPE = new Type<>(ModifierData.class) {
@Override
public ModifierData read(final ByteBuf buffer) {
final UUID uuid = Type.UUID.read(buffer);
final String name = Type.STRING.read(buffer);
final UUID uuid = Types.UUID.read(buffer);
final String name = Types.STRING.read(buffer);
final double amount = buffer.readDouble();
final int operation = Type.VAR_INT.readPrimitive(buffer);
final int operation = Types.VAR_INT.readPrimitive(buffer);
return new ModifierData(uuid, name, amount, operation);
}
@Override
public void write(final ByteBuf buffer, final ModifierData value) {
Type.UUID.write(buffer, value.uuid);
Type.STRING.write(buffer, value.name);
Types.UUID.write(buffer, value.uuid);
Types.STRING.write(buffer, value.name);
buffer.writeDouble(value.amount);
Type.VAR_INT.writePrimitive(buffer, value.operation);
Types.VAR_INT.writePrimitive(buffer, value.operation);
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public final class PotDecorations {
@ -30,12 +31,12 @@ public final class PotDecorations {
public static final Type<PotDecorations> TYPE = new Type<>(PotDecorations.class) {
@Override
public PotDecorations read(final ByteBuf buffer) {
return new PotDecorations(Type.VAR_INT_ARRAY_PRIMITIVE.read(buffer));
return new PotDecorations(Types.VAR_INT_ARRAY_PRIMITIVE.read(buffer));
}
@Override
public void write(final ByteBuf buffer, final PotDecorations value) {
Type.VAR_INT_ARRAY_PRIMITIVE.write(buffer, value.itemIds());
Types.VAR_INT_ARRAY_PRIMITIVE.write(buffer, value.itemIds());
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -31,7 +32,7 @@ public record PotionContents(@Nullable Integer potion, @Nullable Integer customC
public static final Type<PotionContents> TYPE = new Type<>(PotionContents.class) {
@Override
public PotionContents read(final ByteBuf buffer) {
final Integer potion = buffer.readBoolean() ? Type.VAR_INT.readPrimitive(buffer) : null;
final Integer potion = buffer.readBoolean() ? Types.VAR_INT.readPrimitive(buffer) : null;
final Integer customColor = buffer.readBoolean() ? buffer.readInt() : null;
final PotionEffect[] customEffects = PotionEffect.ARRAY_TYPE.read(buffer);
return new PotionContents(potion, customColor, customEffects);
@ -41,7 +42,7 @@ public record PotionContents(@Nullable Integer potion, @Nullable Integer customC
public void write(final ByteBuf buffer, final PotionContents value) {
buffer.writeBoolean(value.potion != null);
if (value.potion != null) {
Type.VAR_INT.writePrimitive(buffer, value.potion);
Types.VAR_INT.writePrimitive(buffer, value.potion);
}
buffer.writeBoolean(value.customColor != null);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -31,14 +32,14 @@ public record PotionEffect(int effect, PotionEffectData effectData) {
public static final Type<PotionEffect> TYPE = new Type<>(PotionEffect.class) {
@Override
public PotionEffect read(final ByteBuf buffer) {
final int effect = Type.VAR_INT.readPrimitive(buffer);
final int effect = Types.VAR_INT.readPrimitive(buffer);
final PotionEffectData effectData = PotionEffectData.TYPE.read(buffer);
return new PotionEffect(effect, effectData);
}
@Override
public void write(final ByteBuf buffer, final PotionEffect value) {
Type.VAR_INT.writePrimitive(buffer, value.effect);
Types.VAR_INT.writePrimitive(buffer, value.effect);
PotionEffectData.TYPE.write(buffer, value.effectData);
}
};

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -33,8 +34,8 @@ public record PotionEffectData(int amplifier, int duration, boolean ambient, boo
public static final Type<PotionEffectData> TYPE = new Type<>(PotionEffectData.class) {
@Override
public PotionEffectData read(final ByteBuf buffer) {
final int amplifier = Type.VAR_INT.readPrimitive(buffer);
final int duration = Type.VAR_INT.readPrimitive(buffer);
final int amplifier = Types.VAR_INT.readPrimitive(buffer);
final int duration = Types.VAR_INT.readPrimitive(buffer);
final boolean ambient = buffer.readBoolean();
final boolean showParticles = buffer.readBoolean();
final boolean showIcon = buffer.readBoolean();
@ -44,8 +45,8 @@ public record PotionEffectData(int amplifier, int duration, boolean ambient, boo
@Override
public void write(final ByteBuf buffer, final PotionEffectData value) {
Type.VAR_INT.writePrimitive(buffer, value.amplifier);
Type.VAR_INT.writePrimitive(buffer, value.duration);
Types.VAR_INT.writePrimitive(buffer, value.amplifier);
Types.VAR_INT.writePrimitive(buffer, value.duration);
buffer.writeBoolean(value.ambient);
buffer.writeBoolean(value.showParticles);
buffer.writeBoolean(value.showIcon);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import com.viaversion.viaversion.util.Either;
import io.netty.buffer.ByteBuf;
@ -34,27 +35,27 @@ public record StatePropertyMatcher(String name, Either<String, RangedMatcher> ma
public static final Type<StatePropertyMatcher> TYPE = new Type<>(StatePropertyMatcher.class) {
@Override
public StatePropertyMatcher read(final ByteBuf buffer) {
final String name = Type.STRING.read(buffer);
final String name = Types.STRING.read(buffer);
if (buffer.readBoolean()) {
final String value = Type.STRING.read(buffer);
final String value = Types.STRING.read(buffer);
return new StatePropertyMatcher(name, Either.left(value));
} else {
final String minValue = Type.OPTIONAL_STRING.read(buffer);
final String maxValue = Type.OPTIONAL_STRING.read(buffer);
final String minValue = Types.OPTIONAL_STRING.read(buffer);
final String maxValue = Types.OPTIONAL_STRING.read(buffer);
return new StatePropertyMatcher(name, Either.right(new RangedMatcher(minValue, maxValue)));
}
}
@Override
public void write(final ByteBuf buffer, final StatePropertyMatcher value) {
Type.STRING.write(buffer, value.name);
Types.STRING.write(buffer, value.name);
if (value.matcher.isLeft()) {
buffer.writeBoolean(true);
Type.STRING.write(buffer, value.matcher.left());
Types.STRING.write(buffer, value.matcher.left());
} else {
buffer.writeBoolean(false);
Type.OPTIONAL_STRING.write(buffer, value.matcher.right().minValue());
Type.OPTIONAL_STRING.write(buffer, value.matcher.right().maxValue());
Types.OPTIONAL_STRING.write(buffer, value.matcher.right().minValue());
Types.OPTIONAL_STRING.write(buffer, value.matcher.right().maxValue());
}
}
};

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
@ -31,15 +32,15 @@ public record SuspiciousStewEffect(int mobEffect, int duration) {
public static final Type<SuspiciousStewEffect> TYPE = new Type<>(SuspiciousStewEffect.class) {
@Override
public SuspiciousStewEffect read(final ByteBuf buffer) {
final int effect = Type.VAR_INT.readPrimitive(buffer);
final int duration = Type.VAR_INT.readPrimitive(buffer);
final int effect = Types.VAR_INT.readPrimitive(buffer);
final int duration = Types.VAR_INT.readPrimitive(buffer);
return new SuspiciousStewEffect(effect, duration);
}
@Override
public void write(final ByteBuf buffer, final SuspiciousStewEffect value) {
Type.VAR_INT.writePrimitive(buffer, value.mobEffect);
Type.VAR_INT.writePrimitive(buffer, value.duration);
Types.VAR_INT.writePrimitive(buffer, value.mobEffect);
Types.VAR_INT.writePrimitive(buffer, value.duration);
}
};
public static final Type<SuspiciousStewEffect[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public record ToolProperties(ToolRule[] rules, float defaultMiningSpeed, int damagePerBlock) {
@ -32,7 +33,7 @@ public record ToolProperties(ToolRule[] rules, float defaultMiningSpeed, int dam
public ToolProperties read(final ByteBuf buffer) {
final ToolRule[] rules = ToolRule.ARRAY_TYPE.read(buffer);
final float defaultMiningSpeed = buffer.readFloat();
final int damagePerBlock = Type.VAR_INT.readPrimitive(buffer);
final int damagePerBlock = Types.VAR_INT.readPrimitive(buffer);
return new ToolProperties(rules, defaultMiningSpeed, damagePerBlock);
}
@ -40,7 +41,7 @@ public record ToolProperties(ToolRule[] rules, float defaultMiningSpeed, int dam
public void write(final ByteBuf buffer, final ToolProperties value) {
ToolRule.ARRAY_TYPE.write(buffer, value.rules());
buffer.writeFloat(value.defaultMiningSpeed());
Type.VAR_INT.writePrimitive(buffer, value.damagePerBlock());
Types.VAR_INT.writePrimitive(buffer, value.damagePerBlock());
}
};

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.minecraft.HolderSet;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -33,17 +34,17 @@ public record ToolRule(HolderSet blocks, @Nullable Float speed, @Nullable Boolea
public static final Type<ToolRule> TYPE = new Type<>(ToolRule.class) {
@Override
public ToolRule read(final ByteBuf buffer) {
final HolderSet blocks = Type.HOLDER_SET.read(buffer);
final Float speed = Type.OPTIONAL_FLOAT.read(buffer);
final Boolean correctForDrops = Type.OPTIONAL_BOOLEAN.read(buffer);
final HolderSet blocks = Types.HOLDER_SET.read(buffer);
final Float speed = Types.OPTIONAL_FLOAT.read(buffer);
final Boolean correctForDrops = Types.OPTIONAL_BOOLEAN.read(buffer);
return new ToolRule(blocks, speed, correctForDrops);
}
@Override
public void write(final ByteBuf buffer, final ToolRule value) {
Type.HOLDER_SET.write(buffer, value.blocks);
Type.OPTIONAL_FLOAT.write(buffer, value.speed);
Type.OPTIONAL_BOOLEAN.write(buffer, value.correctForDrops);
Types.HOLDER_SET.write(buffer, value.blocks);
Types.OPTIONAL_FLOAT.write(buffer, value.speed);
Types.OPTIONAL_BOOLEAN.write(buffer, value.correctForDrops);
}
};
public static final Type<ToolRule[]> ARRAY_TYPE = new ArrayType<>(TYPE);

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.minecraft.item.data;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public record WrittenBook(FilterableString title, String author, int generation, FilterableComponent[] pages,
@ -32,8 +33,8 @@ public record WrittenBook(FilterableString title, String author, int generation,
@Override
public WrittenBook read(final ByteBuf buffer) {
final FilterableString title = FilterableString.TYPE.read(buffer);
final String author = Type.STRING.read(buffer);
final int generation = Type.VAR_INT.readPrimitive(buffer);
final String author = Types.STRING.read(buffer);
final int generation = Types.VAR_INT.readPrimitive(buffer);
final FilterableComponent[] pages = FilterableComponent.ARRAY_TYPE.read(buffer);
final boolean resolved = buffer.readBoolean();
return new WrittenBook(title, author, generation, pages, resolved);
@ -42,8 +43,8 @@ public record WrittenBook(FilterableString title, String author, int generation,
@Override
public void write(final ByteBuf buffer, final WrittenBook value) {
FilterableString.TYPE.write(buffer, value.title);
Type.STRING.write(buffer, value.author);
Type.VAR_INT.writePrimitive(buffer, value.generation);
Types.STRING.write(buffer, value.author);
Types.VAR_INT.writePrimitive(buffer, value.generation);
FilterableComponent.ARRAY_TYPE.write(buffer, value.pages);
buffer.writeBoolean(value.resolved);
}

View File

@ -24,28 +24,27 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
public enum MetaType1_12 implements MetaType {
Byte(0, Type.BYTE),
VarInt(1, Type.VAR_INT),
Float(2, Type.FLOAT),
String(3, Type.STRING),
Chat(4, Type.COMPONENT),
Slot(5, Type.ITEM1_8),
Boolean(6, Type.BOOLEAN),
Vector3F(7, Type.ROTATION),
Position(8, Type.POSITION1_8),
OptPosition(9, Type.OPTIONAL_POSITION1_8),
Direction(10, Type.VAR_INT),
OptUUID(11, Type.OPTIONAL_UUID),
BlockID(12, Type.VAR_INT),
NBTTag(13, Type.NAMED_COMPOUND_TAG);
BYTE(Types.BYTE),
VAR_INT(Types.VAR_INT),
FLOAT(Types.FLOAT),
STRING(Types.STRING),
COMPONENT(Types.COMPONENT),
ITEM(Types.ITEM1_8),
BOOLEAN(Types.BOOLEAN),
ROTATIONS(Types.ROTATIONS),
BLOCK_POSITION(Types.BLOCK_POSITION1_8),
OPTIONAL_BLOCK_POSITION(Types.OPTIONAL_POSITION1_8),
DIRECTION(Types.VAR_INT),
OPTIONAL_UUID(Types.OPTIONAL_UUID),
OPTIONAL_BLOCK_STATE(Types.VAR_INT),
COMPOUND_TAG(Types.NAMED_COMPOUND_TAG);
private final int typeID;
private final Type type;
private final Type<?> type;
MetaType1_12(int typeID, Type type) {
this.typeID = typeID;
MetaType1_12(Type<?> type) {
this.type = type;
}
@ -55,7 +54,7 @@ public enum MetaType1_12 implements MetaType {
@Override
public int typeId() {
return typeID;
return ordinal();
}
@Override

View File

@ -24,22 +24,21 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
public enum MetaType1_8 implements MetaType {
Byte(0, Type.BYTE),
Short(1, Type.SHORT),
Int(2, Type.INT),
Float(3, Type.FLOAT),
String(4, Type.STRING),
Slot(5, Type.ITEM1_8),
Position(6, Type.VECTOR),
Rotation(7, Type.ROTATION);
BYTE(Types.BYTE),
SHORT(Types.SHORT),
INT(Types.INT),
FLOAT(Types.FLOAT),
STRING(Types.STRING),
ITEM(Types.ITEM1_8),
BLOCK_POSITION(Types.VECTOR),
ROTATIONS(Types.ROTATIONS);
private final int typeID;
private final Type type;
private final Type<?> type;
MetaType1_8(int typeID, Type type) {
this.typeID = typeID;
MetaType1_8(Type<?> type) {
this.type = type;
}
@ -49,7 +48,7 @@ public enum MetaType1_8 implements MetaType {
@Override
public int typeId() {
return typeID;
return ordinal();
}
@Override

View File

@ -24,27 +24,26 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
public enum MetaType1_9 implements MetaType {
Byte(0, Type.BYTE),
VarInt(1, Type.VAR_INT),
Float(2, Type.FLOAT),
String(3, Type.STRING),
Chat(4, Type.COMPONENT),
Slot(5, Type.ITEM1_8),
Boolean(6, Type.BOOLEAN),
Vector3F(7, Type.ROTATION),
Position(8, Type.POSITION1_8),
OptPosition(9, Type.OPTIONAL_POSITION1_8),
Direction(10, Type.VAR_INT),
OptUUID(11, Type.OPTIONAL_UUID),
BlockID(12, Type.VAR_INT);
BYTE(Types.BYTE),
VAR_INT(Types.VAR_INT),
FLOAT(Types.FLOAT),
STRING(Types.STRING),
COMPONENT(Types.COMPONENT),
ITEM(Types.ITEM1_8),
BOOLEAN(Types.BOOLEAN),
ROTATIONS(Types.ROTATIONS),
BLOCK_POSITION(Types.BLOCK_POSITION1_8),
OPTIONAL_BLOCK_POSITION(Types.OPTIONAL_POSITION1_8),
DIRECTION(Types.VAR_INT),
OPTIONAL_UUID(Types.OPTIONAL_UUID),
OPTIONAL_BLOCK_STATE(Types.VAR_INT);
private final int typeID;
private final Type type;
private final Type<?> type;
MetaType1_9(int typeID, Type type) {
this.typeID = typeID;
MetaType1_9(Type<?> type) {
this.type = type;
}
@ -54,7 +53,7 @@ public enum MetaType1_9 implements MetaType {
@Override
public int typeId() {
return typeID;
return ordinal();
}
@Override

View File

@ -24,25 +24,26 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_13 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType floatType = add(2, Type.FLOAT);
public final MetaType stringType = add(3, Type.STRING);
public final MetaType componentType = add(4, Type.COMPONENT);
public final MetaType optionalComponentType = add(5, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Type.ITEM1_13);
public final MetaType booleanType = add(7, Type.BOOLEAN);
public final MetaType rotationType = add(8, Type.ROTATION);
public final MetaType positionType = add(9, Type.POSITION1_8);
public final MetaType optionalPositionType = add(10, Type.OPTIONAL_POSITION1_8);
public final MetaType directionType = add(11, Type.VAR_INT);
public final MetaType optionalUUIDType = add(12, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(13, Type.VAR_INT);
public final MetaType nbtType = add(14, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType floatType = add(2, Types.FLOAT);
public final MetaType stringType = add(3, Types.STRING);
public final MetaType componentType = add(4, Types.COMPONENT);
public final MetaType optionalComponentType = add(5, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Types.ITEM1_13);
public final MetaType booleanType = add(7, Types.BOOLEAN);
public final MetaType rotationsType = add(8, Types.ROTATIONS);
public final MetaType blockPositionType = add(9, Types.BLOCK_POSITION1_8);
public final MetaType optionalBlockPositionType = add(10, Types.OPTIONAL_POSITION1_8);
public final MetaType directionType = add(11, Types.VAR_INT);
public final MetaType optionalUUIDType = add(12, Types.OPTIONAL_UUID);
public final MetaType optionalBlockStateType = add(13, Types.VAR_INT);
public final MetaType compoundTagType = add(14, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public MetaTypes1_13(final ParticleType particleType) {

View File

@ -24,25 +24,26 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_13_2 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType floatType = add(2, Type.FLOAT);
public final MetaType stringType = add(3, Type.STRING);
public final MetaType componentType = add(4, Type.COMPONENT);
public final MetaType optionalComponentType = add(5, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Type.ITEM1_13_2);
public final MetaType booleanType = add(7, Type.BOOLEAN);
public final MetaType rotationType = add(8, Type.ROTATION);
public final MetaType positionType = add(9, Type.POSITION1_8);
public final MetaType optionalPositionType = add(10, Type.OPTIONAL_POSITION1_8);
public final MetaType directionType = add(11, Type.VAR_INT);
public final MetaType optionalUUIDType = add(12, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(13, Type.VAR_INT);
public final MetaType nbtType = add(14, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType floatType = add(2, Types.FLOAT);
public final MetaType stringType = add(3, Types.STRING);
public final MetaType componentType = add(4, Types.COMPONENT);
public final MetaType optionalComponentType = add(5, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Types.ITEM1_13_2);
public final MetaType booleanType = add(7, Types.BOOLEAN);
public final MetaType rotationsType = add(8, Types.ROTATIONS);
public final MetaType blockPositionType = add(9, Types.BLOCK_POSITION1_8);
public final MetaType optionalBlockPositionType = add(10, Types.OPTIONAL_POSITION1_8);
public final MetaType directionType = add(11, Types.VAR_INT);
public final MetaType optionalUUIDType = add(12, Types.OPTIONAL_UUID);
public final MetaType optionalBlockStateType = add(13, Types.VAR_INT);
public final MetaType compoundTagType = add(14, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public MetaTypes1_13_2(final ParticleType particleType) {

View File

@ -24,29 +24,30 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_14 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType floatType = add(2, Type.FLOAT);
public final MetaType stringType = add(3, Type.STRING);
public final MetaType componentType = add(4, Type.COMPONENT);
public final MetaType optionalComponentType = add(5, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Type.ITEM1_13_2);
public final MetaType booleanType = add(7, Type.BOOLEAN);
public final MetaType rotationType = add(8, Type.ROTATION);
public final MetaType positionType = add(9, Type.POSITION1_14);
public final MetaType optionalPositionType = add(10, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(11, Type.VAR_INT);
public final MetaType optionalUUIDType = add(12, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(13, Type.VAR_INT);
public final MetaType nbtType = add(14, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType floatType = add(2, Types.FLOAT);
public final MetaType stringType = add(3, Types.STRING);
public final MetaType componentType = add(4, Types.COMPONENT);
public final MetaType optionalComponentType = add(5, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Types.ITEM1_13_2);
public final MetaType booleanType = add(7, Types.BOOLEAN);
public final MetaType rotationsType = add(8, Types.ROTATIONS);
public final MetaType blockPositionType = add(9, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(10, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(11, Types.VAR_INT);
public final MetaType optionalUUIDType = add(12, Types.OPTIONAL_UUID);
public final MetaType optionalBlockStateType = add(13, Types.VAR_INT);
public final MetaType compoundTagType = add(14, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(16, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(17, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(18, Type.VAR_INT);
public final MetaType villagerDatatType = add(16, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(17, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(18, Types.VAR_INT);
public MetaTypes1_14(final ParticleType particleType) {
super(19);

View File

@ -24,33 +24,34 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_19 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType floatType = add(2, Type.FLOAT);
public final MetaType stringType = add(3, Type.STRING);
public final MetaType componentType = add(4, Type.COMPONENT);
public final MetaType optionalComponentType = add(5, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Type.ITEM1_13_2);
public final MetaType booleanType = add(7, Type.BOOLEAN);
public final MetaType rotationType = add(8, Type.ROTATION);
public final MetaType positionType = add(9, Type.POSITION1_14);
public final MetaType optionalPositionType = add(10, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(11, Type.VAR_INT);
public final MetaType optionalUUIDType = add(12, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(13, Type.VAR_INT);
public final MetaType nbtType = add(14, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType floatType = add(2, Types.FLOAT);
public final MetaType stringType = add(3, Types.STRING);
public final MetaType componentType = add(4, Types.COMPONENT);
public final MetaType optionalComponentType = add(5, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(6, Types.ITEM1_13_2);
public final MetaType booleanType = add(7, Types.BOOLEAN);
public final MetaType rotationsType = add(8, Types.ROTATIONS);
public final MetaType blockPositionType = add(9, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(10, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(11, Types.VAR_INT);
public final MetaType optionalUUIDType = add(12, Types.OPTIONAL_UUID);
public final MetaType optionalBlockStateType = add(13, Types.VAR_INT);
public final MetaType compoundTagType = add(14, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(16, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(17, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(18, Type.VAR_INT);
public final MetaType catVariantType = add(19, Type.VAR_INT);
public final MetaType frogVariantType = add(20, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(21, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(22, Type.VAR_INT);
public final MetaType villagerDatatType = add(16, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(17, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(18, Types.VAR_INT);
public final MetaType catVariantType = add(19, Types.VAR_INT);
public final MetaType frogVariantType = add(20, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(21, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(22, Types.VAR_INT);
public MetaTypes1_19(final ParticleType particleType) {
super(23);

View File

@ -24,34 +24,35 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_19_3 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType longType = add(2, Type.VAR_LONG);
public final MetaType floatType = add(3, Type.FLOAT);
public final MetaType stringType = add(4, Type.STRING);
public final MetaType componentType = add(5, Type.COMPONENT);
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Type.ITEM1_13_2);
public final MetaType booleanType = add(8, Type.BOOLEAN);
public final MetaType rotationType = add(9, Type.ROTATION);
public final MetaType positionType = add(10, Type.POSITION1_14);
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Type.VAR_INT);
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Type.VAR_INT);
public final MetaType nbtType = add(15, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType longType = add(2, Types.VAR_LONG);
public final MetaType floatType = add(3, Types.FLOAT);
public final MetaType stringType = add(4, Types.STRING);
public final MetaType componentType = add(5, Types.COMPONENT);
public final MetaType optionalComponentType = add(6, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Types.ITEM1_13_2);
public final MetaType booleanType = add(8, Types.BOOLEAN);
public final MetaType rotationsType = add(9, Types.ROTATIONS);
public final MetaType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Types.VAR_INT);
public final MetaType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
public final MetaType optionalBlockStateType = add(14, Types.VAR_INT);
public final MetaType compoundTagType = add(15, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(17, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(18, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(19, Type.VAR_INT);
public final MetaType catVariantType = add(20, Type.VAR_INT);
public final MetaType frogVariantType = add(21, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(22, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(23, Type.VAR_INT);
public final MetaType villagerDatatType = add(17, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(18, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(19, Types.VAR_INT);
public final MetaType catVariantType = add(20, Types.VAR_INT);
public final MetaType frogVariantType = add(21, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(22, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(23, Types.VAR_INT);
public MetaTypes1_19_3(final ParticleType particleType) {
super(24);

View File

@ -24,38 +24,39 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_19_4 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType longType = add(2, Type.VAR_LONG);
public final MetaType floatType = add(3, Type.FLOAT);
public final MetaType stringType = add(4, Type.STRING);
public final MetaType componentType = add(5, Type.COMPONENT);
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Type.ITEM1_13_2);
public final MetaType booleanType = add(8, Type.BOOLEAN);
public final MetaType rotationType = add(9, Type.ROTATION);
public final MetaType positionType = add(10, Type.POSITION1_14);
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Type.VAR_INT);
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Type.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Type.VAR_INT);
public final MetaType nbtType = add(16, Type.NAMED_COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType longType = add(2, Types.VAR_LONG);
public final MetaType floatType = add(3, Types.FLOAT);
public final MetaType stringType = add(4, Types.STRING);
public final MetaType componentType = add(5, Types.COMPONENT);
public final MetaType optionalComponentType = add(6, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Types.ITEM1_13_2);
public final MetaType booleanType = add(8, Types.BOOLEAN);
public final MetaType rotationsType = add(9, Types.ROTATIONS);
public final MetaType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Types.VAR_INT);
public final MetaType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Types.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Types.VAR_INT);
public final MetaType compoundTagType = add(16, Types.NAMED_COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(18, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Type.VAR_INT);
public final MetaType catVariantType = add(21, Type.VAR_INT);
public final MetaType frogVariantType = add(22, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Type.VAR_INT);
public final MetaType snifferState = add(25, Type.VAR_INT);
public final MetaType vectorType = add(26, Type.VECTOR3F);
public final MetaType quaternionType = add(27, Type.QUATERNION);
public final MetaType villagerDatatType = add(18, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Types.VAR_INT);
public final MetaType catVariantType = add(21, Types.VAR_INT);
public final MetaType frogVariantType = add(22, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Types.VAR_INT);
public final MetaType snifferState = add(25, Types.VAR_INT);
public final MetaType vector3FType = add(26, Types.VECTOR3F);
public final MetaType quaternionType = add(27, Types.QUATERNION);
public MetaTypes1_19_4(final ParticleType particleType) {
super(28);

View File

@ -24,38 +24,39 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_20_2 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType longType = add(2, Type.VAR_LONG);
public final MetaType floatType = add(3, Type.FLOAT);
public final MetaType stringType = add(4, Type.STRING);
public final MetaType componentType = add(5, Type.COMPONENT);
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Type.ITEM1_20_2);
public final MetaType booleanType = add(8, Type.BOOLEAN);
public final MetaType rotationType = add(9, Type.ROTATION);
public final MetaType positionType = add(10, Type.POSITION1_14);
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Type.VAR_INT);
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Type.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Type.VAR_INT);
public final MetaType nbtType = add(16, Type.COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType longType = add(2, Types.VAR_LONG);
public final MetaType floatType = add(3, Types.FLOAT);
public final MetaType stringType = add(4, Types.STRING);
public final MetaType componentType = add(5, Types.COMPONENT);
public final MetaType optionalComponentType = add(6, Types.OPTIONAL_COMPONENT);
public final MetaType itemType = add(7, Types.ITEM1_20_2);
public final MetaType booleanType = add(8, Types.BOOLEAN);
public final MetaType rotationsType = add(9, Types.ROTATIONS);
public final MetaType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Types.VAR_INT);
public final MetaType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Types.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Types.VAR_INT);
public final MetaType compoundTagType = add(16, Types.COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(18, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Type.VAR_INT);
public final MetaType catVariantType = add(21, Type.VAR_INT);
public final MetaType frogVariantType = add(22, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Type.VAR_INT);
public final MetaType snifferState = add(25, Type.VAR_INT);
public final MetaType vectorType = add(26, Type.VECTOR3F);
public final MetaType quaternionType = add(27, Type.QUATERNION);
public final MetaType villagerDatatType = add(18, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Types.VAR_INT);
public final MetaType catVariantType = add(21, Types.VAR_INT);
public final MetaType frogVariantType = add(22, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Types.VAR_INT);
public final MetaType snifferState = add(25, Types.VAR_INT);
public final MetaType vector3FType = add(26, Types.VECTOR3F);
public final MetaType quaternionType = add(27, Types.QUATERNION);
public MetaTypes1_20_2(final ParticleType particleType) {
super(28);

View File

@ -24,38 +24,39 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
public final class MetaTypes1_20_3 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType longType = add(2, Type.VAR_LONG);
public final MetaType floatType = add(3, Type.FLOAT);
public final MetaType stringType = add(4, Type.STRING);
public final MetaType componentType = add(5, Type.TAG);
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_TAG);
public final MetaType itemType = add(7, Type.ITEM1_20_2);
public final MetaType booleanType = add(8, Type.BOOLEAN);
public final MetaType rotationType = add(9, Type.ROTATION);
public final MetaType positionType = add(10, Type.POSITION1_14);
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Type.VAR_INT);
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Type.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Type.VAR_INT);
public final MetaType nbtType = add(16, Type.COMPOUND_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType longType = add(2, Types.VAR_LONG);
public final MetaType floatType = add(3, Types.FLOAT);
public final MetaType stringType = add(4, Types.STRING);
public final MetaType componentType = add(5, Types.TAG);
public final MetaType optionalComponentType = add(6, Types.OPTIONAL_TAG);
public final MetaType itemType = add(7, Types.ITEM1_20_2);
public final MetaType booleanType = add(8, Types.BOOLEAN);
public final MetaType rotationsType = add(9, Types.ROTATIONS);
public final MetaType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Types.VAR_INT);
public final MetaType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Types.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Types.VAR_INT);
public final MetaType compoundTagType = add(16, Types.COMPOUND_TAG);
public final MetaType particleType;
public final MetaType villagerDatatType = add(18, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Type.VAR_INT);
public final MetaType catVariantType = add(21, Type.VAR_INT);
public final MetaType frogVariantType = add(22, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Type.VAR_INT);
public final MetaType snifferState = add(25, Type.VAR_INT);
public final MetaType vectorType = add(26, Type.VECTOR3F);
public final MetaType quaternionType = add(27, Type.QUATERNION);
public final MetaType villagerDatatType = add(18, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(19, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(20, Types.VAR_INT);
public final MetaType catVariantType = add(21, Types.VAR_INT);
public final MetaType frogVariantType = add(22, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(23, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(24, Types.VAR_INT);
public final MetaType snifferState = add(25, Types.VAR_INT);
public final MetaType vector3FType = add(26, Types.VECTOR3F);
public final MetaType quaternionType = add(27, Types.QUATERNION);
public MetaTypes1_20_3(final ParticleType particleType) {
super(28);

View File

@ -25,43 +25,44 @@ package com.viaversion.viaversion.api.minecraft.metadata.types;
import com.viaversion.viaversion.api.minecraft.Particle;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.ArrayType;
import com.viaversion.viaversion.api.type.types.misc.ParticleType;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
public final class MetaTypes1_20_5 extends AbstractMetaTypes {
public final MetaType byteType = add(0, Type.BYTE);
public final MetaType varIntType = add(1, Type.VAR_INT);
public final MetaType longType = add(2, Type.VAR_LONG);
public final MetaType floatType = add(3, Type.FLOAT);
public final MetaType stringType = add(4, Type.STRING);
public final MetaType componentType = add(5, Type.TAG);
public final MetaType optionalComponentType = add(6, Type.OPTIONAL_TAG);
public final MetaType byteType = add(0, Types.BYTE);
public final MetaType varIntType = add(1, Types.VAR_INT);
public final MetaType longType = add(2, Types.VAR_LONG);
public final MetaType floatType = add(3, Types.FLOAT);
public final MetaType stringType = add(4, Types.STRING);
public final MetaType componentType = add(5, Types.TAG);
public final MetaType optionalComponentType = add(6, Types.OPTIONAL_TAG);
public final MetaType itemType = add(7, Types1_20_5.ITEM);
public final MetaType booleanType = add(8, Type.BOOLEAN);
public final MetaType rotationType = add(9, Type.ROTATION);
public final MetaType positionType = add(10, Type.POSITION1_14);
public final MetaType optionalPositionType = add(11, Type.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Type.VAR_INT);
public final MetaType optionalUUIDType = add(13, Type.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Type.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Type.VAR_INT);
public final MetaType nbtType = add(16, Type.COMPOUND_TAG);
public final MetaType booleanType = add(8, Types.BOOLEAN);
public final MetaType rotationsType = add(9, Types.ROTATIONS);
public final MetaType blockPositionType = add(10, Types.BLOCK_POSITION1_14);
public final MetaType optionalBlockPositionType = add(11, Types.OPTIONAL_POSITION_1_14);
public final MetaType directionType = add(12, Types.VAR_INT);
public final MetaType optionalUUIDType = add(13, Types.OPTIONAL_UUID);
public final MetaType blockStateType = add(14, Types.VAR_INT);
public final MetaType optionalBlockStateType = add(15, Types.VAR_INT);
public final MetaType compoundTagType = add(16, Types.COMPOUND_TAG);
public final MetaType particleType;
public final MetaType particlesType;
public final MetaType villagerDatatType = add(19, Type.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(20, Type.OPTIONAL_VAR_INT);
public final MetaType poseType = add(21, Type.VAR_INT);
public final MetaType catVariantType = add(22, Type.VAR_INT);
public final MetaType wolfVariantType = add(23, Type.VAR_INT);
public final MetaType frogVariantType = add(24, Type.VAR_INT);
public final MetaType optionalGlobalPosition = add(25, Type.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(26, Type.VAR_INT);
public final MetaType snifferState = add(27, Type.VAR_INT);
public final MetaType armadilloState = add(28, Type.VAR_INT);
public final MetaType vectorType = add(29, Type.VECTOR3F);
public final MetaType quaternionType = add(30, Type.QUATERNION);
public final MetaType villagerDatatType = add(19, Types.VILLAGER_DATA);
public final MetaType optionalVarIntType = add(20, Types.OPTIONAL_VAR_INT);
public final MetaType poseType = add(21, Types.VAR_INT);
public final MetaType catVariantType = add(22, Types.VAR_INT);
public final MetaType wolfVariantType = add(23, Types.VAR_INT);
public final MetaType frogVariantType = add(24, Types.VAR_INT);
public final MetaType optionalGlobalPosition = add(25, Types.OPTIONAL_GLOBAL_POSITION);
public final MetaType paintingVariantType = add(26, Types.VAR_INT);
public final MetaType snifferState = add(27, Types.VAR_INT);
public final MetaType armadilloState = add(28, Types.VAR_INT);
public final MetaType vector3FType = add(29, Types.VECTOR3F);
public final MetaType quaternionType = add(30, Types.QUATERNION);
public MetaTypes1_20_5(final ParticleType particleType, final ArrayType<Particle> particlesType) {
super(31);

View File

@ -22,196 +22,14 @@
*/
package com.viaversion.viaversion.api.type;
import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.nbt.tag.Tag;
import com.google.gson.JsonElement;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
import com.viaversion.viaversion.api.minecraft.EulerAngle;
import com.viaversion.viaversion.api.minecraft.GameProfile;
import com.viaversion.viaversion.api.minecraft.GlobalPosition;
import com.viaversion.viaversion.api.minecraft.HolderSet;
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.minecraft.ProfileKey;
import com.viaversion.viaversion.api.minecraft.Quaternion;
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
import com.viaversion.viaversion.api.minecraft.SoundEvent;
import com.viaversion.viaversion.api.minecraft.Vector;
import com.viaversion.viaversion.api.minecraft.Vector3f;
import com.viaversion.viaversion.api.minecraft.VillagerData;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
import com.viaversion.viaversion.api.type.types.ArrayType;
import com.viaversion.viaversion.api.type.types.BitSetType;
import com.viaversion.viaversion.api.type.types.BooleanType;
import com.viaversion.viaversion.api.type.types.ByteArrayType;
import com.viaversion.viaversion.api.type.types.ByteType;
import com.viaversion.viaversion.api.type.types.ComponentType;
import com.viaversion.viaversion.api.type.types.DoubleType;
import com.viaversion.viaversion.api.type.types.EmptyType;
import com.viaversion.viaversion.api.type.types.FloatType;
import com.viaversion.viaversion.api.type.types.IntArrayType;
import com.viaversion.viaversion.api.type.types.IntType;
import com.viaversion.viaversion.api.type.types.LongArrayType;
import com.viaversion.viaversion.api.type.types.LongType;
import com.viaversion.viaversion.api.type.types.OptionalVarIntType;
import com.viaversion.viaversion.api.type.types.RegistryEntryType;
import com.viaversion.viaversion.api.type.types.RemainingBytesType;
import com.viaversion.viaversion.api.type.types.ShortByteArrayType;
import com.viaversion.viaversion.api.type.types.ShortType;
import com.viaversion.viaversion.api.type.types.StringType;
import com.viaversion.viaversion.api.type.types.UUIDType;
import com.viaversion.viaversion.api.type.types.UnsignedByteType;
import com.viaversion.viaversion.api.type.types.UnsignedShortType;
import com.viaversion.viaversion.api.type.types.VarIntArrayType;
import com.viaversion.viaversion.api.type.types.VarIntType;
import com.viaversion.viaversion.api.type.types.VarLongType;
import com.viaversion.viaversion.api.type.types.block.BlockChangeRecordType;
import com.viaversion.viaversion.api.type.types.block.BlockEntityType1_18;
import com.viaversion.viaversion.api.type.types.block.BlockEntityType1_20_2;
import com.viaversion.viaversion.api.type.types.block.VarLongBlockChangeRecordType;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_13;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_13_2;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_8;
import com.viaversion.viaversion.api.type.types.item.ItemType1_13;
import com.viaversion.viaversion.api.type.types.item.ItemType1_13_2;
import com.viaversion.viaversion.api.type.types.item.ItemType1_20_2;
import com.viaversion.viaversion.api.type.types.item.ItemType1_8;
import com.viaversion.viaversion.api.type.types.math.ChunkPositionType;
import com.viaversion.viaversion.api.type.types.math.EulerAngleType;
import com.viaversion.viaversion.api.type.types.math.GlobalPositionType;
import com.viaversion.viaversion.api.type.types.math.PositionType1_14;
import com.viaversion.viaversion.api.type.types.math.PositionType1_8;
import com.viaversion.viaversion.api.type.types.math.QuaternionType;
import com.viaversion.viaversion.api.type.types.math.Vector3fType;
import com.viaversion.viaversion.api.type.types.math.VectorType;
import com.viaversion.viaversion.api.type.types.misc.CompoundTagType;
import com.viaversion.viaversion.api.type.types.misc.GameProfileType;
import com.viaversion.viaversion.api.type.types.misc.HolderSetType;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import com.viaversion.viaversion.api.type.types.misc.NamedCompoundTagType;
import com.viaversion.viaversion.api.type.types.misc.PlayerMessageSignatureType;
import com.viaversion.viaversion.api.type.types.misc.ProfileKeyType;
import com.viaversion.viaversion.api.type.types.misc.SoundEventType;
import com.viaversion.viaversion.api.type.types.misc.TagType;
import com.viaversion.viaversion.api.type.types.misc.VillagerDataType;
import com.viaversion.viaversion.util.Unit;
import java.util.UUID;
/**
* Type for buffer reading and writing.
*
* @param <T> read/written type
* @see Types
*/
public abstract class Type<T> implements ByteBufReader<T>, ByteBufWriter<T> {
public static final Type<Unit> EMPTY = new EmptyType();
public static final ByteType BYTE = new ByteType();
public static final UnsignedByteType UNSIGNED_BYTE = new UnsignedByteType();
public static final Type<byte[]> BYTE_ARRAY_PRIMITIVE = new ByteArrayType();
public static final Type<byte[]> OPTIONAL_BYTE_ARRAY_PRIMITIVE = new ByteArrayType.OptionalByteArrayType();
public static final Type<byte[]> SHORT_BYTE_ARRAY = new ShortByteArrayType();
public static final Type<byte[]> REMAINING_BYTES = new RemainingBytesType();
public static final Type<int[]> INT_ARRAY_PRIMITIVE = new IntArrayType();
public static final ShortType SHORT = new ShortType();
public static final UnsignedShortType UNSIGNED_SHORT = new UnsignedShortType();
public static final IntType INT = new IntType();
public static final FloatType FLOAT = new FloatType();
public static final FloatType.OptionalFloatType OPTIONAL_FLOAT = new FloatType.OptionalFloatType();
public static final DoubleType DOUBLE = new DoubleType();
public static final LongType LONG = new LongType();
public static final Type<long[]> LONG_ARRAY_PRIMITIVE = new LongArrayType();
public static final BooleanType BOOLEAN = new BooleanType();
public static final BooleanType.OptionalBooleanType OPTIONAL_BOOLEAN = new BooleanType.OptionalBooleanType();
/* Other Types */
public static final Type<JsonElement> COMPONENT = new ComponentType();
public static final Type<JsonElement> OPTIONAL_COMPONENT = new ComponentType.OptionalComponentType();
public static final Type<String> STRING = new StringType();
public static final Type<String> OPTIONAL_STRING = new StringType.OptionalStringType();
public static final Type<String[]> STRING_ARRAY = new ArrayType<>(Type.STRING);
public static final Type<UUID> UUID = new UUIDType();
public static final Type<UUID> OPTIONAL_UUID = new UUIDType.OptionalUUIDType();
public static final Type<UUID[]> UUID_ARRAY = new ArrayType<>(Type.UUID);
public static final VarIntType VAR_INT = new VarIntType();
public static final OptionalVarIntType OPTIONAL_VAR_INT = new OptionalVarIntType();
public static final Type<int[]> VAR_INT_ARRAY_PRIMITIVE = new VarIntArrayType();
public static final VarLongType VAR_LONG = new VarLongType();
/* MC Types */
public static final Type<Position> POSITION1_8 = new PositionType1_8();
public static final Type<Position> OPTIONAL_POSITION1_8 = new PositionType1_8.OptionalPositionType();
public static final Type<Position> POSITION1_14 = new PositionType1_14();
public static final Type<Position> OPTIONAL_POSITION_1_14 = new PositionType1_14.OptionalPosition1_14Type();
public static final Type<EulerAngle> ROTATION = new EulerAngleType();
public static final Type<Vector> VECTOR = new VectorType();
public static final Type<Vector3f> VECTOR3F = new Vector3fType();
public static final Type<Quaternion> QUATERNION = new QuaternionType();
public static final Type<CompoundTag> NAMED_COMPOUND_TAG = new NamedCompoundTagType();
public static final Type<CompoundTag> OPTIONAL_NAMED_COMPOUND_TAG = new NamedCompoundTagType.OptionalNamedCompoundTagType();
public static final Type<CompoundTag[]> NAMED_COMPOUND_TAG_ARRAY = new ArrayType<>(Type.NAMED_COMPOUND_TAG);
public static final Type<CompoundTag> COMPOUND_TAG = new CompoundTagType();
public static final Type<CompoundTag> OPTIONAL_COMPOUND_TAG = new CompoundTagType.OptionalCompoundTagType();
public static final Type<Tag> TAG = new TagType();
public static final Type<Tag[]> TAG_ARRAY = new ArrayType<>(TAG);
public static final Type<Tag> OPTIONAL_TAG = new TagType.OptionalTagType();
public static final Type<GlobalPosition> GLOBAL_POSITION = new GlobalPositionType();
public static final Type<GlobalPosition> OPTIONAL_GLOBAL_POSITION = new GlobalPositionType.OptionalGlobalPositionType();
public static final Type<ChunkPosition> CHUNK_POSITION = new ChunkPositionType();
public static final Type<BlockEntity> BLOCK_ENTITY1_18 = new BlockEntityType1_18();
public static final Type<BlockEntity> BLOCK_ENTITY1_20_2 = new BlockEntityType1_20_2();
public static final Type<BlockChangeRecord> BLOCK_CHANGE_RECORD = new BlockChangeRecordType();
public static final Type<BlockChangeRecord[]> BLOCK_CHANGE_RECORD_ARRAY = new ArrayType<>(Type.BLOCK_CHANGE_RECORD);
public static final Type<BlockChangeRecord> VAR_LONG_BLOCK_CHANGE_RECORD = new VarLongBlockChangeRecordType();
public static final Type<BlockChangeRecord[]> VAR_LONG_BLOCK_CHANGE_RECORD_ARRAY = new ArrayType<>(Type.VAR_LONG_BLOCK_CHANGE_RECORD);
public static final Type<VillagerData> VILLAGER_DATA = new VillagerDataType();
public static final Type<GameProfile> GAME_PROFILE = new GameProfileType();
public static final Type<ProfileKey> PROFILE_KEY = new ProfileKeyType();
public static final Type<ProfileKey> OPTIONAL_PROFILE_KEY = new ProfileKeyType.OptionalProfileKeyType();
public static final Type<PlayerMessageSignature> PLAYER_MESSAGE_SIGNATURE = new PlayerMessageSignatureType();
public static final Type<PlayerMessageSignature> OPTIONAL_PLAYER_MESSAGE_SIGNATURE = new PlayerMessageSignatureType.OptionalPlayerMessageSignatureType();
public static final Type<PlayerMessageSignature[]> PLAYER_MESSAGE_SIGNATURE_ARRAY = new ArrayType<>(PLAYER_MESSAGE_SIGNATURE);
public static final BitSetType PROFILE_ACTIONS_ENUM = new BitSetType(6);
public static final ByteArrayType SIGNATURE_BYTES = new ByteArrayType(256);
public static final BitSetType ACKNOWLEDGED_BIT_SET = new BitSetType(20);
public static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES = new ByteArrayType.OptionalByteArrayType(256);
public static final Type<RegistryEntry> REGISTRY_ENTRY = new RegistryEntryType();
public static final Type<RegistryEntry[]> REGISTRY_ENTRY_ARRAY = new ArrayType<>(REGISTRY_ENTRY);
public static final Type<HolderSet> HOLDER_SET = new HolderSetType();
public static final Type<HolderSet> OPTIONAL_HOLDER_SET = new HolderSetType.OptionalHolderSetType();
public static final HolderType<SoundEvent> SOUND_EVENT = new SoundEventType();
public static final Type<Item> ITEM1_8 = new ItemType1_8();
public static final Type<Item> ITEM1_13 = new ItemType1_13();
public static final Type<Item> ITEM1_13_2 = new ItemType1_13_2();
public static final Type<Item> ITEM1_20_2 = new ItemType1_20_2();
public static final Type<Item[]> ITEM1_8_SHORT_ARRAY = new ItemShortArrayType1_8();
public static final Type<Item[]> ITEM1_13_SHORT_ARRAY = new ItemShortArrayType1_13();
public static final Type<Item[]> ITEM1_13_2_SHORT_ARRAY = new ItemShortArrayType1_13_2();
public static final Type<Item[]> ITEM1_13_ARRAY = new ArrayType<>(ITEM1_13);
public static final Type<Item[]> ITEM1_13_2_ARRAY = new ArrayType<>(ITEM1_13_2);
public static final Type<Item[]> ITEM1_20_2_ARRAY = new ArrayType<>(ITEM1_20_2);
/* Actual Class */
private final Class<? super T> outputClass;
private final String typeName;

View File

@ -0,0 +1,215 @@
/*
* This file is part of ViaVersion - https://github.com/ViaVersion/ViaVersion
* Copyright (C) 2016-2024 ViaVersion and contributors
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package com.viaversion.viaversion.api.type;
import com.google.gson.JsonElement;
import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.nbt.tag.Tag;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
import com.viaversion.viaversion.api.minecraft.EulerAngle;
import com.viaversion.viaversion.api.minecraft.GameProfile;
import com.viaversion.viaversion.api.minecraft.GlobalPosition;
import com.viaversion.viaversion.api.minecraft.HolderSet;
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.minecraft.ProfileKey;
import com.viaversion.viaversion.api.minecraft.Quaternion;
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
import com.viaversion.viaversion.api.minecraft.SoundEvent;
import com.viaversion.viaversion.api.minecraft.Vector;
import com.viaversion.viaversion.api.minecraft.Vector3f;
import com.viaversion.viaversion.api.minecraft.VillagerData;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.item.data.Enchantments;
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
import com.viaversion.viaversion.api.type.types.ArrayType;
import com.viaversion.viaversion.api.type.types.BitSetType;
import com.viaversion.viaversion.api.type.types.BooleanType;
import com.viaversion.viaversion.api.type.types.ByteArrayType;
import com.viaversion.viaversion.api.type.types.ByteType;
import com.viaversion.viaversion.api.type.types.ComponentType;
import com.viaversion.viaversion.api.type.types.DoubleType;
import com.viaversion.viaversion.api.type.types.EmptyType;
import com.viaversion.viaversion.api.type.types.FloatType;
import com.viaversion.viaversion.api.type.types.IntArrayType;
import com.viaversion.viaversion.api.type.types.IntType;
import com.viaversion.viaversion.api.type.types.LongArrayType;
import com.viaversion.viaversion.api.type.types.LongType;
import com.viaversion.viaversion.api.type.types.OptionalVarIntType;
import com.viaversion.viaversion.api.type.types.RegistryEntryType;
import com.viaversion.viaversion.api.type.types.RemainingBytesType;
import com.viaversion.viaversion.api.type.types.ShortByteArrayType;
import com.viaversion.viaversion.api.type.types.ShortType;
import com.viaversion.viaversion.api.type.types.StringType;
import com.viaversion.viaversion.api.type.types.UUIDType;
import com.viaversion.viaversion.api.type.types.UnsignedByteType;
import com.viaversion.viaversion.api.type.types.UnsignedShortType;
import com.viaversion.viaversion.api.type.types.VarIntArrayType;
import com.viaversion.viaversion.api.type.types.VarIntType;
import com.viaversion.viaversion.api.type.types.VarLongType;
import com.viaversion.viaversion.api.type.types.block.BlockChangeRecordType;
import com.viaversion.viaversion.api.type.types.block.BlockEntityType1_18;
import com.viaversion.viaversion.api.type.types.block.BlockEntityType1_20_2;
import com.viaversion.viaversion.api.type.types.block.VarLongBlockChangeRecordType;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_13;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_13_2;
import com.viaversion.viaversion.api.type.types.item.ItemShortArrayType1_8;
import com.viaversion.viaversion.api.type.types.item.ItemType1_13;
import com.viaversion.viaversion.api.type.types.item.ItemType1_13_2;
import com.viaversion.viaversion.api.type.types.item.ItemType1_20_2;
import com.viaversion.viaversion.api.type.types.item.ItemType1_8;
import com.viaversion.viaversion.api.type.types.math.ChunkPositionType;
import com.viaversion.viaversion.api.type.types.math.EulerAngleType;
import com.viaversion.viaversion.api.type.types.math.GlobalPositionType;
import com.viaversion.viaversion.api.type.types.math.PositionType1_14;
import com.viaversion.viaversion.api.type.types.math.PositionType1_8;
import com.viaversion.viaversion.api.type.types.math.QuaternionType;
import com.viaversion.viaversion.api.type.types.math.Vector3fType;
import com.viaversion.viaversion.api.type.types.math.VectorType;
import com.viaversion.viaversion.api.type.types.misc.CompoundTagType;
import com.viaversion.viaversion.api.type.types.misc.GameProfileType;
import com.viaversion.viaversion.api.type.types.misc.HolderSetType;
import com.viaversion.viaversion.api.type.types.misc.HolderType;
import com.viaversion.viaversion.api.type.types.misc.NamedCompoundTagType;
import com.viaversion.viaversion.api.type.types.misc.PlayerMessageSignatureType;
import com.viaversion.viaversion.api.type.types.misc.ProfileKeyType;
import com.viaversion.viaversion.api.type.types.misc.SoundEventType;
import com.viaversion.viaversion.api.type.types.misc.TagType;
import com.viaversion.viaversion.api.type.types.misc.VillagerDataType;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.util.Unit;
import java.util.UUID;
/**
* Holds the mostly stable {@link Type} instances.
* Others may be held separately or object classes themselves, e.g. {@link Types1_20_5} or {@link Enchantments}
*/
public final class Types {
public static final Type<Unit> EMPTY = new EmptyType();
public static final ByteType BYTE = new ByteType();
public static final UnsignedByteType UNSIGNED_BYTE = new UnsignedByteType();
public static final Type<byte[]> BYTE_ARRAY_PRIMITIVE = new ByteArrayType();
public static final Type<byte[]> OPTIONAL_BYTE_ARRAY_PRIMITIVE = new ByteArrayType.OptionalByteArrayType();
public static final Type<byte[]> SHORT_BYTE_ARRAY = new ShortByteArrayType();
public static final Type<byte[]> REMAINING_BYTES = new RemainingBytesType();
public static final Type<int[]> INT_ARRAY_PRIMITIVE = new IntArrayType();
public static final ShortType SHORT = new ShortType();
public static final UnsignedShortType UNSIGNED_SHORT = new UnsignedShortType();
public static final IntType INT = new IntType();
public static final FloatType FLOAT = new FloatType();
public static final FloatType.OptionalFloatType OPTIONAL_FLOAT = new FloatType.OptionalFloatType();
public static final DoubleType DOUBLE = new DoubleType();
public static final LongType LONG = new LongType();
public static final Type<long[]> LONG_ARRAY_PRIMITIVE = new LongArrayType();
public static final BooleanType BOOLEAN = new BooleanType();
public static final BooleanType.OptionalBooleanType OPTIONAL_BOOLEAN = new BooleanType.OptionalBooleanType();
/* Other Types */
public static final Type<JsonElement> COMPONENT = new ComponentType();
public static final Type<JsonElement> OPTIONAL_COMPONENT = new ComponentType.OptionalComponentType();
public static final Type<String> STRING = new StringType();
public static final Type<String> OPTIONAL_STRING = new StringType.OptionalStringType();
public static final Type<String[]> STRING_ARRAY = new ArrayType<>(Types.STRING);
public static final Type<UUID> UUID = new UUIDType();
public static final Type<UUID> OPTIONAL_UUID = new UUIDType.OptionalUUIDType();
public static final Type<UUID[]> UUID_ARRAY = new ArrayType<>(Types.UUID);
public static final VarIntType VAR_INT = new VarIntType();
public static final OptionalVarIntType OPTIONAL_VAR_INT = new OptionalVarIntType();
public static final Type<int[]> VAR_INT_ARRAY_PRIMITIVE = new VarIntArrayType();
public static final VarLongType VAR_LONG = new VarLongType();
/* MC Types */
public static final Type<Position> BLOCK_POSITION1_8 = new PositionType1_8();
public static final Type<Position> OPTIONAL_POSITION1_8 = new PositionType1_8.OptionalPositionType();
public static final Type<Position> BLOCK_POSITION1_14 = new PositionType1_14();
public static final Type<Position> OPTIONAL_POSITION_1_14 = new PositionType1_14.OptionalPosition1_14Type();
public static final Type<EulerAngle> ROTATIONS = new EulerAngleType();
public static final Type<Vector> VECTOR = new VectorType();
public static final Type<Vector3f> VECTOR3F = new Vector3fType();
public static final Type<Quaternion> QUATERNION = new QuaternionType();
public static final Type<CompoundTag> NAMED_COMPOUND_TAG = new NamedCompoundTagType();
public static final Type<CompoundTag> OPTIONAL_NAMED_COMPOUND_TAG = new NamedCompoundTagType.OptionalNamedCompoundTagType();
public static final Type<CompoundTag[]> NAMED_COMPOUND_TAG_ARRAY = new ArrayType<>(Types.NAMED_COMPOUND_TAG);
public static final Type<CompoundTag> COMPOUND_TAG = new CompoundTagType();
public static final Type<CompoundTag> OPTIONAL_COMPOUND_TAG = new CompoundTagType.OptionalCompoundTagType();
public static final Type<Tag> TAG = new TagType();
public static final Type<Tag[]> TAG_ARRAY = new ArrayType<>(TAG);
public static final Type<Tag> OPTIONAL_TAG = new TagType.OptionalTagType();
public static final Type<GlobalPosition> GLOBAL_POSITION = new GlobalPositionType();
public static final Type<GlobalPosition> OPTIONAL_GLOBAL_POSITION = new GlobalPositionType.OptionalGlobalPositionType();
public static final Type<ChunkPosition> CHUNK_POSITION = new ChunkPositionType();
public static final Type<BlockEntity> BLOCK_ENTITY1_18 = new BlockEntityType1_18();
public static final Type<BlockEntity> BLOCK_ENTITY1_20_2 = new BlockEntityType1_20_2();
public static final Type<BlockChangeRecord> BLOCK_CHANGE = new BlockChangeRecordType();
public static final Type<BlockChangeRecord[]> BLOCK_CHANGE_ARRAY = new ArrayType<>(Types.BLOCK_CHANGE);
public static final Type<BlockChangeRecord> VAR_LONG_BLOCK_CHANGE = new VarLongBlockChangeRecordType();
public static final Type<BlockChangeRecord[]> VAR_LONG_BLOCK_CHANGE_ARRAY = new ArrayType<>(Types.VAR_LONG_BLOCK_CHANGE);
public static final Type<VillagerData> VILLAGER_DATA = new VillagerDataType();
public static final Type<GameProfile> GAME_PROFILE = new GameProfileType();
public static final Type<ProfileKey> PROFILE_KEY = new ProfileKeyType();
public static final Type<ProfileKey> OPTIONAL_PROFILE_KEY = new ProfileKeyType.OptionalProfileKeyType();
public static final Type<PlayerMessageSignature> PLAYER_MESSAGE_SIGNATURE = new PlayerMessageSignatureType();
public static final Type<PlayerMessageSignature> OPTIONAL_PLAYER_MESSAGE_SIGNATURE = new PlayerMessageSignatureType.OptionalPlayerMessageSignatureType();
public static final Type<PlayerMessageSignature[]> PLAYER_MESSAGE_SIGNATURE_ARRAY = new ArrayType<>(PLAYER_MESSAGE_SIGNATURE);
public static final BitSetType PROFILE_ACTIONS_ENUM = new BitSetType(6);
public static final ByteArrayType SIGNATURE_BYTES = new ByteArrayType(256);
public static final BitSetType ACKNOWLEDGED_BIT_SET = new BitSetType(20);
public static final ByteArrayType.OptionalByteArrayType OPTIONAL_SIGNATURE_BYTES = new ByteArrayType.OptionalByteArrayType(256);
public static final Type<RegistryEntry> REGISTRY_ENTRY = new RegistryEntryType();
public static final Type<RegistryEntry[]> REGISTRY_ENTRY_ARRAY = new ArrayType<>(REGISTRY_ENTRY);
public static final Type<HolderSet> HOLDER_SET = new HolderSetType();
public static final Type<HolderSet> OPTIONAL_HOLDER_SET = new HolderSetType.OptionalHolderSetType();
public static final HolderType<SoundEvent> SOUND_EVENT = new SoundEventType();
public static final Type<Item> ITEM1_8 = new ItemType1_8();
public static final Type<Item> ITEM1_13 = new ItemType1_13();
public static final Type<Item> ITEM1_13_2 = new ItemType1_13_2();
public static final Type<Item> ITEM1_20_2 = new ItemType1_20_2();
public static final Type<Item[]> ITEM1_8_SHORT_ARRAY = new ItemShortArrayType1_8();
public static final Type<Item[]> ITEM1_13_SHORT_ARRAY = new ItemShortArrayType1_13();
public static final Type<Item[]> ITEM1_13_2_SHORT_ARRAY = new ItemShortArrayType1_13_2();
public static final Type<Item[]> ITEM1_13_ARRAY = new ArrayType<>(ITEM1_13);
public static final Type<Item[]> ITEM1_13_2_ARRAY = new ArrayType<>(ITEM1_13_2);
public static final Type<Item[]> ITEM1_20_2_ARRAY = new ArrayType<>(ITEM1_20_2);
}

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.lang.reflect.Array;
@ -41,7 +42,7 @@ public class ArrayType<T> extends Type<T[]> {
@Override
public T[] read(ByteBuf buffer) {
int amount = Type.VAR_INT.readPrimitive(buffer);
int amount = Types.VAR_INT.readPrimitive(buffer);
T[] array = (T[]) Array.newInstance(elementType.getOutputClass(), amount);
for (int i = 0; i < amount; i++) {
@ -52,7 +53,7 @@ public class ArrayType<T> extends Type<T[]> {
@Override
public void write(ByteBuf buffer, T[] object) {
Type.VAR_INT.writePrimitive(buffer, object.length);
Types.VAR_INT.writePrimitive(buffer, object.length);
for (T o : object) {
elementType.write(buffer, o);
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.TypeConverter;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class BooleanType extends Type<Boolean> implements TypeConverter<Boolean> {
@ -55,7 +56,7 @@ public class BooleanType extends Type<Boolean> implements TypeConverter<Boolean>
public static final class OptionalBooleanType extends OptionalType<Boolean> {
public OptionalBooleanType() {
super(Type.BOOLEAN);
super(Types.BOOLEAN);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ByteArrayType extends Type<byte[]> {
@ -46,14 +47,14 @@ public class ByteArrayType extends Type<byte[]> {
if (this.length != -1) {
Preconditions.checkArgument(length == object.length, "Length does not match expected length");
} else {
Type.VAR_INT.writePrimitive(buffer, object.length);
Types.VAR_INT.writePrimitive(buffer, object.length);
}
buffer.writeBytes(object);
}
@Override
public byte[] read(final ByteBuf buffer) {
final int length = this.length == -1 ? Type.VAR_INT.readPrimitive(buffer) : this.length;
final int length = this.length == -1 ? Types.VAR_INT.readPrimitive(buffer) : this.length;
Preconditions.checkArgument(buffer.isReadable(length), "Length is fewer than readable bytes");
final byte[] array = new byte[length];
buffer.readBytes(array);
@ -63,7 +64,7 @@ public class ByteArrayType extends Type<byte[]> {
public static final class OptionalByteArrayType extends OptionalType<byte[]> {
public OptionalByteArrayType() {
super(Type.BYTE_ARRAY_PRIMITIVE);
super(Types.BYTE_ARRAY_PRIMITIVE);
}
public OptionalByteArrayType(final int length) {

View File

@ -28,6 +28,7 @@ import com.google.gson.JsonSyntaxException;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ComponentType extends Type<JsonElement> {
@ -56,7 +57,7 @@ public class ComponentType extends Type<JsonElement> {
public static final class OptionalComponentType extends OptionalType<JsonElement> {
public OptionalComponentType() {
super(Type.COMPONENT);
super(Types.COMPONENT);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.TypeConverter;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class FloatType extends Type<Float> implements TypeConverter<Float> {
@ -72,7 +73,7 @@ public class FloatType extends Type<Float> implements TypeConverter<Float> {
public static final class OptionalFloatType extends OptionalType<Float> {
public OptionalFloatType() {
super(Type.FLOAT);
super(Types.FLOAT);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class IntArrayType extends Type<int[]> {
@ -46,7 +47,7 @@ public class IntArrayType extends Type<int[]> {
if (this.length != -1) {
Preconditions.checkArgument(length == object.length, "Length does not match expected length");
} else {
Type.VAR_INT.writePrimitive(buffer, object.length);
Types.VAR_INT.writePrimitive(buffer, object.length);
}
for (final int i : object) {
buffer.writeInt(i);
@ -55,7 +56,7 @@ public class IntArrayType extends Type<int[]> {
@Override
public int[] read(final ByteBuf buffer) {
final int length = this.length == -1 ? Type.VAR_INT.readPrimitive(buffer) : this.length;
final int length = this.length == -1 ? Types.VAR_INT.readPrimitive(buffer) : this.length;
Preconditions.checkArgument(buffer.isReadable(length), "Length is fewer than readable bytes");
final int[] array = new int[length];
for (int i = 0; i < length; i++) {

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class LongArrayType extends Type<long[]> {
@ -33,7 +34,7 @@ public class LongArrayType extends Type<long[]> {
@Override
public long[] read(ByteBuf buffer) {
int length = Type.VAR_INT.readPrimitive(buffer);
int length = Types.VAR_INT.readPrimitive(buffer);
long[] array = new long[length];
for (int i = 0; i < array.length; i++) {
array[i] = buffer.readLong();
@ -43,7 +44,7 @@ public class LongArrayType extends Type<long[]> {
@Override
public void write(ByteBuf buffer, long[] object) {
Type.VAR_INT.writePrimitive(buffer, object.length);
Types.VAR_INT.writePrimitive(buffer, object.length);
for (long l : object) {
buffer.writeLong(l);
}

View File

@ -23,6 +23,7 @@
package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class OptionalVarIntType extends Type<Integer> {
@ -33,16 +34,16 @@ public class OptionalVarIntType extends Type<Integer> {
@Override
public Integer read(final ByteBuf buffer) {
final int value = Type.VAR_INT.readPrimitive(buffer);
final int value = Types.VAR_INT.readPrimitive(buffer);
return value == 0 ? null : value - 1;
}
@Override
public void write(final ByteBuf buffer, final Integer object) {
if (object == null) {
Type.VAR_INT.writePrimitive(buffer, 0);
Types.VAR_INT.writePrimitive(buffer, 0);
} else {
Type.VAR_INT.writePrimitive(buffer, object + 1);
Types.VAR_INT.writePrimitive(buffer, object + 1);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.minecraft.RegistryEntry;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class RegistryEntryType extends Type<RegistryEntry> {
@ -34,12 +35,12 @@ public class RegistryEntryType extends Type<RegistryEntry> {
@Override
public RegistryEntry read(final ByteBuf buffer) {
return new RegistryEntry(Type.STRING.read(buffer), Type.OPTIONAL_TAG.read(buffer));
return new RegistryEntry(Types.STRING.read(buffer), Types.OPTIONAL_TAG.read(buffer));
}
@Override
public void write(final ByteBuf buffer, final RegistryEntry entry) {
Type.STRING.write(buffer, entry.key());
Type.OPTIONAL_TAG.write(buffer, entry.tag());
Types.STRING.write(buffer, entry.key());
Types.OPTIONAL_TAG.write(buffer, entry.tag());
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.nio.charset.StandardCharsets;
@ -45,7 +46,7 @@ public class StringType extends Type<String> {
@Override
public String read(ByteBuf buffer) {
int len = Type.VAR_INT.readPrimitive(buffer);
int len = Types.VAR_INT.readPrimitive(buffer);
Preconditions.checkArgument(len <= maxLength * MAX_CHAR_UTF_8_LENGTH,
"Cannot receive string longer than Short.MAX_VALUE * " + MAX_CHAR_UTF_8_LENGTH + " bytes (got %s bytes)", len);
@ -66,14 +67,14 @@ public class StringType extends Type<String> {
}
byte[] b = object.getBytes(StandardCharsets.UTF_8);
Type.VAR_INT.writePrimitive(buffer, b.length);
Types.VAR_INT.writePrimitive(buffer, b.length);
buffer.writeBytes(b);
}
public static final class OptionalStringType extends OptionalType<String> {
public OptionalStringType() {
super(Type.STRING);
super(Types.STRING);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.util.UUID;
@ -47,7 +48,7 @@ public class UUIDType extends Type<UUID> {
public static final class OptionalUUIDType extends OptionalType<UUID> {
public OptionalUUIDType() {
super(Type.UUID);
super(Types.UUID);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types;
import com.google.common.base.Preconditions;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class VarIntArrayType extends Type<int[]> {
@ -33,20 +34,20 @@ public class VarIntArrayType extends Type<int[]> {
@Override
public int[] read(ByteBuf buffer) {
int length = Type.VAR_INT.readPrimitive(buffer);
int length = Types.VAR_INT.readPrimitive(buffer);
Preconditions.checkArgument(buffer.isReadable(length)); // Sanity check, at least 1 byte will be used for each varint
int[] array = new int[length];
for (int i = 0; i < array.length; i++) {
array[i] = Type.VAR_INT.readPrimitive(buffer);
array[i] = Types.VAR_INT.readPrimitive(buffer);
}
return array;
}
@Override
public void write(ByteBuf buffer, int[] object) {
Type.VAR_INT.writePrimitive(buffer, object.length);
Types.VAR_INT.writePrimitive(buffer, object.length);
for (int i : object) {
Type.VAR_INT.writePrimitive(buffer, i);
Types.VAR_INT.writePrimitive(buffer, i);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.block;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_8;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class BlockChangeRecordType extends Type<BlockChangeRecord> {
@ -35,14 +36,14 @@ public class BlockChangeRecordType extends Type<BlockChangeRecord> {
@Override
public BlockChangeRecord read(ByteBuf buffer) {
short position = Type.SHORT.readPrimitive(buffer);
int blockId = Type.VAR_INT.readPrimitive(buffer);
short position = Types.SHORT.readPrimitive(buffer);
int blockId = Types.VAR_INT.readPrimitive(buffer);
return new BlockChangeRecord1_8(position >> 12 & 0xF, position & 0xFF, position >> 8 & 0xF, blockId);
}
@Override
public void write(ByteBuf buffer, BlockChangeRecord object) {
Type.SHORT.writePrimitive(buffer, (short) (object.getSectionX() << 12 | object.getSectionZ() << 8 | object.getY()));
Type.VAR_INT.writePrimitive(buffer, object.getBlockId());
Types.SHORT.writePrimitive(buffer, (short) (object.getSectionX() << 12 | object.getSectionZ() << 8 | object.getY()));
Types.VAR_INT.writePrimitive(buffer, object.getBlockId());
}
}

View File

@ -26,6 +26,7 @@ import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntityImpl;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class BlockEntityType1_18 extends Type<BlockEntity> {
@ -38,8 +39,8 @@ public class BlockEntityType1_18 extends Type<BlockEntity> {
public BlockEntity read(final ByteBuf buffer) {
final byte xz = buffer.readByte();
final short y = buffer.readShort();
final int typeId = Type.VAR_INT.readPrimitive(buffer);
final CompoundTag tag = Type.NAMED_COMPOUND_TAG.read(buffer);
final int typeId = Types.VAR_INT.readPrimitive(buffer);
final CompoundTag tag = Types.NAMED_COMPOUND_TAG.read(buffer);
return new BlockEntityImpl(xz, y, typeId, tag);
}
@ -47,7 +48,7 @@ public class BlockEntityType1_18 extends Type<BlockEntity> {
public void write(final ByteBuf buffer, final BlockEntity entity) {
buffer.writeByte(entity.packedXZ());
buffer.writeShort(entity.y());
Type.VAR_INT.writePrimitive(buffer, entity.typeId());
Type.NAMED_COMPOUND_TAG.write(buffer, entity.tag());
Types.VAR_INT.writePrimitive(buffer, entity.typeId());
Types.NAMED_COMPOUND_TAG.write(buffer, entity.tag());
}
}

View File

@ -26,6 +26,7 @@ import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntity;
import com.viaversion.viaversion.api.minecraft.blockentity.BlockEntityImpl;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class BlockEntityType1_20_2 extends Type<BlockEntity> {
@ -38,8 +39,8 @@ public class BlockEntityType1_20_2 extends Type<BlockEntity> {
public BlockEntity read(final ByteBuf buffer) {
final byte xz = buffer.readByte();
final short y = buffer.readShort();
final int typeId = Type.VAR_INT.readPrimitive(buffer);
final CompoundTag tag = Type.COMPOUND_TAG.read(buffer);
final int typeId = Types.VAR_INT.readPrimitive(buffer);
final CompoundTag tag = Types.COMPOUND_TAG.read(buffer);
return new BlockEntityImpl(xz, y, typeId, tag);
}
@ -47,7 +48,7 @@ public class BlockEntityType1_20_2 extends Type<BlockEntity> {
public void write(final ByteBuf buffer, final BlockEntity entity) {
buffer.writeByte(entity.packedXZ());
buffer.writeShort(entity.y());
Type.VAR_INT.writePrimitive(buffer, entity.typeId());
Type.COMPOUND_TAG.write(buffer, entity.tag());
Types.VAR_INT.writePrimitive(buffer, entity.typeId());
Types.COMPOUND_TAG.write(buffer, entity.tag());
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.block;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord;
import com.viaversion.viaversion.api.minecraft.BlockChangeRecord1_16_2;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class VarLongBlockChangeRecordType extends Type<BlockChangeRecord> {
@ -35,7 +36,7 @@ public class VarLongBlockChangeRecordType extends Type<BlockChangeRecord> {
@Override
public BlockChangeRecord read(ByteBuf buffer) {
long data = Type.VAR_LONG.readPrimitive(buffer);
long data = Types.VAR_LONG.readPrimitive(buffer);
short position = (short) (data & 0xFFFL);
return new BlockChangeRecord1_16_2(position >>> 8 & 0xF, position & 0xF, position >>> 4 & 0xF, (int) (data >>> 12));
}
@ -43,6 +44,6 @@ public class VarLongBlockChangeRecordType extends Type<BlockChangeRecord> {
@Override
public void write(ByteBuf buffer, BlockChangeRecord object) {
short position = (short) (object.getSectionX() << 8 | object.getSectionZ() << 4 | object.getSectionY());
Type.VAR_LONG.writePrimitive(buffer, (long) object.getBlockId() << 12 | position);
Types.VAR_LONG.writePrimitive(buffer, (long) object.getBlockId() << 12 | position);
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.chunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class BulkChunkType1_8 extends Type<Chunk[]> {
@ -42,7 +43,7 @@ public class BulkChunkType1_8 extends Type<Chunk[]> {
@Override
public Chunk[] read(ByteBuf input) {
final boolean skyLight = input.readBoolean();
final int count = Type.VAR_INT.readPrimitive(input);
final int count = Types.VAR_INT.readPrimitive(input);
final Chunk[] chunks = new Chunk[count];
final ChunkBulkSection[] chunkInfo = new ChunkBulkSection[count];
@ -73,7 +74,7 @@ public class BulkChunkType1_8 extends Type<Chunk[]> {
}
}
output.writeBoolean(skyLight);
Type.VAR_INT.writePrimitive(output, chunks.length);
Types.VAR_INT.writePrimitive(output, chunks.length);
// Write metadata
for (Chunk chunk : chunks) {

View File

@ -27,6 +27,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSectionImpl;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.util.CompactArrayUtil;
import io.netty.buffer.ByteBuf;
@ -50,18 +51,18 @@ public class ChunkSectionType1_13 extends Type<ChunkSection> {
// Read palette
ChunkSection chunkSection;
if (bitsPerBlock != GLOBAL_PALETTE) {
int paletteLength = Type.VAR_INT.readPrimitive(buffer);
int paletteLength = Types.VAR_INT.readPrimitive(buffer);
chunkSection = new ChunkSectionImpl(true, paletteLength);
DataPalette blockPalette = chunkSection.palette(PaletteType.BLOCKS);
for (int i = 0; i < paletteLength; i++) {
blockPalette.addId(Type.VAR_INT.readPrimitive(buffer));
blockPalette.addId(Types.VAR_INT.readPrimitive(buffer));
}
} else {
chunkSection = new ChunkSectionImpl(true);
}
// Read blocks
long[] blockData = Type.LONG_ARRAY_PRIMITIVE.read(buffer);
long[] blockData = Types.LONG_ARRAY_PRIMITIVE.read(buffer);
if (blockData.length > 0) {
int expectedLength = (int) Math.ceil(ChunkSection.SIZE * bitsPerBlock / 64.0);
if (blockData.length == expectedLength) {
@ -90,14 +91,14 @@ public class ChunkSectionType1_13 extends Type<ChunkSection> {
// Write palette
if (bitsPerBlock != GLOBAL_PALETTE) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.size());
Types.VAR_INT.writePrimitive(buffer, blockPalette.size());
for (int i = 0; i < blockPalette.size(); i++) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
Types.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
}
}
long[] data = CompactArrayUtil.createCompactArray(bitsPerBlock, ChunkSection.SIZE,
bitsPerBlock == GLOBAL_PALETTE ? blockPalette::idAt : blockPalette::paletteIndexAt);
Type.LONG_ARRAY_PRIMITIVE.write(buffer, data);
Types.LONG_ARRAY_PRIMITIVE.write(buffer, data);
}
}

View File

@ -27,6 +27,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSectionImpl;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.util.CompactArrayUtil;
import io.netty.buffer.ByteBuf;
@ -50,18 +51,18 @@ public class ChunkSectionType1_16 extends Type<ChunkSection> {
// Read palette
ChunkSection chunkSection;
if (bitsPerBlock != GLOBAL_PALETTE) {
int paletteLength = Type.VAR_INT.readPrimitive(buffer);
int paletteLength = Types.VAR_INT.readPrimitive(buffer);
chunkSection = new ChunkSectionImpl(false, paletteLength);
DataPalette blockPalette = chunkSection.palette(PaletteType.BLOCKS);
for (int i = 0; i < paletteLength; i++) {
blockPalette.addId(Type.VAR_INT.readPrimitive(buffer));
blockPalette.addId(Types.VAR_INT.readPrimitive(buffer));
}
} else {
chunkSection = new ChunkSectionImpl(false);
}
// Read blocks
long[] blockData = Type.LONG_ARRAY_PRIMITIVE.read(buffer);
long[] blockData = Types.LONG_ARRAY_PRIMITIVE.read(buffer);
if (blockData.length > 0) {
char valuesPerLong = (char) (64 / bitsPerBlock);
int expectedLength = (ChunkSection.SIZE + valuesPerLong - 1) / valuesPerLong;
@ -91,14 +92,14 @@ public class ChunkSectionType1_16 extends Type<ChunkSection> {
// Write palette
if (bitsPerBlock != GLOBAL_PALETTE) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.size());
Types.VAR_INT.writePrimitive(buffer, blockPalette.size());
for (int i = 0; i < blockPalette.size(); i++) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
Types.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
}
}
long[] data = CompactArrayUtil.createCompactArrayWithPadding(bitsPerBlock, ChunkSection.SIZE,
bitsPerBlock == GLOBAL_PALETTE ? blockPalette::idAt : blockPalette::paletteIndexAt);
Type.LONG_ARRAY_PRIMITIVE.write(buffer, data);
Types.LONG_ARRAY_PRIMITIVE.write(buffer, data);
}
}

View File

@ -27,6 +27,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.ChunkSectionImpl;
import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.util.CompactArrayUtil;
import io.netty.buffer.ByteBuf;
@ -49,19 +50,19 @@ public class ChunkSectionType1_9 extends Type<ChunkSection> {
}
// Read palette
int paletteLength = Type.VAR_INT.readPrimitive(buffer);
int paletteLength = Types.VAR_INT.readPrimitive(buffer);
ChunkSection chunkSection = bitsPerBlock != GLOBAL_PALETTE ? new ChunkSectionImpl(true, paletteLength) : new ChunkSectionImpl(true);
DataPalette blockPalette = chunkSection.palette(PaletteType.BLOCKS);
for (int i = 0; i < paletteLength; i++) {
if (bitsPerBlock != GLOBAL_PALETTE) {
blockPalette.addId(Type.VAR_INT.readPrimitive(buffer));
blockPalette.addId(Types.VAR_INT.readPrimitive(buffer));
} else {
Type.VAR_INT.readPrimitive(buffer);
Types.VAR_INT.readPrimitive(buffer);
}
}
// Read blocks
long[] blockData = Type.LONG_ARRAY_PRIMITIVE.read(buffer);
long[] blockData = Types.LONG_ARRAY_PRIMITIVE.read(buffer);
if (blockData.length > 0) {
int expectedLength = (int) Math.ceil(ChunkSection.SIZE * bitsPerBlock / 64.0);
if (blockData.length == expectedLength) {
@ -89,16 +90,16 @@ public class ChunkSectionType1_9 extends Type<ChunkSection> {
// Write palette
if (bitsPerBlock != GLOBAL_PALETTE) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.size());
Types.VAR_INT.writePrimitive(buffer, blockPalette.size());
for (int i = 0; i < blockPalette.size(); i++) {
Type.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
Types.VAR_INT.writePrimitive(buffer, blockPalette.idByIndex(i));
}
} else {
Type.VAR_INT.writePrimitive(buffer, 0);
Types.VAR_INT.writePrimitive(buffer, 0);
}
long[] data = CompactArrayUtil.createCompactArray(bitsPerBlock, ChunkSection.SIZE,
bitsPerBlock == GLOBAL_PALETTE ? blockPalette::idAt : blockPalette::paletteIndexAt);
Type.LONG_ARRAY_PRIMITIVE.write(buffer, data);
Types.LONG_ARRAY_PRIMITIVE.write(buffer, data);
}
}

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -57,8 +58,8 @@ public class ChunkType1_13 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean fullChunk = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[16];
@ -84,7 +85,7 @@ public class ChunkType1_13 extends Type<Chunk> {
}
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitmask, sections, biomeData, nbtData);
}
@ -94,7 +95,7 @@ public class ChunkType1_13 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
ByteBuf buf = output.alloc().buffer();
try {
@ -109,7 +110,7 @@ public class ChunkType1_13 extends Type<Chunk> {
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 1024 : 0));
Types.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 1024 : 0));
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
@ -123,6 +124,6 @@ public class ChunkType1_13 extends Type<Chunk> {
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -48,9 +49,9 @@ public class ChunkType1_14 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean fullChunk = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(input);
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(input);
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[16];
@ -70,7 +71,7 @@ public class ChunkType1_14 extends Type<Chunk> {
}
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitmask, sections, biomeData, heightMap, nbtData);
}
@ -80,8 +81,8 @@ public class ChunkType1_14 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Type.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
ByteBuf buf = output.alloc().buffer();
try {
@ -93,7 +94,7 @@ public class ChunkType1_14 extends Type<Chunk> {
Types1_13.CHUNK_SECTION.write(buf, section);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 1024 : 0)); // 256 * 4
Types.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 1024 : 0)); // 256 * 4
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
@ -107,6 +108,6 @@ public class ChunkType1_14 extends Type<Chunk> {
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_13;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -48,8 +49,8 @@ public class ChunkType1_15 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean fullChunk = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(input);
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(input);
int[] biomeData = fullChunk ? new int[1024] : null;
if (fullChunk) {
@ -58,7 +59,7 @@ public class ChunkType1_15 extends Type<Chunk> {
}
}
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[16];
@ -71,7 +72,7 @@ public class ChunkType1_15 extends Type<Chunk> {
sections[i] = section;
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitmask, sections, biomeData, heightMap, nbtData);
}
@ -81,8 +82,8 @@ public class ChunkType1_15 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Type.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
// Write biome data
if (chunk.isBiomeData()) {
@ -101,13 +102,13 @@ public class ChunkType1_15 extends Type<Chunk> {
Types1_13.CHUNK_SECTION.write(buf, section);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes());
Types.VAR_INT.writePrimitive(output, buf.readableBytes());
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -49,8 +50,8 @@ public class ChunkType1_16 extends Type<Chunk> {
boolean fullChunk = input.readBoolean();
boolean ignoreOldLightData = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(input);
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(input);
int[] biomeData = fullChunk ? new int[1024] : null;
if (fullChunk) {
@ -59,7 +60,7 @@ public class ChunkType1_16 extends Type<Chunk> {
}
}
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[16];
@ -72,7 +73,7 @@ public class ChunkType1_16 extends Type<Chunk> {
sections[i] = section;
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, ignoreOldLightData, primaryBitmask, sections, biomeData, heightMap, nbtData);
}
@ -83,8 +84,8 @@ public class ChunkType1_16 extends Type<Chunk> {
output.writeBoolean(chunk.isFullChunk());
output.writeBoolean(chunk.isIgnoreOldLightData());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Type.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
// Write biome data
if (chunk.isBiomeData()) {
@ -103,13 +104,13 @@ public class ChunkType1_16 extends Type<Chunk> {
Types1_16.CHUNK_SECTION.write(buf, section);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes());
Types.VAR_INT.writePrimitive(output, buf.readableBytes());
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -48,15 +49,15 @@ public class ChunkType1_16_2 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean fullChunk = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(input);
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(input);
int[] biomeData = null;
if (fullChunk) {
biomeData = Type.VAR_INT_ARRAY_PRIMITIVE.read(input);
biomeData = Types.VAR_INT_ARRAY_PRIMITIVE.read(input);
}
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[16];
@ -69,7 +70,7 @@ public class ChunkType1_16_2 extends Type<Chunk> {
sections[i] = section;
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitmask, sections, biomeData, heightMap, nbtData);
}
@ -79,12 +80,12 @@ public class ChunkType1_16_2 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Type.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
// Write biome data
if (chunk.isBiomeData()) {
Type.VAR_INT_ARRAY_PRIMITIVE.write(output, chunk.getBiomeData());
Types.VAR_INT_ARRAY_PRIMITIVE.write(output, chunk.getBiomeData());
}
ByteBuf buf = output.alloc().buffer();
@ -97,13 +98,13 @@ public class ChunkType1_16_2 extends Type<Chunk> {
Types1_16.CHUNK_SECTION.write(buf, section);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes());
Types.VAR_INT.writePrimitive(output, buf.readableBytes());
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
}
}

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_16;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
@ -51,12 +52,12 @@ public final class ChunkType1_17 extends Type<Chunk> {
int chunkX = input.readInt();
int chunkZ = input.readInt();
BitSet sectionsMask = BitSet.valueOf(Type.LONG_ARRAY_PRIMITIVE.read(input));
CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(input);
BitSet sectionsMask = BitSet.valueOf(Types.LONG_ARRAY_PRIMITIVE.read(input));
CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(input);
int[] biomeData = Type.VAR_INT_ARRAY_PRIMITIVE.read(input);
int[] biomeData = Types.VAR_INT_ARRAY_PRIMITIVE.read(input);
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
// Read sections
ChunkSection[] sections = new ChunkSection[ySectionCount];
@ -69,7 +70,7 @@ public final class ChunkType1_17 extends Type<Chunk> {
sections[i] = section;
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, true, false, sectionsMask, sections, biomeData, heightMap, nbtData);
}
@ -78,11 +79,11 @@ public final class ChunkType1_17 extends Type<Chunk> {
output.writeInt(chunk.getX());
output.writeInt(chunk.getZ());
Type.LONG_ARRAY_PRIMITIVE.write(output, chunk.getChunkMask().toLongArray());
Type.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
Types.LONG_ARRAY_PRIMITIVE.write(output, chunk.getChunkMask().toLongArray());
Types.NAMED_COMPOUND_TAG.write(output, chunk.getHeightMap());
// Write biome data
Type.VAR_INT_ARRAY_PRIMITIVE.write(output, chunk.getBiomeData());
Types.VAR_INT_ARRAY_PRIMITIVE.write(output, chunk.getBiomeData());
ByteBuf buf = output.alloc().buffer();
try {
@ -94,13 +95,13 @@ public final class ChunkType1_17 extends Type<Chunk> {
Types1_16.CHUNK_SECTION.write(buf, section);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes());
Types.VAR_INT.writePrimitive(output, buf.readableBytes());
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(EMPTY_COMPOUNDS));
}
}

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import java.util.List;
@ -48,10 +49,10 @@ public final class ChunkType1_18 extends Type<Chunk> {
public Chunk read(final ByteBuf buffer) {
final int chunkX = buffer.readInt();
final int chunkZ = buffer.readInt();
final CompoundTag heightMap = Type.NAMED_COMPOUND_TAG.read(buffer);
final CompoundTag heightMap = Types.NAMED_COMPOUND_TAG.read(buffer);
// Read sections
final ByteBuf sectionsBuf = buffer.readBytes(Type.VAR_INT.readPrimitive(buffer));
final ByteBuf sectionsBuf = buffer.readBytes(Types.VAR_INT.readPrimitive(buffer));
final ChunkSection[] sections = new ChunkSection[ySectionCount];
try {
for (int i = 0; i < ySectionCount; i++) {
@ -61,10 +62,10 @@ public final class ChunkType1_18 extends Type<Chunk> {
sectionsBuf.release();
}
final int blockEntitiesLength = Type.VAR_INT.readPrimitive(buffer);
final int blockEntitiesLength = Types.VAR_INT.readPrimitive(buffer);
final List<BlockEntity> blockEntities = new ArrayList<>(blockEntitiesLength);
for (int i = 0; i < blockEntitiesLength; i++) {
blockEntities.add(Type.BLOCK_ENTITY1_18.read(buffer));
blockEntities.add(Types.BLOCK_ENTITY1_18.read(buffer));
}
return new Chunk1_18(chunkX, chunkZ, sections, heightMap, blockEntities);
@ -75,7 +76,7 @@ public final class ChunkType1_18 extends Type<Chunk> {
buffer.writeInt(chunk.getX());
buffer.writeInt(chunk.getZ());
Type.NAMED_COMPOUND_TAG.write(buffer, chunk.getHeightMap());
Types.NAMED_COMPOUND_TAG.write(buffer, chunk.getHeightMap());
final ByteBuf sectionBuffer = buffer.alloc().buffer();
try {
@ -83,15 +84,15 @@ public final class ChunkType1_18 extends Type<Chunk> {
sectionType.write(sectionBuffer, section);
}
sectionBuffer.readerIndex(0);
Type.VAR_INT.writePrimitive(buffer, sectionBuffer.readableBytes());
Types.VAR_INT.writePrimitive(buffer, sectionBuffer.readableBytes());
buffer.writeBytes(sectionBuffer);
} finally {
sectionBuffer.release(); // release buffer
}
Type.VAR_INT.writePrimitive(buffer, chunk.blockEntities().size());
Types.VAR_INT.writePrimitive(buffer, chunk.blockEntities().size());
for (final BlockEntity blockEntity : chunk.blockEntities()) {
Type.BLOCK_ENTITY1_18.write(buffer, blockEntity);
Types.BLOCK_ENTITY1_18.write(buffer, blockEntity);
}
}
}

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk1_18;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.util.ArrayList;
import java.util.List;
@ -48,10 +49,10 @@ public final class ChunkType1_20_2 extends Type<Chunk> {
public Chunk read(final ByteBuf buffer) {
final int chunkX = buffer.readInt();
final int chunkZ = buffer.readInt();
final CompoundTag heightMap = Type.COMPOUND_TAG.read(buffer);
final CompoundTag heightMap = Types.COMPOUND_TAG.read(buffer);
// Read sections
final ByteBuf sectionsBuf = buffer.readBytes(Type.VAR_INT.readPrimitive(buffer));
final ByteBuf sectionsBuf = buffer.readBytes(Types.VAR_INT.readPrimitive(buffer));
final ChunkSection[] sections = new ChunkSection[ySectionCount];
try {
for (int i = 0; i < ySectionCount; i++) {
@ -61,10 +62,10 @@ public final class ChunkType1_20_2 extends Type<Chunk> {
sectionsBuf.release();
}
final int blockEntitiesLength = Type.VAR_INT.readPrimitive(buffer);
final int blockEntitiesLength = Types.VAR_INT.readPrimitive(buffer);
final List<BlockEntity> blockEntities = new ArrayList<>(blockEntitiesLength);
for (int i = 0; i < blockEntitiesLength; i++) {
blockEntities.add(Type.BLOCK_ENTITY1_20_2.read(buffer));
blockEntities.add(Types.BLOCK_ENTITY1_20_2.read(buffer));
}
return new Chunk1_18(chunkX, chunkZ, sections, heightMap, blockEntities);
@ -75,7 +76,7 @@ public final class ChunkType1_20_2 extends Type<Chunk> {
buffer.writeInt(chunk.getX());
buffer.writeInt(chunk.getZ());
Type.COMPOUND_TAG.write(buffer, chunk.getHeightMap());
Types.COMPOUND_TAG.write(buffer, chunk.getHeightMap());
final ByteBuf sectionBuffer = buffer.alloc().buffer();
try {
@ -83,15 +84,15 @@ public final class ChunkType1_20_2 extends Type<Chunk> {
sectionType.write(sectionBuffer, section);
}
sectionBuffer.readerIndex(0);
Type.VAR_INT.writePrimitive(buffer, sectionBuffer.readableBytes());
Types.VAR_INT.writePrimitive(buffer, sectionBuffer.readableBytes());
buffer.writeBytes(sectionBuffer);
} finally {
sectionBuffer.release(); // release buffer
}
Type.VAR_INT.writePrimitive(buffer, chunk.blockEntities().size());
Types.VAR_INT.writePrimitive(buffer, chunk.blockEntities().size());
for (final BlockEntity blockEntity : chunk.blockEntities()) {
Type.BLOCK_ENTITY1_20_2.write(buffer, blockEntity);
Types.BLOCK_ENTITY1_20_2.write(buffer, blockEntity);
}
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_8;
import com.viaversion.viaversion.util.ChunkUtil;
import io.netty.buffer.ByteBuf;
@ -57,7 +58,7 @@ public class ChunkType1_8 extends Type<Chunk> {
final int chunkZ = input.readInt();
final boolean fullChunk = input.readBoolean();
final int bitmask = input.readUnsignedShort();
final int dataLength = Type.VAR_INT.readPrimitive(input);
final int dataLength = Types.VAR_INT.readPrimitive(input);
final byte[] data = new byte[dataLength];
input.readBytes(data);
@ -81,7 +82,7 @@ public class ChunkType1_8 extends Type<Chunk> {
output.writeBoolean(chunk.isFullChunk());
output.writeShort(chunk.getBitmask());
final byte[] data = serialize(chunk);
Type.VAR_INT.writePrimitive(output, data.length);
Types.VAR_INT.writePrimitive(output, data.length);
output.writeBytes(data);
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_9;
import com.viaversion.viaversion.util.ChunkUtil;
import io.netty.buffer.ByteBuf;
@ -57,8 +58,8 @@ public class ChunkType1_9_1 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean groundUp = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
ChunkSection[] sections = new ChunkSection[16];
int[] biomeData = groundUp ? new int[256] : null;
@ -101,7 +102,7 @@ public class ChunkType1_9_1 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
ByteBuf buf = output.alloc().buffer();
try {
@ -116,7 +117,7 @@ public class ChunkType1_9_1 extends Type<Chunk> {
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 256 : 0));
Types.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 256 : 0));
output.writeBytes(buf);
} finally {
buf.release(); // release buffer

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.BaseChunk;
import com.viaversion.viaversion.api.minecraft.chunks.Chunk;
import com.viaversion.viaversion.api.minecraft.chunks.ChunkSection;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_9;
import com.viaversion.viaversion.util.ChunkUtil;
import io.netty.buffer.ByteBuf;
@ -59,8 +60,8 @@ public class ChunkType1_9_3 extends Type<Chunk> {
int chunkZ = input.readInt();
boolean fullChunk = input.readBoolean();
int primaryBitmask = Type.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Type.VAR_INT.readPrimitive(input));
int primaryBitmask = Types.VAR_INT.readPrimitive(input);
ByteBuf data = input.readSlice(Types.VAR_INT.readPrimitive(input));
ChunkSection[] sections = new ChunkSection[16];
int[] biomeData = fullChunk ? new int[256] : null;
@ -87,7 +88,7 @@ public class ChunkType1_9_3 extends Type<Chunk> {
return ChunkUtil.createEmptyChunk(chunkX, chunkZ);
}
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Type.NAMED_COMPOUND_TAG_ARRAY.read(input)));
List<CompoundTag> nbtData = new ArrayList<>(Arrays.asList(Types.NAMED_COMPOUND_TAG_ARRAY.read(input)));
return new BaseChunk(chunkX, chunkZ, fullChunk, false, primaryBitmask, sections, biomeData, nbtData);
}
@ -97,7 +98,7 @@ public class ChunkType1_9_3 extends Type<Chunk> {
output.writeInt(chunk.getZ());
output.writeBoolean(chunk.isFullChunk());
Type.VAR_INT.writePrimitive(output, chunk.getBitmask());
Types.VAR_INT.writePrimitive(output, chunk.getBitmask());
ByteBuf buf = output.alloc().buffer();
try {
@ -111,7 +112,7 @@ public class ChunkType1_9_3 extends Type<Chunk> {
section.getLight().writeSkyLight(buf);
}
buf.readerIndex(0);
Type.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 256 : 0));
Types.VAR_INT.writePrimitive(output, buf.readableBytes() + (chunk.isBiomeData() ? 256 : 0));
output.writeBytes(buf);
} finally {
buf.release(); // release buffer
@ -125,6 +126,6 @@ public class ChunkType1_9_3 extends Type<Chunk> {
}
// Write Block Entities
Type.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
Types.NAMED_COMPOUND_TAG_ARRAY.write(output, chunk.getBlockEntities().toArray(new CompoundTag[0]));
}
}

View File

@ -26,6 +26,7 @@ import com.viaversion.viaversion.api.minecraft.chunks.DataPalette;
import com.viaversion.viaversion.api.minecraft.chunks.DataPaletteImpl;
import com.viaversion.viaversion.api.minecraft.chunks.PaletteType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.util.CompactArrayUtil;
import com.viaversion.viaversion.util.MathUtil;
import io.netty.buffer.ByteBuf;
@ -47,8 +48,8 @@ public final class PaletteType1_18 extends Type<DataPalette> {
if (bitsPerValue == 0) {
// Single value storage
palette = new DataPaletteImpl(type.size(), 1);
palette.addId(Type.VAR_INT.readPrimitive(buffer));
Type.LONG_ARRAY_PRIMITIVE.read(buffer); // Just eat it if not empty - thanks, Hypixel
palette.addId(Types.VAR_INT.readPrimitive(buffer));
Types.LONG_ARRAY_PRIMITIVE.read(buffer); // Just eat it if not empty - thanks, Hypixel
return palette;
}
@ -60,17 +61,17 @@ public final class PaletteType1_18 extends Type<DataPalette> {
// Read palette
if (bitsPerValue != globalPaletteBits) {
final int paletteLength = Type.VAR_INT.readPrimitive(buffer);
final int paletteLength = Types.VAR_INT.readPrimitive(buffer);
palette = new DataPaletteImpl(type.size(), paletteLength);
for (int i = 0; i < paletteLength; i++) {
palette.addId(Type.VAR_INT.readPrimitive(buffer));
palette.addId(Types.VAR_INT.readPrimitive(buffer));
}
} else {
palette = new DataPaletteImpl(type.size());
}
// Read values
final long[] values = Type.LONG_ARRAY_PRIMITIVE.read(buffer);
final long[] values = Types.LONG_ARRAY_PRIMITIVE.read(buffer);
if (values.length > 0) {
final int valuesPerLong = (char) (64 / bitsPerValue);
final int expectedLength = (type.size() + valuesPerLong - 1) / valuesPerLong;
@ -88,8 +89,8 @@ public final class PaletteType1_18 extends Type<DataPalette> {
if (size == 1) {
// Single value palette
buffer.writeByte(0); // 0 bit storage
Type.VAR_INT.writePrimitive(buffer, palette.idByIndex(0));
Type.VAR_INT.writePrimitive(buffer, 0); // Empty values length
Types.VAR_INT.writePrimitive(buffer, palette.idByIndex(0));
Types.VAR_INT.writePrimitive(buffer, 0); // Empty values length
return;
}
@ -104,12 +105,12 @@ public final class PaletteType1_18 extends Type<DataPalette> {
if (bitsPerValue != globalPaletteBits) {
// Write palette
Type.VAR_INT.writePrimitive(buffer, size);
Types.VAR_INT.writePrimitive(buffer, size);
for (int i = 0; i < size; i++) {
Type.VAR_INT.writePrimitive(buffer, palette.idByIndex(i));
Types.VAR_INT.writePrimitive(buffer, palette.idByIndex(i));
}
}
Type.LONG_ARRAY_PRIMITIVE.write(buffer, CompactArrayUtil.createCompactArrayWithPadding(bitsPerValue, type.size(), bitsPerValue == globalPaletteBits ? palette::idAt : palette::paletteIndexAt));
Types.LONG_ARRAY_PRIMITIVE.write(buffer, CompactArrayUtil.createCompactArrayWithPadding(bitsPerValue, type.size(), bitsPerValue == globalPaletteBits ? palette::idAt : palette::paletteIndexAt));
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.item.StructuredItem;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
// Very similar to normal items (and just results in an item), except it allows non-positive amounts and has id/amount swapped because ???
@ -43,16 +44,16 @@ public final class ItemCostType1_20_5 extends Type<Item> {
@Override
public Item read(final ByteBuf buffer) {
final int id = Type.VAR_INT.readPrimitive(buffer);
final int amount = Type.VAR_INT.readPrimitive(buffer);
final int id = Types.VAR_INT.readPrimitive(buffer);
final int amount = Types.VAR_INT.readPrimitive(buffer);
final StructuredData<?>[] dataArray = dataArrayType.read(buffer);
return new StructuredItem(id, amount, new StructuredDataContainer(dataArray));
}
@Override
public void write(final ByteBuf buffer, final Item object) {
Type.VAR_INT.writePrimitive(buffer, object.identifier());
Type.VAR_INT.writePrimitive(buffer, object.amount());
Types.VAR_INT.writePrimitive(buffer, object.identifier());
Types.VAR_INT.writePrimitive(buffer, object.amount());
dataArrayType.write(buffer, object.structuredData().data().values().toArray(EMPTY_DATA_ARRAY));
}

View File

@ -24,25 +24,26 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ItemShortArrayType1_13 extends BaseItemArrayType {
@Override
public Item[] read(ByteBuf buffer) {
int amount = Type.SHORT.readPrimitive(buffer);
int amount = Types.SHORT.readPrimitive(buffer);
Item[] array = new Item[amount];
for (int i = 0; i < amount; i++) {
array[i] = Type.ITEM1_13.read(buffer);
array[i] = Types.ITEM1_13.read(buffer);
}
return array;
}
@Override
public void write(ByteBuf buffer, Item[] object) {
Type.SHORT.writePrimitive(buffer, (short) object.length);
Types.SHORT.writePrimitive(buffer, (short) object.length);
for (Item o : object) {
Type.ITEM1_13.write(buffer, o);
Types.ITEM1_13.write(buffer, o);
}
}
}

View File

@ -24,25 +24,26 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ItemShortArrayType1_13_2 extends BaseItemArrayType {
@Override
public Item[] read(ByteBuf buffer) {
int amount = Type.SHORT.readPrimitive(buffer);
int amount = Types.SHORT.readPrimitive(buffer);
Item[] array = new Item[amount];
for (int i = 0; i < amount; i++) {
array[i] = Type.ITEM1_13_2.read(buffer);
array[i] = Types.ITEM1_13_2.read(buffer);
}
return array;
}
@Override
public void write(ByteBuf buffer, Item[] object) {
Type.SHORT.writePrimitive(buffer, (short) object.length);
Types.SHORT.writePrimitive(buffer, (short) object.length);
for (Item o : object) {
Type.ITEM1_13_2.write(buffer, o);
Types.ITEM1_13_2.write(buffer, o);
}
}
}

View File

@ -24,25 +24,26 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ItemShortArrayType1_8 extends BaseItemArrayType {
@Override
public Item[] read(ByteBuf buffer) {
int amount = Type.SHORT.readPrimitive(buffer);
int amount = Types.SHORT.readPrimitive(buffer);
Item[] array = new Item[amount];
for (int i = 0; i < amount; i++) {
array[i] = Type.ITEM1_8.read(buffer);
array[i] = Types.ITEM1_8.read(buffer);
}
return array;
}
@Override
public void write(ByteBuf buffer, Item[] object) {
Type.SHORT.writePrimitive(buffer, (short) object.length);
Types.SHORT.writePrimitive(buffer, (short) object.length);
for (Item o : object) {
Type.ITEM1_8.write(buffer, o);
Types.ITEM1_8.write(buffer, o);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -42,7 +43,7 @@ public class ItemType1_13 extends Type<Item> {
Item item = new DataItem();
item.setIdentifier(id);
item.setAmount(buffer.readByte());
item.setTag(Type.NAMED_COMPOUND_TAG.read(buffer));
item.setTag(Types.NAMED_COMPOUND_TAG.read(buffer));
return item;
}
}
@ -54,7 +55,7 @@ public class ItemType1_13 extends Type<Item> {
} else {
buffer.writeShort(object.identifier());
buffer.writeByte(object.amount());
Type.NAMED_COMPOUND_TAG.write(buffer, object.tag());
Types.NAMED_COMPOUND_TAG.write(buffer, object.tag());
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -40,9 +41,9 @@ public class ItemType1_13_2 extends Type<Item> {
return null;
} else {
Item item = new DataItem();
item.setIdentifier(Type.VAR_INT.readPrimitive(buffer));
item.setIdentifier(Types.VAR_INT.readPrimitive(buffer));
item.setAmount(buffer.readByte());
item.setTag(Type.NAMED_COMPOUND_TAG.read(buffer));
item.setTag(Types.NAMED_COMPOUND_TAG.read(buffer));
return item;
}
}
@ -53,9 +54,9 @@ public class ItemType1_13_2 extends Type<Item> {
buffer.writeBoolean(false);
} else {
buffer.writeBoolean(true);
Type.VAR_INT.writePrimitive(buffer, object.identifier());
Types.VAR_INT.writePrimitive(buffer, object.identifier());
buffer.writeByte(object.amount());
Type.NAMED_COMPOUND_TAG.write(buffer, object.tag());
Types.NAMED_COMPOUND_TAG.write(buffer, object.tag());
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -41,9 +42,9 @@ public class ItemType1_20_2 extends Type<Item> {
}
final Item item = new DataItem();
item.setIdentifier(Type.VAR_INT.readPrimitive(buffer));
item.setIdentifier(Types.VAR_INT.readPrimitive(buffer));
item.setAmount(buffer.readByte());
item.setTag(Type.COMPOUND_TAG.read(buffer));
item.setTag(Types.COMPOUND_TAG.read(buffer));
return item;
}
@ -53,9 +54,9 @@ public class ItemType1_20_2 extends Type<Item> {
buffer.writeBoolean(false);
} else {
buffer.writeBoolean(true);
Type.VAR_INT.writePrimitive(buffer, object.identifier());
Types.VAR_INT.writePrimitive(buffer, object.identifier());
buffer.writeByte(object.amount());
Type.COMPOUND_TAG.write(buffer, object.tag());
Types.COMPOUND_TAG.write(buffer, object.tag());
}
}
}

View File

@ -29,6 +29,7 @@ import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.minecraft.item.StructuredItem;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap;
import java.util.Map;
@ -45,19 +46,19 @@ public class ItemType1_20_5 extends Type<Item> {
@Override
public @Nullable Item read(final ByteBuf buffer) {
final int amount = Type.VAR_INT.readPrimitive(buffer);
final int amount = Types.VAR_INT.readPrimitive(buffer);
if (amount <= 0) {
return null;
}
final int id = Type.VAR_INT.readPrimitive(buffer);
final int id = Types.VAR_INT.readPrimitive(buffer);
final Map<StructuredDataKey<?>, StructuredData<?>> data = readData(buffer);
return new StructuredItem(id, amount, new StructuredDataContainer(data));
}
private Map<StructuredDataKey<?>, StructuredData<?>> readData(final ByteBuf buffer) {
final int valuesSize = Type.VAR_INT.readPrimitive(buffer);
final int markersSize = Type.VAR_INT.readPrimitive(buffer);
final int valuesSize = Types.VAR_INT.readPrimitive(buffer);
final int markersSize = Types.VAR_INT.readPrimitive(buffer);
if (valuesSize == 0 && markersSize == 0) {
return new Reference2ObjectOpenHashMap<>();
}
@ -71,7 +72,7 @@ public class ItemType1_20_5 extends Type<Item> {
}
for (int i = 0; i < markersSize; i++) {
final int id = Type.VAR_INT.readPrimitive(buffer);
final int id = Types.VAR_INT.readPrimitive(buffer);
final StructuredDataKey<?> key = dataType.key(id);
Preconditions.checkNotNull(key, "No data component serializer found for empty id %s", id);
map.put(key, StructuredData.empty(key, id));
@ -82,12 +83,12 @@ public class ItemType1_20_5 extends Type<Item> {
@Override
public void write(final ByteBuf buffer, @Nullable final Item object) {
if (object == null) {
Type.VAR_INT.writePrimitive(buffer, 0);
Types.VAR_INT.writePrimitive(buffer, 0);
return;
}
Type.VAR_INT.writePrimitive(buffer, object.amount());
Type.VAR_INT.writePrimitive(buffer, object.identifier());
Types.VAR_INT.writePrimitive(buffer, object.amount());
Types.VAR_INT.writePrimitive(buffer, object.identifier());
final Map<StructuredDataKey<?>, StructuredData<?>> data = object.structuredData().data();
int valuesSize = 0;
@ -100,8 +101,8 @@ public class ItemType1_20_5 extends Type<Item> {
}
}
Type.VAR_INT.writePrimitive(buffer, valuesSize);
Type.VAR_INT.writePrimitive(buffer, markersSize);
Types.VAR_INT.writePrimitive(buffer, valuesSize);
Types.VAR_INT.writePrimitive(buffer, markersSize);
for (final StructuredData<?> value : data.values()) {
if (value.isPresent()) {
@ -110,7 +111,7 @@ public class ItemType1_20_5 extends Type<Item> {
}
for (final StructuredData<?> value : data.values()) {
if (value.isEmpty()) {
Type.VAR_INT.writePrimitive(buffer, value.id());
Types.VAR_INT.writePrimitive(buffer, value.id());
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.item;
import com.viaversion.viaversion.api.minecraft.item.DataItem;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -44,7 +45,7 @@ public class ItemType1_8 extends Type<Item> {
item.setIdentifier(id);
item.setAmount(buffer.readByte());
item.setData(buffer.readShort());
item.setTag(Type.NAMED_COMPOUND_TAG.read(buffer));
item.setTag(Types.NAMED_COMPOUND_TAG.read(buffer));
return item;
}
}
@ -57,7 +58,7 @@ public class ItemType1_8 extends Type<Item> {
buffer.writeShort(object.identifier());
buffer.writeByte(object.amount());
buffer.writeShort(object.data());
Type.NAMED_COMPOUND_TAG.write(buffer, object.tag());
Types.NAMED_COMPOUND_TAG.write(buffer, object.tag());
}
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.data.StructuredData;
import com.viaversion.viaversion.api.minecraft.data.StructuredDataKey;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -41,14 +42,14 @@ public class StructuredDataType extends Type<StructuredData<?>> {
@Override
public void write(final ByteBuf buffer, final StructuredData<?> object) {
Type.VAR_INT.writePrimitive(buffer, object.id());
Types.VAR_INT.writePrimitive(buffer, object.id());
object.write(buffer);
}
@Override
public StructuredData<?> read(final ByteBuf buffer) {
Preconditions.checkNotNull(types, "StructuredDataType has not been initialized");
final int id = Type.VAR_INT.readPrimitive(buffer);
final int id = Types.VAR_INT.readPrimitive(buffer);
final StructuredDataKey<?> key = this.types[id];
if (key == null) {
throw new IllegalArgumentException("No data component serializer found for id " + id);

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.metadata.ChunkPosition;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ChunkPositionType extends Type<ChunkPosition> {
@ -34,12 +35,12 @@ public class ChunkPositionType extends Type<ChunkPosition> {
@Override
public ChunkPosition read(ByteBuf buffer) {
final long chunkKey = Type.LONG.readPrimitive(buffer);
final long chunkKey = Types.LONG.readPrimitive(buffer);
return new ChunkPosition(chunkKey);
}
@Override
public void write(ByteBuf buffer, ChunkPosition chunkPosition) {
Type.LONG.writePrimitive(buffer, chunkPosition.chunkKey());
Types.LONG.writePrimitive(buffer, chunkPosition.chunkKey());
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.EulerAngle;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class EulerAngleType extends Type<EulerAngle> {
@ -33,17 +34,17 @@ public class EulerAngleType extends Type<EulerAngle> {
@Override
public EulerAngle read(ByteBuf buffer) {
float x = Type.FLOAT.readPrimitive(buffer);
float y = Type.FLOAT.readPrimitive(buffer);
float z = Type.FLOAT.readPrimitive(buffer);
float x = Types.FLOAT.readPrimitive(buffer);
float y = Types.FLOAT.readPrimitive(buffer);
float z = Types.FLOAT.readPrimitive(buffer);
return new EulerAngle(x, y, z);
}
@Override
public void write(ByteBuf buffer, EulerAngle object) {
Type.FLOAT.writePrimitive(buffer, object.x());
Type.FLOAT.writePrimitive(buffer, object.y());
Type.FLOAT.writePrimitive(buffer, object.z());
Types.FLOAT.writePrimitive(buffer, object.x());
Types.FLOAT.writePrimitive(buffer, object.y());
Types.FLOAT.writePrimitive(buffer, object.z());
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.GlobalPosition;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class GlobalPositionType extends Type<GlobalPosition> {
@ -35,20 +36,20 @@ public class GlobalPositionType extends Type<GlobalPosition> {
@Override
public GlobalPosition read(ByteBuf buffer) {
final String dimension = Type.STRING.read(buffer);
return Type.POSITION1_14.read(buffer).withDimension(dimension);
final String dimension = Types.STRING.read(buffer);
return Types.BLOCK_POSITION1_14.read(buffer).withDimension(dimension);
}
@Override
public void write(ByteBuf buffer, GlobalPosition object) {
Type.STRING.write(buffer, object.dimension());
Type.POSITION1_14.write(buffer, object);
Types.STRING.write(buffer, object.dimension());
Types.BLOCK_POSITION1_14.write(buffer, object);
}
public static final class OptionalGlobalPositionType extends OptionalType<GlobalPosition> {
public OptionalGlobalPositionType() {
super(Type.GLOBAL_POSITION);
super(Types.GLOBAL_POSITION);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class PositionType1_14 extends Type<Position> {
@ -53,7 +54,7 @@ public class PositionType1_14 extends Type<Position> {
public static final class OptionalPosition1_14Type extends OptionalType<Position> {
public OptionalPosition1_14Type() {
super(Type.POSITION1_14);
super(Types.BLOCK_POSITION1_14);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.Position;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class PositionType1_8 extends Type<Position> {
@ -51,7 +52,7 @@ public class PositionType1_8 extends Type<Position> {
public static final class OptionalPositionType extends OptionalType<Position> {
public OptionalPositionType() {
super(Type.POSITION1_8);
super(Types.BLOCK_POSITION1_8);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types.math;
import com.viaversion.viaversion.api.minecraft.Vector;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class VectorType extends Type<Vector> {
@ -33,17 +34,17 @@ public class VectorType extends Type<Vector> {
@Override
public Vector read(ByteBuf buffer) {
int x = Type.INT.read(buffer);
int y = Type.INT.read(buffer);
int z = Type.INT.read(buffer);
int x = Types.INT.read(buffer);
int y = Types.INT.read(buffer);
int z = Types.INT.read(buffer);
return new Vector(x, y, z);
}
@Override
public void write(ByteBuf buffer, Vector object) {
Type.INT.write(buffer, object.blockX());
Type.INT.write(buffer, object.blockY());
Type.INT.write(buffer, object.blockZ());
Types.INT.write(buffer, object.blockX());
Types.INT.write(buffer, object.blockY());
Types.INT.write(buffer, object.blockZ());
}
}

View File

@ -24,7 +24,7 @@ package com.viaversion.viaversion.api.type.types.metadata;
import com.viaversion.viaversion.api.minecraft.metadata.MetaType;
import com.viaversion.viaversion.api.minecraft.metadata.Metadata;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public abstract class ModernMetaType extends MetaTypeTemplate {
@ -34,7 +34,7 @@ public abstract class ModernMetaType extends MetaTypeTemplate {
public Metadata read(final ByteBuf buffer) {
final short index = buffer.readUnsignedByte();
if (index == END) return null; // End of metadata
final MetaType type = this.getType(Type.VAR_INT.readPrimitive(buffer));
final MetaType type = this.getType(Types.VAR_INT.readPrimitive(buffer));
return new Metadata(index, type, type.type().read(buffer));
}
@ -47,7 +47,7 @@ public abstract class ModernMetaType extends MetaTypeTemplate {
} else {
buffer.writeByte(object.id());
final MetaType type = object.metaType();
Type.VAR_INT.writePrimitive(buffer, type.typeId());
Types.VAR_INT.writePrimitive(buffer, type.typeId());
type.type().write(buffer, object.getValue());
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.nbt.tag.CompoundTag;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import java.io.IOException;
@ -62,7 +63,7 @@ public class CompoundTagType extends Type<CompoundTag> {
public static final class OptionalCompoundTagType extends OptionalType<CompoundTag> {
public OptionalCompoundTagType() {
super(Type.COMPOUND_TAG);
super(Types.COMPOUND_TAG);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.viaversion.api.minecraft.GameProfile;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public final class GameProfileType extends Type<GameProfile> {
@ -34,14 +35,14 @@ public final class GameProfileType extends Type<GameProfile> {
@Override
public GameProfile read(final ByteBuf buffer) {
final String name = Type.OPTIONAL_STRING.read(buffer);
final java.util.UUID id = Type.OPTIONAL_UUID.read(buffer);
final int propertyCount = Type.VAR_INT.readPrimitive(buffer);
final String name = Types.OPTIONAL_STRING.read(buffer);
final java.util.UUID id = Types.OPTIONAL_UUID.read(buffer);
final int propertyCount = Types.VAR_INT.readPrimitive(buffer);
final GameProfile.Property[] properties = new GameProfile.Property[propertyCount];
for (int i = 0; i < propertyCount; i++) {
final String propertyName = Type.STRING.read(buffer);
final String propertyValue = Type.STRING.read(buffer);
final String propertySignature = Type.OPTIONAL_STRING.read(buffer);
final String propertyName = Types.STRING.read(buffer);
final String propertyValue = Types.STRING.read(buffer);
final String propertySignature = Types.OPTIONAL_STRING.read(buffer);
properties[i] = new GameProfile.Property(propertyName, propertyValue, propertySignature);
}
return new GameProfile(name, id, properties);
@ -49,13 +50,13 @@ public final class GameProfileType extends Type<GameProfile> {
@Override
public void write(final ByteBuf buffer, final GameProfile value) {
Type.OPTIONAL_STRING.write(buffer, value.name());
Type.OPTIONAL_UUID.write(buffer, value.id());
Type.VAR_INT.writePrimitive(buffer, value.properties().length);
Types.OPTIONAL_STRING.write(buffer, value.name());
Types.OPTIONAL_UUID.write(buffer, value.id());
Types.VAR_INT.writePrimitive(buffer, value.properties().length);
for (final GameProfile.Property property : value.properties()) {
Type.STRING.write(buffer, property.name());
Type.STRING.write(buffer, property.value());
Type.OPTIONAL_STRING.write(buffer, property.signature());
Types.STRING.write(buffer, property.name());
Types.STRING.write(buffer, property.value());
Types.OPTIONAL_STRING.write(buffer, property.signature());
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.viaversion.api.minecraft.HolderSet;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class HolderSetType extends Type<HolderSet> {
@ -35,15 +36,15 @@ public class HolderSetType extends Type<HolderSet> {
@Override
public HolderSet read(final ByteBuf buffer) {
final int size = Type.VAR_INT.readPrimitive(buffer) - 1;
final int size = Types.VAR_INT.readPrimitive(buffer) - 1;
if (size == -1) {
final String tag = Type.STRING.read(buffer);
final String tag = Types.STRING.read(buffer);
return HolderSet.of(tag);
}
final int[] values = new int[size];
for (int i = 0; i < size; i++) {
values[i] = Type.VAR_INT.readPrimitive(buffer);
values[i] = Types.VAR_INT.readPrimitive(buffer);
}
return HolderSet.of(values);
}
@ -51,13 +52,13 @@ public class HolderSetType extends Type<HolderSet> {
@Override
public void write(final ByteBuf buffer, final HolderSet object) {
if (object.hasTagKey()) {
Type.VAR_INT.writePrimitive(buffer, 0);
Type.STRING.write(buffer, object.tagKey());
Types.VAR_INT.writePrimitive(buffer, 0);
Types.STRING.write(buffer, object.tagKey());
} else {
final int[] values = object.ids();
Type.VAR_INT.writePrimitive(buffer, values.length + 1);
Types.VAR_INT.writePrimitive(buffer, values.length + 1);
for (final int value : values) {
Type.VAR_INT.writePrimitive(buffer, value);
Types.VAR_INT.writePrimitive(buffer, value);
}
}
}
@ -65,7 +66,7 @@ public class HolderSetType extends Type<HolderSet> {
public static final class OptionalHolderSetType extends OptionalType<HolderSet> {
public OptionalHolderSetType() {
super(Type.HOLDER_SET);
super(Types.HOLDER_SET);
}
}
}

View File

@ -24,6 +24,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.viaversion.api.minecraft.Holder;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public abstract class HolderType<T> extends Type<Holder<T>> {
@ -34,7 +35,7 @@ public abstract class HolderType<T> extends Type<Holder<T>> {
@Override
public Holder<T> read(final ByteBuf buffer) {
final int id = Type.VAR_INT.readPrimitive(buffer) - 1; // Normalize id
final int id = Types.VAR_INT.readPrimitive(buffer) - 1; // Normalize id
if (id == -1) {
return Holder.of(readDirect(buffer));
}
@ -44,9 +45,9 @@ public abstract class HolderType<T> extends Type<Holder<T>> {
@Override
public void write(final ByteBuf buffer, final Holder<T> object) {
if (object.hasId()) {
Type.VAR_INT.writePrimitive(buffer, object.id() + 1); // Normalize id
Types.VAR_INT.writePrimitive(buffer, object.id() + 1); // Normalize id
} else {
Type.VAR_INT.writePrimitive(buffer, 0);
Types.VAR_INT.writePrimitive(buffer, 0);
writeDirect(buffer, object.value());
}
}

View File

@ -27,6 +27,7 @@ import com.viaversion.nbt.tag.Tag;
import com.viaversion.nbt.limiter.TagLimiter;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufInputStream;
import io.netty.buffer.ByteBufOutputStream;
@ -94,7 +95,7 @@ public class NamedCompoundTagType extends Type<CompoundTag> {
public static final class OptionalNamedCompoundTagType extends OptionalType<CompoundTag> {
public OptionalNamedCompoundTagType() {
super(Type.NAMED_COMPOUND_TAG);
super(Types.NAMED_COMPOUND_TAG);
}
}
}

View File

@ -28,6 +28,7 @@ import com.viaversion.viaversion.api.minecraft.Particle;
import com.viaversion.viaversion.api.minecraft.item.Item;
import com.viaversion.viaversion.api.protocol.Protocol;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.api.type.types.version.Types1_20_5;
import com.viaversion.viaversion.util.Key;
import io.netty.buffer.ByteBuf;
@ -40,7 +41,7 @@ public class ParticleType extends DynamicType<Particle> {
@Override
public void write(final ByteBuf buffer, final Particle object) {
Type.VAR_INT.writePrimitive(buffer, object.id());
Types.VAR_INT.writePrimitive(buffer, object.id());
for (final Particle.ParticleData<?> data : object.getArguments()) {
data.write(buffer);
}
@ -48,7 +49,7 @@ public class ParticleType extends DynamicType<Particle> {
@Override
public Particle read(final ByteBuf buffer) {
final int type = Type.VAR_INT.readPrimitive(buffer);
final int type = Types.VAR_INT.readPrimitive(buffer);
final Particle particle = new Particle(type);
readData(buffer, particle);
return particle;
@ -66,77 +67,77 @@ public class ParticleType extends DynamicType<Particle> {
public static final class Readers {
public static final DataReader<Particle> BLOCK = (buf, particle) -> {
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Flat Block
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Flat Block
};
public static final DataReader<Particle> ITEM1_13 = itemHandler(Type.ITEM1_13);
public static final DataReader<Particle> ITEM1_13_2 = itemHandler(Type.ITEM1_13_2);
public static final DataReader<Particle> ITEM1_20_2 = itemHandler(Type.ITEM1_20_2);
public static final DataReader<Particle> ITEM1_13 = itemHandler(Types.ITEM1_13);
public static final DataReader<Particle> ITEM1_13_2 = itemHandler(Types.ITEM1_13_2);
public static final DataReader<Particle> ITEM1_20_2 = itemHandler(Types.ITEM1_20_2);
public static final DataReader<Particle> ITEM1_20_5 = itemHandler(Types1_20_5.ITEM);
public static final DataReader<Particle> DUST = (buf, particle) -> {
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Red 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Green 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Blue 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Scale 0.01-4
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Red 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Green 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Blue 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Scale 0.01-4
};
public static final DataReader<Particle> DUST_TRANSITION = (buf, particle) -> {
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Red 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Green 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Blue 0-1
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Scale 0.01-4 (moved to the end as of 24w03a / 1.20.5)
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Red
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Green
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Blue
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Red 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Green 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Blue 0-1
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Scale 0.01-4 (moved to the end as of 24w03a / 1.20.5)
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Red
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Green
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Blue
};
public static final DataReader<Particle> VIBRATION = (buf, particle) -> {
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // From block pos
particle.add(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_14.read(buf)); // From block pos
String resourceLocation = Type.STRING.read(buf);
particle.add(Type.STRING, resourceLocation);
String resourceLocation = Types.STRING.read(buf);
particle.add(Types.STRING, resourceLocation);
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
if (resourceLocation.equals("block")) {
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
particle.add(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_14.read(buf)); // Target block pos
} else if (resourceLocation.equals("entity")) {
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Target entity
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Target entity
} else {
Via.getPlatform().getLogger().warning("Unknown vibration path position source type: " + resourceLocation);
}
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Arrival in ticks
};
public static final DataReader<Particle> VIBRATION1_19 = (buf, particle) -> {
String resourceLocation = Type.STRING.read(buf);
particle.add(Type.STRING, resourceLocation);
String resourceLocation = Types.STRING.read(buf);
particle.add(Types.STRING, resourceLocation);
resourceLocation = Key.stripMinecraftNamespace(resourceLocation);
if (resourceLocation.equals("block")) {
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
particle.add(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_14.read(buf)); // Target block pos
} else if (resourceLocation.equals("entity")) {
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Target entity
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Y offset
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Target entity
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Y offset
} else {
Via.getPlatform().getLogger().warning("Unknown vibration path position source type: " + resourceLocation);
}
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Arrival in ticks
};
public static final DataReader<Particle> VIBRATION1_20_3 = (buf, particle) -> {
final int sourceTypeId = Type.VAR_INT.readPrimitive(buf);
particle.add(Type.VAR_INT, sourceTypeId);
final int sourceTypeId = Types.VAR_INT.readPrimitive(buf);
particle.add(Types.VAR_INT, sourceTypeId);
if (sourceTypeId == 0) { // Block
particle.add(Type.POSITION1_14, Type.POSITION1_14.read(buf)); // Target block pos
particle.add(Types.BLOCK_POSITION1_14, Types.BLOCK_POSITION1_14.read(buf)); // Target block pos
} else if (sourceTypeId == 1) { // Entity
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Target entity
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Y offset
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Target entity
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Y offset
} else {
Via.getPlatform().getLogger().warning("Unknown vibration path position source type: " + sourceTypeId);
}
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Arrival in ticks
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Arrival in ticks
};
public static final DataReader<Particle> SCULK_CHARGE = (buf, particle) -> {
particle.add(Type.FLOAT, Type.FLOAT.readPrimitive(buf)); // Roll
particle.add(Types.FLOAT, Types.FLOAT.readPrimitive(buf)); // Roll
};
public static final DataReader<Particle> SHRIEK = (buf, particle) -> {
particle.add(Type.VAR_INT, Type.VAR_INT.readPrimitive(buf)); // Delay
particle.add(Types.VAR_INT, Types.VAR_INT.readPrimitive(buf)); // Delay
};
public static final DataReader<Particle> COLOR = (buf, particle) -> particle.add(Type.INT, buf.readInt());
public static final DataReader<Particle> COLOR = (buf, particle) -> particle.add(Types.INT, buf.readInt());
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.viaversion.api.minecraft.PlayerMessageSignature;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class PlayerMessageSignatureType extends Type<PlayerMessageSignature> {
@ -35,19 +36,19 @@ public class PlayerMessageSignatureType extends Type<PlayerMessageSignature> {
@Override
public PlayerMessageSignature read(final ByteBuf buffer) {
return new PlayerMessageSignature(Type.UUID.read(buffer), Type.BYTE_ARRAY_PRIMITIVE.read(buffer));
return new PlayerMessageSignature(Types.UUID.read(buffer), Types.BYTE_ARRAY_PRIMITIVE.read(buffer));
}
@Override
public void write(final ByteBuf buffer, final PlayerMessageSignature value) {
Type.UUID.write(buffer, value.uuid());
Type.BYTE_ARRAY_PRIMITIVE.write(buffer, value.signatureBytes());
Types.UUID.write(buffer, value.uuid());
Types.BYTE_ARRAY_PRIMITIVE.write(buffer, value.signatureBytes());
}
public static final class OptionalPlayerMessageSignatureType extends OptionalType<PlayerMessageSignature> {
public OptionalPlayerMessageSignatureType() {
super(Type.PLAYER_MESSAGE_SIGNATURE);
super(Types.PLAYER_MESSAGE_SIGNATURE);
}
}
}

View File

@ -25,6 +25,7 @@ package com.viaversion.viaversion.api.type.types.misc;
import com.viaversion.viaversion.api.minecraft.ProfileKey;
import com.viaversion.viaversion.api.type.OptionalType;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.api.type.Types;
import io.netty.buffer.ByteBuf;
public class ProfileKeyType extends Type<ProfileKey> {
@ -35,20 +36,20 @@ public class ProfileKeyType extends Type<ProfileKey> {
@Override
public ProfileKey read(final ByteBuf buffer) {
return new ProfileKey(buffer.readLong(), Type.BYTE_ARRAY_PRIMITIVE.read(buffer), Type.BYTE_ARRAY_PRIMITIVE.read(buffer));
return new ProfileKey(buffer.readLong(), Types.BYTE_ARRAY_PRIMITIVE.read(buffer), Types.BYTE_ARRAY_PRIMITIVE.read(buffer));
}
@Override
public void write(final ByteBuf buffer, final ProfileKey object) {
buffer.writeLong(object.expiresAt());
Type.BYTE_ARRAY_PRIMITIVE.write(buffer, object.publicKey());
Type.BYTE_ARRAY_PRIMITIVE.write(buffer, object.keySignature());
Types.BYTE_ARRAY_PRIMITIVE.write(buffer, object.publicKey());
Types.BYTE_ARRAY_PRIMITIVE.write(buffer, object.keySignature());
}
public static final class OptionalProfileKeyType extends OptionalType<ProfileKey> {
public OptionalProfileKeyType() {
super(Type.PROFILE_KEY);
super(Types.PROFILE_KEY);
}
}
}

Some files were not shown because too many files have changed in this diff Show More