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.utils;
019
020import java.util.Objects;
021
022/**
023 * @author Brady
024 */
025public final class Pair<A, B> {
026
027    private final A a;
028    private final B b;
029
030    public Pair(A a, B b) {
031        this.a = a;
032        this.b = b;
033    }
034
035    public A first() {
036        return this.a;
037    }
038
039    public B second() {
040        return this.b;
041    }
042
043    @Override
044    public boolean equals(Object o) {
045        if (this == o) {
046            return true;
047        }
048        if (o == null || o.getClass() != Pair.class) {
049            return false;
050        }
051        Pair<?, ?> pair = (Pair<?, ?>) o;
052        return Objects.equals(this.a, pair.a) && Objects.equals(this.b, pair.b);
053    }
054
055    @Override
056    public int hashCode() {
057        return 31 * Objects.hashCode(this.a) + Objects.hashCode(this.b);
058    }
059}