Fixes API compilation problem.

This commit is contained in:
Sebastian Hartte 2016-09-13 19:58:38 +02:00
parent 11625ea240
commit 9c561d550b
5 changed files with 67 additions and 72 deletions

View file

@ -24,38 +24,32 @@
package appeng.api.util; package appeng.api.util;
import net.minecraft.util.ResourceLocation;
import appeng.client.render.cablebus.CableCoreType;
import appeng.core.AppEng;
public enum AECableType public enum AECableType
{ {
/** /**
* No Cable present. * No Cable present.
*/ */
NONE( null, 0, null, null ), NONE,
/** /**
* Connections to this block should render as glass. * Connections to this block should render as glass.
*/ */
GLASS( "glass", 0, CableCoreType.GLASS, "parts/cable/glass/" ), GLASS,
/** /**
* Connections to this block should render as covered. * Connections to this block should render as covered.
*/ */
COVERED( "covered", 0, CableCoreType.COVERED, "parts/cable/covered/" ), COVERED,
/** /**
* Connections to this block should render as smart. * Connections to this block should render as smart.
*/ */
SMART( "smart", 8, CableCoreType.COVERED, "parts/cable/smart/" ), SMART,
/** /**
* Dense Cable, represents a tier 2 block that can carry 32 channels. * Dense Cable, represents a tier 2 block that can carry 32 channels.
*/ */
DENSE( "dense", 32, CableCoreType.DENSE, "parts/cable/dense/" ); DENSE;
public static final AECableType[] VALIDCABLES = { public static final AECableType[] VALIDCABLES = {
GLASS, GLASS,
@ -64,60 +58,4 @@ public enum AECableType
DENSE DENSE
}; };
private final CableCoreType coreType;
private final String type;
private final int displayedChannels;
private final ResourceLocation model;
private final ResourceLocation connectionModel;
private final ResourceLocation straightModel;
private final String textureFolder;
private AECableType( String type, int displayedChannels, CableCoreType coreType, String textureFolder )
{
this.type = type;
this.displayedChannels = displayedChannels;
this.model = new ResourceLocation( "appliedenergistics2", "part/cable/" + type + "/center" );
this.connectionModel = new ResourceLocation( "appliedenergistics2", "part/cable/" + type + "/connection" );
this.straightModel = new ResourceLocation( "appliedenergistics2", "part/cable/" + type + "/straight" );
this.coreType = coreType;
this.textureFolder = textureFolder;
}
public int displayedChannels()
{
return displayedChannels;
}
public ResourceLocation getModel()
{
return model;
}
public ResourceLocation getConnectionModel()
{
return connectionModel;
}
public ResourceLocation getStraightModel()
{
return straightModel;
}
/**
* @return The type of core that should be rendered when this cable isn't straight and needs to have a core to attach connections to. Is null for the NULL
* cable.
*/
public CableCoreType getCoreType()
{
return coreType;
}
public ResourceLocation getConnectionTexture( AEColor color )
{
if ( textureFolder == null ) {
throw new IllegalStateException( "Cable type " + name() + " does not support connections." );
}
return new ResourceLocation( AppEng.MOD_ID, textureFolder + color.name().toLowerCase() );
}
} }

View file

