/* * 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.block.trait; import org.lanternpowered.server.data.type.LanternBedPart; import org.lanternpowered.server.data.type.LanternDirtType; import org.lanternpowered.server.data.type.LanternDyeColor; import org.lanternpowered.server.data.type.LanternLogAxis; import org.lanternpowered.server.data.type.LanternPlantType; import org.lanternpowered.server.data.type.LanternPortionType; import org.lanternpowered.server.data.type.LanternQuartzType; import org.lanternpowered.server.data.type.LanternRailDirection; import org.lanternpowered.server.data.type.LanternSandType; import org.lanternpowered.server.data.type.LanternSandstoneType; import org.lanternpowered.server.data.type.LanternShrubType; import org.lanternpowered.server.data.type.LanternSlabType; import org.lanternpowered.server.data.type.LanternStoneType; import org.lanternpowered.server.data.type.LanternTreeType; import org.spongepowered.api.block.trait.EnumTrait; import org.spongepowered.api.data.key.Key; import org.spongepowered.api.data.key.Keys; import org.spongepowered.api.util.Direction; @SuppressWarnings("unchecked") public final class LanternEnumTraits { public static final EnumTrait<LanternLogAxis> LOG_AXIS = LanternEnumTrait.of("axis", (Key) Keys.LOG_AXIS, LanternLogAxis.class); public static final EnumTrait<LanternTreeType> LOG1_TYPE = LanternEnumTrait.of("variant", (Key) Keys.TREE_TYPE, LanternTreeType.OAK, LanternTreeType.SPRUCE, LanternTreeType.BIRCH, LanternTreeType.JUNGLE); public static final EnumTrait<LanternTreeType> LOG2_TYPE = LanternEnumTrait.of("variant", (Key) Keys.TREE_TYPE, LanternTreeType.ACACIA, LanternTreeType.DARK_OAK); public static final EnumTrait<LanternTreeType> LEAVES1_TYPE = LanternEnumTrait.of("variant", (Key) Keys.TREE_TYPE, LanternTreeType.OAK, LanternTreeType.SPRUCE, LanternTreeType.BIRCH, LanternTreeType.JUNGLE); public static final EnumTrait<LanternTreeType> LEAVES2_TYPE = LanternEnumTrait.of("variant", (Key) Keys.TREE_TYPE, LanternTreeType.ACACIA, LanternTreeType.DARK_OAK); public static final EnumTrait<LanternStoneType> STONE_TYPE = LanternEnumTrait.of("variant", (Key) Keys.STONE_TYPE, LanternStoneType.class); public static final EnumTrait<LanternDirtType> DIRT_TYPE = LanternEnumTrait.of("variant", (Key) Keys.DIRT_TYPE, LanternDirtType.class); public static final EnumTrait<LanternTreeType> TREE_TYPE = LanternEnumTrait.of("variant", (Key) Keys.TREE_TYPE, LanternTreeType.class); public static final EnumTrait<LanternSandType> SAND_TYPE = LanternEnumTrait.of("variant", (Key) Keys.SAND_TYPE, LanternSandType.class); public static final EnumTrait<LanternSandstoneType> SANDSTONE_TYPE = LanternEnumTrait.of("type", (Key) Keys.SANDSTONE_TYPE, LanternSandstoneType.class); public static final EnumTrait<LanternQuartzType> QUARTZ_TYPE = LanternEnumTrait.of("variant", (Key) Keys.QUARTZ_TYPE, LanternQuartzType.class); public static final EnumTrait<LanternBedPart> BED_PART = LanternEnumTrait.of("type", (Key) Keys.SANDSTONE_TYPE, LanternBedPart.class); public static final EnumTrait<Direction> HORIZONTAL_FACING = LanternEnumTrait.of("facing", (Key) Keys.DIRECTION, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.EAST); public static final EnumTrait<Direction> FACING = LanternEnumTrait.of("facing", (Key) Keys.DIRECTION, Direction.DOWN, Direction.UP, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.EAST); public static final EnumTrait<LanternPortionType> PORTION_TYPE = LanternEnumTrait.of("half", (Key) Keys.PORTION_TYPE, LanternPortionType.class); public static final EnumTrait<LanternSlabType> STONE_SLAB1_TYPE = LanternEnumTrait.of("variant", (Key) Keys.SLAB_TYPE, LanternSlabType.class, type -> type.ordinal() >= 0 && type.ordinal() < 8); public static final EnumTrait<LanternSlabType> STONE_SLAB2_TYPE = LanternEnumTrait.of("variant", (Key) Keys.SLAB_TYPE, LanternSlabType.class, type -> type.ordinal() >= 8 && type.ordinal() < 16); public static final EnumTrait<Direction> HOPPER_FACING = LanternEnumTrait.of("variant", (Key) Keys.DIRECTION, Direction.DOWN, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.EAST); public static final EnumTrait<LanternDyeColor> DYE_COLOR = LanternEnumTrait.of("variant", (Key) Keys.DYE_COLOR, LanternDyeColor.class); public static final EnumTrait<LanternRailDirection> STRAIGHT_RAIL_DIRECTION = LanternEnumTrait.of("shape", (Key) Keys.RAIL_DIRECTION, LanternRailDirection.class, type -> type != LanternRailDirection.NORTH_EAST && type != LanternRailDirection.NORTH_WEST && type != LanternRailDirection.SOUTH_EAST && type != LanternRailDirection.SOUTH_WEST); public static final EnumTrait<LanternRailDirection> RAIL_DIRECTION = LanternEnumTrait.of("shape", (Key) Keys.RAIL_DIRECTION, LanternRailDirection.class); public static final EnumTrait<LanternShrubType> SHRUB_TYPE = LanternEnumTrait.of("type", (Key) Keys.SHRUB_TYPE, LanternShrubType.class); public static final EnumTrait<LanternPlantType> YELLOW_FLOWER_TYPE = LanternEnumTrait.of("type", (Key) Keys.PLANT_TYPE, LanternPlantType.class, type -> type.getInternalId() < 16); public static final EnumTrait<LanternPlantType> RED_FLOWER_TYPE = LanternEnumTrait.of("type", (Key) Keys.PLANT_TYPE, LanternPlantType.class, type -> type.getInternalId() >= 16); public static final EnumTrait<Direction> TORCH_FACING = LanternEnumTrait.of("facing", (Key) Keys.DIRECTION, Direction.SOUTH, Direction.WEST, Direction.NORTH, Direction.EAST, Direction.UP); private LanternEnumTraits() { } }