Rework AEItemStack (#3091)

* Use itemstack as itemdef
* HIGH_TAG/LOW_TAG should be compared both directions
* Remove getTagCompound
* Make Itemlist implementation independent
* Cache item id for performance reasons
* Add preconditions to saveguard against external meddling
* Chache itemDamage
* Remove IAEStackSearchKey for now, rename getDisplayStack
This commit is contained in:
fscan
2017-09-30 17:18:30 +02:00
committed by yueh
parent 2ed7a5598a
commit 1e15b23506
75 changed files with 559 additions and 1512 deletions
+15 -17
View File
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import com.google.common.cache.CacheBuilder;
@@ -63,7 +64,7 @@ public class OreHelper
*
* @return true if an ore entry exists, false otherwise
*/
public OreReference isOre( final ItemStack itemStack )
public Optional<OreReference> getOre( final ItemStack itemStack )
{
final ItemRef ir = new ItemRef( itemStack );
@@ -109,13 +110,13 @@ public class OreHelper
}
}
return this.references.get( ir );
return Optional.ofNullable( this.references.get( ir ) );
}
boolean sameOre( final AEItemStack aeItemStack, final IAEItemStack is )
{
final OreReference a = aeItemStack.getDefinition().getIsOre();
final OreReference b = aeItemStack.getDefinition().getIsOre();
final OreReference a = aeItemStack.getOre().orElse( null );
final OreReference b = aeItemStack.getOre().orElse( null );
return this.sameOre( a, b );
}
@@ -146,24 +147,21 @@ public class OreHelper
boolean sameOre( final AEItemStack aeItemStack, final ItemStack o )
{
final OreReference a = aeItemStack.getDefinition().getIsOre();
if( a == null )
return aeItemStack.getOre().map( a ->
{
return false;
}
for( final String oreName : a.getEquivalents() )
{
for( final ItemStack oreItem : this.oreDictCache.getUnchecked( oreName ) )
for( final String oreName : a.getEquivalents() )
{
if( OreDictionary.itemMatches( oreItem, o, false ) )
for( final ItemStack oreItem : this.oreDictCache.getUnchecked( oreName ) )
{
return true;
if( OreDictionary.itemMatches( oreItem, o, false ) )
{
return true;
}
}
}
}
return false;
return false;
} )
.orElse( false );
}
List<ItemStack> getCachedOres( final String oreName )