@ -17,6 +17,7 @@ import net.minecraft.util.ResourceLocation;
import appeng.api.util.AECableType; import appeng.api.util.AECableType;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.core.AppEng;
/** /**
@ -60,7 +61,7 @@ class CableBuilder
for( AEColor color : AEColor.values() ) for( AEColor color : AEColor.values() )
{ {
colorTextures.put( color, bakedTextureGetter.apply( type.getConnectionTexture( color ) ) ); colorTextures.put( color, bakedTextureGetter.apply( getConnectionTexture( type, color ) ) );
} }
connectionTextures.put( type, colorTextures ); connectionTextures.put( type, colorTextures );
@ -69,6 +70,29 @@ class CableBuilder
smartCableTextures = new SmartCableTextures( bakedTextureGetter ); smartCableTextures = new SmartCableTextures( bakedTextureGetter );
} }
static ResourceLocation getConnectionTexture( AECableType cableType, AEColor color )
{
String textureFolder;
switch (cableType) {
case GLASS:
textureFolder = "parts/cable/glass/";
break;
case COVERED:
textureFolder = "parts/cable/covered/";
break;
case SMART:
textureFolder = "parts/cable/smart/";
break;
case DENSE:
textureFolder = "parts/cable/dense/";
break;
default:
throw new IllegalStateException( "Cable type " + cableType + " does not support connections." );
}
return new ResourceLocation( AppEng.MOD_ID, textureFolder + color.name().toLowerCase() );
}
/** /**
* Adds the core of a cable to the given list of quads. * Adds the core of a cable to the given list of quads.
* *
@ -656,7 +680,7 @@ class CableBuilder
{ {
for( AEColor color : AEColor.values() ) for( AEColor color : AEColor.values() )
{ {
locations.add( cableType.getConnectionTexture( color ) ); locations.add( getConnectionTexture( cableType, color ) );
} }
} }

View file

@ -195,7 +195,7 @@ public class CableBusBakedModel implements IBakedModel
*/ */
public List<TextureAtlasSprite> getParticleTextures( CableBusRenderState renderState ) public List<TextureAtlasSprite> getParticleTextures( CableBusRenderState renderState )
{ {
CableCoreType coreType = renderState.getCableType().getCoreType(); CableCoreType coreType = CableCoreType.fromCableType( renderState.getCableType() );
AEColor cableColor = renderState.getCableColor(); AEColor cableColor = renderState.getCableColor();
if( coreType != null ) if( coreType != null )

View file

@ -1,8 +1,14 @@
package appeng.client.render.cablebus; package appeng.client.render.cablebus;
import java.util.EnumMap;
import java.util.Map;
import com.google.common.collect.ImmutableMap;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import appeng.api.util.AECableType;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.core.AppEng; import appeng.core.AppEng;
@ -20,6 +26,24 @@ public enum CableCoreType
COVERED( "parts/cable/core/covered" ), COVERED( "parts/cable/core/covered" ),
DENSE( "parts/cable/core/dense" ); DENSE( "parts/cable/core/dense" );
private static final Map<AECableType, CableCoreType> cableMapping = generateCableMapping();
/**
* Creates the mapping that assigns a cable core type to an AE cable type.
*/
private static Map<AECableType, CableCoreType> generateCableMapping()
{
Map<AECableType, CableCoreType> result = new EnumMap<>( AECableType.class );
result.put( AECableType.GLASS, CableCoreType.GLASS );
result.put( AECableType.COVERED, CableCoreType.COVERED );
result.put( AECableType.SMART, CableCoreType.COVERED );
result.put( AECableType.DENSE, CableCoreType.DENSE );
return ImmutableMap.copyOf( result );
}
private final String textureFolder; private final String textureFolder;
CableCoreType( String textureFolder ) CableCoreType( String textureFolder )
@ -27,6 +51,15 @@ public enum CableCoreType
this.textureFolder = textureFolder; this.textureFolder = textureFolder;
} }
/**
* @return The type of core that should be rendered when the given cable isn't straight and needs to have a core to attach connections to.
* Is null for the NULL cable.
*/
public static CableCoreType fromCableType( AECableType cableType )
{
return cableMapping.get( cableType );
}
public ResourceLocation getTexture( AEColor color ) public ResourceLocation getTexture( AEColor color )
{ {
return new ResourceLocation( AppEng.MOD_ID, textureFolder + "/" + color.name().toLowerCase() ); return new ResourceLocation( AppEng.MOD_ID, textureFolder + "/" + color.name().toLowerCase() );

View file

@ -1163,7 +1163,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
{ {
renderState.setCableColor( cable.getCableColor() ); renderState.setCableColor( cable.getCableColor() );
renderState.setCableType( cable.getCableConnectionType() ); renderState.setCableType( cable.getCableConnectionType() );
renderState.setCoreType( cable.getCableConnectionType().getCoreType() ); renderState.setCoreType( CableCoreType.fromCableType( cable.getCableConnectionType() ) );
// Check each outgoing connection for the desired characteristics // Check each outgoing connection for the desired characteristics
for( EnumFacing facing : EnumFacing.values() ) for( EnumFacing facing : EnumFacing.values() )