001/* 002 * This file is part of Baritone. 003 * 004 * Baritone is free software: you can redistribute it and/or modify 005 * it under the terms of the GNU Lesser General Public License as published by 006 * the Free Software Foundation, either version 3 of the License, or 007 * (at your option) any later version. 008 * 009 * Baritone is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 012 * GNU Lesser General Public License for more details. 013 * 014 * You should have received a copy of the GNU Lesser General Public License 015 * along with Baritone. If not, see <https://www.gnu.org/licenses/>. 016 */ 017 018package baritone.api.command.datatypes; 019 020import baritone.api.command.exception.CommandException; 021import baritone.api.command.helpers.TabCompleteHelper; 022import java.util.Locale; 023import java.util.stream.Stream; 024import net.minecraft.core.Direction; 025 026public enum ForDirection implements IDatatypeFor<Direction> { 027 INSTANCE; 028 029 @Override 030 public Direction get(IDatatypeContext ctx) throws CommandException { 031 return Direction.valueOf(ctx.getConsumer().getString().toUpperCase(Locale.US)); 032 } 033 034 @Override 035 public Stream<String> tabComplete(IDatatypeContext ctx) throws CommandException { 036 return new TabCompleteHelper() 037 .append(Stream.of(Direction.values()) 038 .map(Direction::getName).map(String::toLowerCase)) 039 .filterPrefix(ctx.getConsumer().getString()) 040 .stream(); 041 } 042}