Skip to content

Commit

Permalink
Merge pull request #138 from ace10102/1.7.10
Browse files Browse the repository at this point in the history
Fix Gas Registry Lookup Performance
  • Loading branch information
maggi373 authored Jul 20, 2023
2 parents 99d9d5b + b7161d4 commit 6105f04
Showing 1 changed file with 75 additions and 106 deletions.
181 changes: 75 additions & 106 deletions src/main/java/mekanism/api/gas/GasRegistry.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,109 +5,78 @@
import java.util.ArrayList;
import java.util.List;

public class GasRegistry
{
private static ArrayList<Gas> registeredGasses = new ArrayList<Gas>();

/**
* Register a new gas into GasRegistry.
* @param gas - Gas to register
* @return the gas that has been registered, pulled right out of GasRegistry
*/
public static Gas register(Gas gas)
{
if(gas == null)
{
return null;
}

registeredGasses.add(gas);

return getGas(gas.getName());
}

/**
* Gets the gas associated with the defined ID.
* @param id - ID to check
* @return gas associated with defined ID
*/
public static Gas getGas(int id)
{
if(id == -1)
{
return null;
}

return registeredGasses.get(id);
}

/**
* Gets the gas associated with the defined fluid.
* @param f - fluid to check
* @return the gas associated with the fluid
*/
public static Gas getGas(Fluid f)
{
for(Gas gas : getRegisteredGasses())
{
if(gas.hasFluid() && gas.getFluid() == f)
{
return gas;
}
}

return null;
}

/**
* Whether or not GasRegistry contains a gas with the specified name
* @param name - name to check
* @return if GasRegistry contains a gas with the defined name
*/
public static boolean containsGas(String name)
{
return getGas(name) != null;
}

/**
* Gets the list of all gasses registered in GasRegistry.
* @return a cloned list of all registered gasses
*/
public static List<Gas> getRegisteredGasses()
{
return (List<Gas>)registeredGasses.clone();
}

/**
* Gets the gas associated with the specified name.
* @param name - name of the gas to get
* @return gas associated with the name
*/
public static Gas getGas(String name)
{
for(Gas gas : registeredGasses)
{
if(gas.getName().toLowerCase().equals(name.toLowerCase()))
{
return gas;
}
}

return null;
}

/**
* Gets the gas ID of a specified gas.
* @param gas - gas to get the ID from
* @return gas ID
*/
public static int getGasID(Gas gas)
{
if(gas == null || !containsGas(gas.getName()))
{
return -1;
}

return registeredGasses.indexOf(gas);
}
}
public class GasRegistry {
private static ArrayList<Gas> registeredGasses = new ArrayList<Gas>();

/**
* Register a new gas into GasRegistry.
* @param gas - Gas to register
* @return the gas that has been registered, pulled right out of GasRegistry
*/
public static Gas register(Gas gas) {
if (gas == null) {
return null;
}
registeredGasses.add(gas);
return getGas(gas.getName());
}

/**
* Gets the gas associated with the defined ID.
* @param id - ID to check
* @return gas associated with defined ID
*/
public static Gas getGas(int id) {
return id == -1 ? null : registeredGasses.get(id);
}

/**
* Gets the gas associated with the defined fluid.
* @param f - fluid to check
* @return the gas associated with the fluid
*/
public static Gas getGas(Fluid f) {
return registeredGasses.stream()
.filter(gas -> gas.hasFluid() && gas.getFluid() == f)
.findAny()
.orElse(null);
}

/**
* Whether or not GasRegistry contains a gas with the specified name
* @param name - name to check
* @return if GasRegistry contains a gas with the defined name
*/
public static boolean containsGas(String name) {
return getGas(name) != null;
}

/**
* Gets the list of all gasses registered in GasRegistry.
* @return a cloned list of all registered gasses
*/
public static List<Gas> getRegisteredGasses() {
return (List<Gas>)registeredGasses.clone();
}

/**
* Gets the gas associated with the specified name.
* @param name - name of the gas to get
* @return gas associated with the name
*/
public static Gas getGas(String name) {
return registeredGasses.stream()
.filter(gas -> gas.getName().equalsIgnoreCase(name))
.findAny()
.orElse(null);
}

/**
* Gets the gas ID of a specified gas.
* @param gas - gas to get the ID from
* @return gas ID
*/
public static int getGasID(Gas gas) {
return gas == null || !containsGas(gas.getName()) ? -1 : registeredGasses.indexOf(gas);
}
}

0 comments on commit 6105f04

Please sign in to comment.