/*
* This file is part of LanternServer, licensed under the MIT License (MIT).
*
* Copyright (c) LanternPowered <https://www.lanternpowered.org>
* Copyright (c) SpongePowered <https://www.spongepowered.org>
* Copyright (c) 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 org.lanternpowered.server.game.registry.type.data;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeImmutableBoundedValueKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeListKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeMapKeyWithKeyAndValue;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeMutableBoundedValueKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeNextEntityToSpawnKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeOptionalKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makePatternListKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeSetKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeValueKey;
import static org.lanternpowered.server.data.key.LanternKeyFactory.makeWeightedCollectionKey;
import static org.spongepowered.api.data.DataQuery.of;
import com.flowpowered.math.vector.Vector3d;
import org.lanternpowered.server.data.key.LanternKeys;
import org.lanternpowered.server.game.registry.AdditionalPluginCatalogRegistryModule;
import org.spongepowered.api.block.BlockState;
import org.spongepowered.api.block.BlockType;
import org.spongepowered.api.data.key.Key;
import org.spongepowered.api.data.key.Keys;
import org.spongepowered.api.data.meta.ItemEnchantment;
import org.spongepowered.api.data.type.Art;
import org.spongepowered.api.data.type.BigMushroomType;
import org.spongepowered.api.data.type.BodyPart;
import org.spongepowered.api.data.type.BrickType;
import org.spongepowered.api.data.type.Career;
import org.spongepowered.api.data.type.CoalType;
import org.spongepowered.api.data.type.ComparatorType;
import org.spongepowered.api.data.type.CookedFish;
import org.spongepowered.api.data.type.DirtType;
import org.spongepowered.api.data.type.DisguisedBlockType;
import org.spongepowered.api.data.type.DoublePlantType;
import org.spongepowered.api.data.type.DyeColor;
import org.spongepowered.api.data.type.Fish;
import org.spongepowered.api.data.type.GoldenApple;
import org.spongepowered.api.data.type.HandPreference;
import org.spongepowered.api.data.type.Hinge;
import org.spongepowered.api.data.type.HorseColor;
import org.spongepowered.api.data.type.HorseStyle;
import org.spongepowered.api.data.type.HorseVariant;
import org.spongepowered.api.data.type.LlamaVariant;
import org.spongepowered.api.data.type.LogAxis;
import org.spongepowered.api.data.type.NotePitch;
import org.spongepowered.api.data.type.OcelotType;
import org.spongepowered.api.data.type.PickupRule;
import org.spongepowered.api.data.type.PistonType;
import org.spongepowered.api.data.type.PlantType;
import org.spongepowered.api.data.type.PortionType;
import org.spongepowered.api.data.type.PrismarineType;
import org.spongepowered.api.data.type.Profession;
import org.spongepowered.api.data.type.QuartzType;
import org.spongepowered.api.data.type.RabbitType;
import org.spongepowered.api.data.type.RailDirection;
import org.spongepowered.api.data.type.SandType;
import org.spongepowered.api.data.type.SandstoneType;
import org.spongepowered.api.data.type.ShrubType;
import org.spongepowered.api.data.type.SkeletonType;
import org.spongepowered.api.data.type.SkullType;
import org.spongepowered.api.data.type.SlabType;
import org.spongepowered.api.data.type.StairShape;
import org.spongepowered.api.data.type.StoneType;
import org.spongepowered.api.data.type.TreeType;
import org.spongepowered.api.data.type.WallType;
import org.spongepowered.api.data.type.WireAttachmentType;
import org.spongepowered.api.data.type.ZombieType;
import org.spongepowered.api.effect.potion.PotionEffect;
import org.spongepowered.api.effect.potion.PotionEffectType;
import org.spongepowered.api.entity.EntitySnapshot;
import org.spongepowered.api.entity.EntityType;
import org.spongepowered.api.entity.living.Living;
import org.spongepowered.api.entity.living.player.gamemode.GameMode;
import org.spongepowered.api.extra.fluid.FluidStackSnapshot;
import org.spongepowered.api.item.FireworkEffect;
import org.spongepowered.api.item.inventory.ItemStackSnapshot;
import org.spongepowered.api.item.merchant.TradeOffer;
import org.spongepowered.api.profile.GameProfile;
import org.spongepowered.api.statistic.Statistic;
import org.spongepowered.api.statistic.achievement.Achievement;
import org.spongepowered.api.text.Text;
import org.spongepowered.api.util.Axis;
import org.spongepowered.api.util.Color;
import org.spongepowered.api.util.Direction;
import org.spongepowered.api.util.RespawnLocation;
import org.spongepowered.api.util.rotation.Rotation;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.time.Instant;
import java.util.List;
import java.util.UUID;
public final class KeyRegistryModule extends AdditionalPluginCatalogRegistryModule<Key> {
public static KeyRegistryModule get() {
return Holder.INSTANCE;
}
private KeyRegistryModule() {
super(Keys.class);
}
@Override
public void registerDefaults() {
register(makeSetKey(Achievement.class, of("Achievements"), "sponge:achievements"));
register(makeValueKey(Boolean.class, of("AffectsSpawning"), "sponge:affects_spawning"));
register(makeMutableBoundedValueKey(Integer.class, of("Age"), "sponge:age"));
register(makeValueKey(Boolean.class, of("AIEnabled"), "sponge:ai_enabled"));
register(makeMutableBoundedValueKey(Integer.class, of("Anger"), "sponge:anger"));
register(makeValueKey(Boolean.class, of("ArmorStandHasArms"), "sponge:armor_stand_has_arms"));
register(makeValueKey(Boolean.class, of("ArmorStandHasBasePlate"), "sponge:armor_stand_has_base_plate"));
register(makeValueKey(Boolean.class, of("ArmorStandIsSmall"), "sponge:armor_stand_is_small"));
register(makeValueKey(Boolean.class, of("ArmorStandMarker"), "sponge:armor_stand_marker"));
register(makeValueKey(Boolean.class, of("Angry"), "sponge:angry"));
register(makeValueKey(Art.class, of("Art"), "sponge:art"));
register(makeValueKey(Boolean.class, of("Attached"), "sponge:attached"));
register(makeMutableBoundedValueKey(Double.class, of("AttackDamage"), "sponge:attack_damage"));
register(makeValueKey(Axis.class, of("Axis"), "sponge:axis"));
register(makeValueKey(DyeColor.class, of("BannerBaseColor"), "sponge:banner_base_color"));
register(makePatternListKey(of("BannerPatterns"), "sponge:banner_patterns"));
register(makeMutableBoundedValueKey(Float.class, of("BaseSize"), "sponge:base_size"));
register(makeValueKey(EntitySnapshot.class, of("BaseVehicle"), "sponge:base_vehicle"));
register(makeOptionalKey(PotionEffectType.class, of("BeaconPrimaryEffect"), "sponge:beacon_primary_effect"));
register(makeOptionalKey(PotionEffectType.class, of("BeaconSecondaryEffect"), "sponge:beacon_secondary_effect"));
register(makeValueKey(BigMushroomType.class, of("BigMushroomType"), "sponge:big_mushroom_type"));
register(makeMapKeyWithKeyAndValue(BodyPart.class, Vector3d.class, of("BodyRotations"), "sponge:body_rotations"));
register(makeValueKey(Text.class, of("BookAuthor"), "sponge:book_author"));
register(makeListKey(Text.class, of("BookPages"), "sponge:book_pages"));
register(makeSetKey(BlockType.class, of("BreakableBlockTypes"), "sponge:breakable_block_types"));
register(makeValueKey(BrickType.class, of("BrickType"), "sponge:brick_type"));
register(makeValueKey(Boolean.class, of("CanBreed"), "sponge:can_breed"));
register(makeValueKey(Boolean.class, of("CanDropAsItem"), "sponge:can_drop_as_item"));
register(makeValueKey(Boolean.class, of("CanFly"), "sponge:can_fly"));
register(makeValueKey(Boolean.class, of("CanGrief"), "sponge:can_grief"));
register(makeValueKey(Boolean.class, of("CanPlaceAsBlock"), "sponge:can_place_as_block"));
register(makeValueKey(Career.class, of("Career"), "sponge:career"));
register(makeValueKey(Vector3d.class, of("ChestRotation"), "sponge:chest_rotation"));
register(makeValueKey(CoalType.class, of("CoalType"), "sponge:coal_type"));
register(makeValueKey(Color.class, of("Color"), "sponge:color"));
register(makeValueKey(String.class, of("Command"), "sponge:command"));
register(makeValueKey(ComparatorType.class, of("ComparatorType"), "sponge:comparator_type"));
register(makeSetKey(Direction.class, of("ConnectedDirections"), "sponge:connected_directions"));
register(makeValueKey(Boolean.class, of("ConnectedEast"), "sponge:connected_east"));
register(makeValueKey(Boolean.class, of("ConnectedNorth"), "sponge:connected_north"));
register(makeValueKey(Boolean.class, of("ConnectedSouth"), "sponge:connected_south"));
register(makeValueKey(Boolean.class, of("ConnectedWest"), "sponge:connected_west"));
register(makeMutableBoundedValueKey(Integer.class, of("ContainedExperience"), "sponge:contained_experience"));
register(makeValueKey(CookedFish.class, of("CookedFish"), "sponge:cooked_fish"));
register(makeMutableBoundedValueKey(Integer.class, of("Cooldown"), "sponge:cooldown"));
register(makeValueKey(Boolean.class, of("CreeperCharged"), "sponge:creeper_charged"));
register(makeValueKey(Boolean.class, of("CriticalHit"), "sponge:critical_hit"));
register(makeValueKey(Boolean.class, of("CustomNameVisible"), "sponge:custom_name_visible"));
register(makeMapKeyWithKeyAndValue(EntityType.class, Double.class, of("EntityDamageMap"), "sponge:damage_entity_map"));
register(makeValueKey(Boolean.class, of("Decayable"), "sponge:decayable"));
register(makeMutableBoundedValueKey(Integer.class, of("Delay"), "sponge:delay"));
register(makeMutableBoundedValueKey(Integer.class, of("DespawnDelay"), "sponge:despawn_delay"));
register(makeValueKey(Direction.class, of("Direction"), "sponge:direction"));
register(makeValueKey(DirtType.class, of("DirtType"), "sponge:dirt_type"));
register(makeValueKey(Boolean.class, of("Disarmed"), "sponge:disarmed"));
register(makeValueKey(DisguisedBlockType.class, of("DisguisedBlockType"), "sponge:disguised_block_type"));
register(makeValueKey(Text.class, of("DisplayName"), "sponge:display_name"));
register(makeValueKey(HandPreference.class, of("DominantHand"), "sponge:dominant_hand"));
register(makeValueKey(DoublePlantType.class, of("DoublePlantType"), "sponge:double_plant_type"));
register(makeValueKey(DyeColor.class, of("DyeColor"), "sponge:dye_color"));
register(makeValueKey(Boolean.class, of("ElderGuardian"), "sponge:elder_guardian"));
register(makeMutableBoundedValueKey(Double.class, of("Exhaustion"), "sponge:exhaustion"));
register(makeImmutableBoundedValueKey(Integer.class, of("ExperienceFromStartOfLevel"), "sponge:experience_from_start_of_level"));
register(makeMutableBoundedValueKey(Integer.class, of("ExperienceLevel"), "sponge:experience_level"));
register(makeMutableBoundedValueKey(Integer.class, of("ExperienceSinceLevel"), "sponge:experience_since_level"));
register(makeMutableBoundedValueKey(Integer.class, of("ExpirationTicks"), "sponge:expiration_ticks"));
register(makeOptionalKey(Integer.class, of("ExplosionRadius"), "sponge:explosion_radius"));
register(makeValueKey(Boolean.class, of("Extended"), "sponge:extended"));
register(makeValueKey(Boolean.class, of("FallingBlockCanHurtEntities"), "sponge:falling_block_can_hurt_entities"));
register(makeValueKey(BlockState.class, of("FallingBlockState"), "sponge:falling_block_state"));
register(makeMutableBoundedValueKey(Double.class, of("FallDamagePerBlock"), "sponge:fall_damage_per_block"));
register(makeMutableBoundedValueKey(Float.class, of("FallDistance"), "sponge:fall_distance"));
register(makeValueKey(Integer.class, of("FallTime"), "sponge:fall_time"));
register(makeValueKey(Boolean.class, of("Filled"), "sponge:filled"));
register(makeListKey(FireworkEffect.class, of("FireworkEffects"), "sponge:firework_effects"));
register(makeMutableBoundedValueKey(Integer.class, of("FireworkFlightModifier"), "sponge:firework_flight_modifier"));
register(makeMutableBoundedValueKey(Integer.class, of("FireDamageDelay"), "sponge:fire_damage_delay"));
register(makeMutableBoundedValueKey(Integer.class, of("FireTicks"), "sponge:fire_ticks"));
register(makeValueKey(Instant.class, of("FirstDatePlayed"), "sponge:first_date_played"));
register(makeValueKey(Fish.class, of("FishType"), "sponge:fish_type"));
register(makeValueKey(FluidStackSnapshot.class, of("FluidItemStack"), "sponge:fluid_item_stack"));
register(makeMutableBoundedValueKey(Integer.class, of("FluidLevel"), "sponge:fluid_level"));
register(makeMapKeyWithKeyAndValue(Direction.class, List.class, of("FluidTankContents"), "sponge:fluid_tank_contents"));
register(makeValueKey(Double.class, of("FlyingSpeed"), "sponge:flying_speed"));
register(makeMutableBoundedValueKey(Integer.class, of("FoodLevel"), "sponge:food_level"));
register(makeValueKey(Integer.class, of("FuseDuration"), "sponge:fuse_duration"));
register(makeValueKey(GameMode.class, of("GameMode"), "sponge:game_mode"));
register(makeMutableBoundedValueKey(Integer.class, of("Generation"), "sponge:generation"));
register(makeValueKey(Boolean.class, of("Glowing"), "sponge:glowing"));
register(makeValueKey(GoldenApple.class, of("GoldenAppleType"), "sponge:golden_apple_type"));
register(makeMutableBoundedValueKey(Integer.class, of("GrowthStage"), "sponge:growth_stage"));
register(makeValueKey(Boolean.class, of("HasGravity"), "sponge:has_gravity"));
register(makeValueKey(Vector3d.class, of("HeadRotation"), "sponge:head_rotation"));
register(makeMutableBoundedValueKey(Double.class, of("Health"), "sponge:health"));
register(makeMutableBoundedValueKey(Double.class, of("HealthScale"), "sponge:health_scale"));
register(makeMutableBoundedValueKey(Float.class, of("Height"), "sponge:height"));
register(makeMutableBoundedValueKey(Integer.class, of("HeldExperience"), "sponge:held_experience"));
register(makeValueKey(Boolean.class, of("HideAttributes"), "sponge:hide_attributes"));
register(makeValueKey(Boolean.class, of("HideCanDestroy"), "sponge:hide_can_destroy"));
register(makeValueKey(Boolean.class, of("HideCanPlace"), "sponge:hide_can_place"));
register(makeValueKey(Boolean.class, of("HideEnchantments"), "sponge:hide_enchantments"));
register(makeValueKey(Boolean.class, of("HideMiscellaneous"), "sponge:hide_miscellaneous"));
register(makeValueKey(Boolean.class, of("HideUnbreakable"), "sponge:hide_unbreakable"));
register(makeValueKey(Hinge.class, of("HingePosition"), "sponge:hinge_position"));
register(makeValueKey(HorseColor.class, of("HorseColor"), "sponge:horse_color"));
register(makeValueKey(HorseStyle.class, of("HorseStyle"), "sponge:horse_style"));
register(makeValueKey(HorseVariant.class, of("HorseVariant"), "sponge:horse_variant"));
register(makeValueKey(Boolean.class, of("InfiniteDespawnDelay"), "sponge:infinite_despawn_delay"));
register(makeValueKey(Boolean.class, of("InfinitePickupDelay"), "sponge:infinite_pickup_delay"));
register(makeValueKey(Boolean.class, of("InvisibilityIgnoresCollision"), "sponge:invisibility_ignores_collision"));
register(makeValueKey(Boolean.class, of("InvisibilityPreventsTargeting"), "sponge:invisibility_prevents_targeting"));
register(makeValueKey(Boolean.class, of("Invisible"), "sponge:invisible"));
register(makeMutableBoundedValueKey(Integer.class, of("InvulnerabilityTicks"), "sponge:invulnerability_ticks"));
register(makeValueKey(Boolean.class, of("InWall"), "sponge:in_wall"));
register(makeValueKey(Boolean.class, of("IsAflame"), "sponge:is_aflame"));
register(makeValueKey(Boolean.class, of("IsFlying"), "sponge:is_flying"));
register(makeValueKey(Boolean.class, of("IsPlaying"), "sponge:is_playing"));
register(makeValueKey(Boolean.class, of("IsScreaming"), "sponge:is_screaming"));
register(makeValueKey(Boolean.class, of("IsSheared"), "sponge:is_sheared"));
register(makeValueKey(Boolean.class, of("IsSilent"), "sponge:is_silent"));
register(makeValueKey(Boolean.class, of("IsSitting"), "sponge:is_sitting"));
register(makeValueKey(Boolean.class, of("IsSleeping"), "sponge:is_sleeping"));
register(makeValueKey(Boolean.class, of("IsSneaking"), "sponge:is_sneaking"));
register(makeValueKey(Boolean.class, of("IsSprinting"), "sponge:is_sprinting"));
register(makeValueKey(Boolean.class, of("IsWet"), "sponge:is_wet"));
register(makeValueKey(BlockState.class, of("ItemBlockState"), "sponge:item_blockstate"));
register(makeMutableBoundedValueKey(Integer.class, of("ItemDurability"), "sponge:item_durability"));
register(makeListKey(ItemEnchantment.class, of("ItemEnchantments"), "sponge:item_enchantments"));
register(makeListKey(Text.class, of("ItemLore"), "sponge:item_lore"));
register(makeValueKey(Boolean.class, of("JohnnyVindicator"), "sponge:johnny_vindicator"));
register(makeMutableBoundedValueKey(Integer.class, of("KnockbackStrength"), "sponge:knockback_strength"));
register(makeOptionalKey(Living.class, of("LastAttacker"), "sponge:last_attacker"));
register(makeOptionalKey(Text.class, of("LastCommandOutput"), "sponge:last_command_output"));
register(makeOptionalKey(Double.class, of("LastDamage"), "sponge:last_damage"));
register(makeValueKey(Instant.class, of("LastDatePlayed"), "sponge:last_date_played"));
register(makeValueKey(Integer.class, of("Layer"), "sponge:layer"));
register(makeValueKey(EntitySnapshot.class, of("LeashHolder"), "sponge:leash_holder"));
register(makeValueKey(Vector3d.class, of("LeftArmRotation"), "sponge:left_arm_rotation"));
register(makeValueKey(Vector3d.class, of("LeftLegRotation"), "sponge:left_leg_rotation"));
register(makeMutableBoundedValueKey(Integer.class, of("LlamaStrength"), "sponge:llama_strength"));
register(makeValueKey(LlamaVariant.class, of("LlamaVariant"), "sponge:llama_variant"));
register(makeValueKey(String.class, of("LockToken"), "sponge:lock_token"));
register(makeValueKey(LogAxis.class, of("LogAxis"), "sponge:log_axis"));
register(makeMutableBoundedValueKey(Integer.class, of("MaxAir"), "sponge:max_air"));
register(makeMutableBoundedValueKey(Integer.class, of("MaxBurnTime"), "sponge:max_burn_time"));
register(makeMutableBoundedValueKey(Integer.class, of("MaxCookTime"), "sponge:max_cook_time"));
register(makeMutableBoundedValueKey(Double.class, of("MaxFallDamage"), "sponge:max_fall_damage"));
register(makeMutableBoundedValueKey(Double.class, of("MaxHealth"), "sponge:max_health"));
register(makeMutableBoundedValueKey(Integer.class, of("Moisture"), "sponge:moisture"));
register(makeValueKey(NotePitch.class, of("NotePitch"), "sponge:note_pitch"));
register(makeValueKey(Boolean.class, of("Occupied"), "sponge:occupied"));
register(makeValueKey(OcelotType.class, of("OcelotType"), "sponge:ocelot_type"));
register(makeValueKey(Integer.class, of("Offset"), "sponge:offset"));
register(makeValueKey(Boolean.class, of("Open"), "sponge:open"));
register(makeMutableBoundedValueKey(Integer.class, of("PassedBurnTime"), "sponge:passed_burn_time"));
register(makeMutableBoundedValueKey(Integer.class, of("PassedCookTime"), "sponge:passed_cook_time"));
register(makeListKey(EntitySnapshot.class, of("Passengers"), "sponge:passengers"));
register(makeValueKey(Boolean.class, of("Persists"), "sponge:persists"));
register(makeMutableBoundedValueKey(Integer.class, of("PickupDelay"), "sponge:pickup_delay"));
register(makeValueKey(PickupRule.class, of("PickupRule"), "sponge:pickup_rule"));
register(makeValueKey(Boolean.class, of("PigSaddle"), "sponge:pig_saddle"));
register(makeValueKey(PistonType.class, of("PistonType"), "sponge:piston_type"));
register(makeSetKey(BlockType.class, of("PlaceableBlocks"), "sponge:placeable_blocks"));
register(makeValueKey(PlantType.class, of("PlantType"), "sponge:plant_type"));
register(makeValueKey(Boolean.class, of("PlayerCreated"), "sponge:player_created"));
register(makeValueKey(PortionType.class, of("PortionType"), "sponge:portion_type"));
register(makeListKey(PotionEffect.class, of("PotionEffects"), "sponge:potion_effects"));
register(makeValueKey(Integer.class, of("Power"), "sponge:power"));
register(makeValueKey(Boolean.class, of("Powered"), "sponge:powered"));
register(makeValueKey(PrismarineType.class, of("PrismarineType"), "sponge:prismarine_type"));
register(makeValueKey(QuartzType.class, of("QuartzType"), "sponge:quartz_type"));
register(makeValueKey(RabbitType.class, of("RabbitType"), "sponge:rabbit_type"));
register(makeValueKey(RailDirection.class, of("RailDirection"), "sponge:rail_direction"));
register(makeMutableBoundedValueKey(Integer.class, of("RemainingAir"), "sponge:remaining_air"));
register(makeMutableBoundedValueKey(Integer.class, of("RemainingBrewTime"), "sponge:remaining_brew_time"));
register(makeValueKey(BlockState.class, of("RepresentedBlock"), "sponge:represented_block"));
register(makeValueKey(ItemStackSnapshot.class, of("RepresentedItem"), "sponge:represented_item"));
register(makeValueKey(GameProfile.class, of("RepresentedPlayer"), "sponge:represented_player"));
register(makeMapKeyWithKeyAndValue(UUID.class, RespawnLocation.class, of("RespawnLocations"), "sponge:respawn_locations"));
register(makeValueKey(Vector3d.class, of("RightArmRotation"), "sponge:right_arm_rotation"));
register(makeValueKey(Vector3d.class, of("RightLegRotation"), "sponge:right_leg_rotation"));
register(makeValueKey(Rotation.class, of("Rotation"), "sponge:rotation"));
register(makeValueKey(SandstoneType.class, of("SandstoneType"), "sponge:sandstone_type"));
register(makeValueKey(SandType.class, of("SandType"), "sponge:sand_type"));
register(makeMutableBoundedValueKey(Double.class, of("Saturation"), "sponge:saturation"));
register(makeMutableBoundedValueKey(Float.class, of("Scale"), "sponge:scale"));
register(makeValueKey(Boolean.class, of("Seamless"), "sponge:seamless"));
register(makeValueKey(Boolean.class, of("ShouldDrop"), "sponge:should_drop"));
register(makeValueKey(ShrubType.class, of("ShrubType"), "sponge:shrub_type"));
register(makeListKey(Text.class, of("SignLines"), "sponge:sign_lines"));
register(makeValueKey(SkeletonType.class, of("SkeletonType"), "sponge:skeleton_type"));
register(makeValueKey(UUID.class, of("SkinUniqueId"), "sponge:skin_unique_id"));
register(makeValueKey(SkullType.class, of("SkullType"), "sponge:skull_type"));
register(makeValueKey(SlabType.class, of("SlabType"), "sponge:slab_type"));
register(makeMutableBoundedValueKey(Integer.class, of("SlimeSize"), "sponge:slime_size"));
register(makeValueKey(Boolean.class, of("Snowed"), "sponge:snowed"));
register(makeValueKey(EntityType.class, of("SpawnableEntityType"), "sponge:spawnable_entity_type"));
register(makeWeightedCollectionKey(EntitySnapshot.class, of("SpawnerEntities"), "sponge:spawner_entities"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerMaximumDelay"), "sponge:spawner_maximum_delay"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerMaximumNearbyEntities"), "sponge:spawner_maximum_nearby_entities"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerMinimumDelay"), "sponge:spawner_minimum_delay"));
register(makeNextEntityToSpawnKey(of("SpawnerNextEntityToSpawn"), "sponge:spawner_next_entity_to_spawn"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerRemainingDelay"), "sponge:spawner_remaining_delay"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerRequiredPlayerRange"), "sponge:spawner_required_player_range"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerSpawnCount"), "sponge:spawner_spawn_count"));
register(makeMutableBoundedValueKey(Short.class, of("SpawnerSpawnRange"), "sponge:spawner_spawn_range"));
register(makeValueKey(StairShape.class, of("StairShape"), "sponge:stair_shape"));
register(makeMapKeyWithKeyAndValue(Statistic.class, Long.class, of("Statistics"), "sponge:statistics"));
register(makeValueKey(StoneType.class, of("StoneType"), "sponge:stone_type"));
register(makeListKey(ItemEnchantment.class, of("StoredEnchantments"), "sponge:stored_enchantments"));
register(makeMutableBoundedValueKey(Integer.class, of("StuckArrows"), "sponge:stuck_arrows"));
register(makeMutableBoundedValueKey(Integer.class, of("SuccessCount"), "sponge:success_count"));
register(makeValueKey(Boolean.class, of("Suspended"), "sponge:suspended"));
register(makeOptionalKey(UUID.class, of("TamedOwner"), "sponge:tamed_owner"));
register(makeValueKey(Vector3d.class, of("TargetedLocation"), "sponge:targeted_location"));
register(makeValueKey(Integer.class, of("TicksRemaining"), "sponge:ticks_remaining"));
register(makeMutableBoundedValueKey(Integer.class, of("TotalExperience"), "sponge:total_experience"));
register(makeValueKey(Boolean.class, of("TracksOutput"), "sponge:tracks_output"));
register(makeListKey(TradeOffer.class, of("TradeOffers"), "sponge:trade_offers"));
register(makeValueKey(TreeType.class, of("TreeType"), "sponge:tree_type"));
register(makeValueKey(Boolean.class, of("Unbreakable"), "sponge:unbreakable"));
register(makeValueKey(Boolean.class, of("Vanish"), "sponge:vanish"));
register(makeValueKey(Boolean.class, of("VanishIgnoresCollision"), "sponge:vanish_ignores_collision"));
register(makeValueKey(Boolean.class, of("VanishPreventsTargeting"), "sponge:vanish_prevents_targeting"));
register(makeValueKey(EntitySnapshot.class, of("Vehicle"), "sponge:vehicle"));
register(makeValueKey(Vector3d.class, of("Velocity"), "sponge:velocity"));
register(makeOptionalKey(Profession.class, of("VillagerZombieProfession"), "sponge:villager_zombie_profession"));
register(makeValueKey(Double.class, of("WalkingSpeed"), "sponge:walking_speed"));
register(makeValueKey(WallType.class, of("WallType"), "sponge:wall_type"));
register(makeValueKey(Boolean.class, of("WillShatter"), "sponge:will_shatter"));
register(makeMapKeyWithKeyAndValue(Direction.class, WireAttachmentType.class, of("WireAttachments"), "sponge:wire_attachments"));
register(makeValueKey(WireAttachmentType.class, of("WireAttachmentEast"), "sponge:wire_attachment_east"));
register(makeValueKey(WireAttachmentType.class, of("WireAttachmentNorth"), "sponge:wire_attachment_north"));
register(makeValueKey(WireAttachmentType.class, of("WireAttachmentSouth"), "sponge:wire_attachment_south"));
register(makeValueKey(WireAttachmentType.class, of("WireAttachmentWest"), "sponge:wire_attachment_west"));
register(makeValueKey(ZombieType.class, of("ZombieType"), "sponge:zombie_type"));
// Register the lantern keys
for (Field field : LanternKeys.class.getFields()) {
if (Modifier.isStatic(field.getModifiers())) {
final Object object;
try {
object = field.get(null);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
if (object instanceof Key) {
register((Key) object);
}
}
}
}
private final static class Holder {
private static final KeyRegistryModule INSTANCE = new KeyRegistryModule();
}
}