|  | /** | 
|  | * Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team | 
|  | * http://www.mod-buildcraft.com | 
|  | * | 
|  | * BuildCraft is distributed under the terms of the Minecraft Mod Public | 
|  | * License 1.0, or MMPL. Please check the contents of the license located in | 
|  | * http://www.mod-buildcraft.com/MMPL-1.0.txt | 
|  | */ | 
|  | package buildcraft.api.gates; | 
|  |  | 
|  | import com.google.common.collect.BiMap; | 
|  | import com.google.common.collect.HashBiMap; | 
|  | import java.util.HashMap; | 
|  | import java.util.HashSet; | 
|  | import java.util.Map; | 
|  | import java.util.Set; | 
|  |  | 
|  | public final class GateExpansions { | 
|  |  | 
|  | private static final Map<String, IGateExpansion> expansions = new HashMap<String, IGateExpansion>(); | 
|  | private static final BiMap<Byte, String> serverIDMap = HashBiMap.create(); | 
|  | private static final BiMap<Byte, String> clientIDMap = HashBiMap.create(); | 
|  | private static byte nextID = 0; | 
|  |  | 
|  | private GateExpansions() { | 
|  | } | 
|  |  | 
|  | public static void registerExpansion(IGateExpansion expansion) { | 
|  | registerExpansion(expansion.getUniqueIdentifier(), expansion); | 
|  | } | 
|  |  | 
|  | public static void registerExpansion(String identifier, IGateExpansion expansion) { | 
|  | expansions.put(identifier, expansion); | 
|  | serverIDMap.put(nextID++, identifier); | 
|  | } | 
|  |  | 
|  | public static IGateExpansion getExpansion(String identifier) { | 
|  | return expansions.get(identifier); | 
|  | } | 
|  |  | 
|  | public static IGateExpansion getExpansionClient(int id) { | 
|  | if (id < 0 || id >= 128) | 
|  | return null; | 
|  | return expansions.get(clientIDMap.get((byte) id)); | 
|  | } | 
|  |  | 
|  | public static byte getServerExpansionID(String identifier) { | 
|  | return serverIDMap.inverse().get(identifier); | 
|  | } | 
|  |  | 
|  | public static Set<IGateExpansion> getExpansions() { | 
|  | Set<IGateExpansion> set = new HashSet<IGateExpansion>(); | 
|  | set.addAll(expansions.values()); | 
|  | return set; | 
|  | } | 
|  |  | 
|  | public static BiMap<Byte, String> getServerMap() { | 
|  | return serverIDMap; | 
|  | } | 
|  |  | 
|  | public static void setClientMap(BiMap<Byte, String> map) { | 
|  | clientIDMap.clear(); | 
|  | clientIDMap.putAll(map); | 
|  | } | 
|  | } |