Fixes #2525: Break particles for all attachments of a cable bus.
This commit is contained in:
@@ -303,7 +303,9 @@ public class BlockCableBus extends AEBaseTileBlock
|
|||||||
|
|
||||||
CableBusRenderState renderState = cb.getRenderState();
|
CableBusRenderState renderState = cb.getRenderState();
|
||||||
|
|
||||||
for( TextureAtlasSprite texture : cableBusModel.getParticleTextures( renderState ) )
|
List<TextureAtlasSprite> textures = cableBusModel.getParticleTextures( renderState );
|
||||||
|
|
||||||
|
if( !textures.isEmpty() )
|
||||||
{
|
{
|
||||||
// Shamelessly inspired by ParticleManager.addBlockDestroyEffects
|
// Shamelessly inspired by ParticleManager.addBlockDestroyEffects
|
||||||
for( int j = 0; j < 4; ++j )
|
for( int j = 0; j < 4; ++j )
|
||||||
@@ -312,6 +314,9 @@ public class BlockCableBus extends AEBaseTileBlock
|
|||||||
{
|
{
|
||||||
for( int l = 0; l < 4; ++l )
|
for( int l = 0; l < 4; ++l )
|
||||||
{
|
{
|
||||||
|
// Randomly select one of the textures if the cable bus has more than just one possibility here
|
||||||
|
TextureAtlasSprite texture = Platform.pickRandom( textures );
|
||||||
|
|
||||||
double d0 = (double) pos.getX() + ( (double) j + 0.5D ) / 4.0D;
|
double d0 = (double) pos.getX() + ( (double) j + 0.5D ) / 4.0D;
|
||||||
double d1 = (double) pos.getY() + ( (double) k + 0.5D ) / 4.0D;
|
double d1 = (double) pos.getY() + ( (double) k + 0.5D ) / 4.0D;
|
||||||
double d2 = (double) pos.getZ() + ( (double) l + 0.5D ) / 4.0D;
|
double d2 = (double) pos.getZ() + ( (double) l + 0.5D ) / 4.0D;
|
||||||
|
|||||||
@@ -28,11 +28,13 @@ import java.util.Map;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
import net.minecraft.client.renderer.block.model.IBakedModel;
|
||||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
|
||||||
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
import net.minecraft.client.renderer.block.model.ItemOverrideList;
|
||||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||||
|
import net.minecraft.client.renderer.texture.TextureMap;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
@@ -55,6 +57,8 @@ public class CableBusBakedModel implements IBakedModel
|
|||||||
|
|
||||||
private final TextureAtlasSprite particleTexture;
|
private final TextureAtlasSprite particleTexture;
|
||||||
|
|
||||||
|
private final TextureMap textureMap = Minecraft.getMinecraft().getTextureMapBlocks();
|
||||||
|
|
||||||
CableBusBakedModel( CableBuilder cableBuilder, FacadeBuilder facadeBuilder, Map<ResourceLocation, IBakedModel> partModels, TextureAtlasSprite particleTexture )
|
CableBusBakedModel( CableBuilder cableBuilder, FacadeBuilder facadeBuilder, Map<ResourceLocation, IBakedModel> partModels, TextureAtlasSprite particleTexture )
|
||||||
{
|
{
|
||||||
this.cableBuilder = cableBuilder;
|
this.cableBuilder = cableBuilder;
|
||||||
@@ -255,17 +259,39 @@ public class CableBusBakedModel implements IBakedModel
|
|||||||
CableCoreType coreType = CableCoreType.fromCableType( renderState.getCableType() );
|
CableCoreType coreType = CableCoreType.fromCableType( renderState.getCableType() );
|
||||||
AEColor cableColor = renderState.getCableColor();
|
AEColor cableColor = renderState.getCableColor();
|
||||||
|
|
||||||
|
List<TextureAtlasSprite> result = new ArrayList<>();
|
||||||
|
|
||||||
if( coreType != null )
|
if( coreType != null )
|
||||||
{
|
{
|
||||||
return Collections.singletonList( cableBuilder.getCoreTexture( coreType, cableColor ) );
|
result.add( cableBuilder.getCoreTexture( coreType, cableColor ) );
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// If no core is present, just use the first part that comes into play
|
||||||
|
for( EnumFacing side : renderState.getAttachments().keySet() )
|
||||||
{
|
{
|
||||||
return Collections.emptyList();
|
List<ResourceLocation> models = renderState.getAttachments().get( side );
|
||||||
|
|
||||||
|
for( ResourceLocation model : models )
|
||||||
|
{
|
||||||
|
IBakedModel bakedModel = partModels.get( model );
|
||||||
|
|
||||||
|
if( bakedModel == null )
|
||||||
|
{
|
||||||
|
throw new IllegalStateException( "Trying to use an unregistered part model: " + model );
|
||||||
|
}
|
||||||
|
|
||||||
|
TextureAtlasSprite particleTexture = bakedModel.getParticleTexture();
|
||||||
|
|
||||||
|
// If a part sub-model has no particle texture (indicated by it being the missing texture), don't add it,
|
||||||
|
// so we don't get ugly missing texture break particles.
|
||||||
|
if ( textureMap.getMissingSprite() != particleTexture )
|
||||||
|
{
|
||||||
|
result.add( particleTexture );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add break particles even for the attachments, not just the cable
|
return result;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static CableBusRenderState getRenderingState( IBlockState state )
|
private static CableBusRenderState getRenderingState( IBlockState state )
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": {
|
"textures": {
|
||||||
"0": "appliedenergistics2:parts/cable_anchor"
|
"0": "appliedenergistics2:parts/cable_anchor",
|
||||||
|
"particle": "appliedenergistics2:parts/cable_anchor"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": {
|
"textures": {
|
||||||
"0": "appliedenergistics2:parts/cable_anchor"
|
"0": "appliedenergistics2:parts/cable_anchor",
|
||||||
|
"particle": "appliedenergistics2:parts/cable_anchor"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,8 @@
|
|||||||
"l1": "appliedenergistics2:parts/crafting_terminal/l1",
|
"l1": "appliedenergistics2:parts/crafting_terminal/l1",
|
||||||
"l2": "appliedenergistics2:parts/crafting_terminal/l2",
|
"l2": "appliedenergistics2:parts/crafting_terminal/l2",
|
||||||
"SidesStatus": "appliedenergistics2:parts/crafting_terminal/sidesstatus",
|
"SidesStatus": "appliedenergistics2:parts/crafting_terminal/sidesstatus",
|
||||||
"Backlights": "appliedenergistics2:parts/crafting_terminal/backlights"
|
"Backlights": "appliedenergistics2:parts/crafting_terminal/backlights",
|
||||||
|
"particle": "appliedenergistics2:parts/crafting_terminal/back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"sides": "appliedenergistics2:parts/monitor_sides",
|
"sides": "appliedenergistics2:parts/monitor_sides",
|
||||||
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/monitor_back",
|
"back": "appliedenergistics2:parts/monitor_back",
|
||||||
"front": "appliedenergistics2:parts/monitor_front"
|
"front": "appliedenergistics2:parts/monitor_front",
|
||||||
|
"particle": "appliedenergistics2:parts/monitor_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"sides": "appliedenergistics2:parts/export_bus_sides",
|
"sides": "appliedenergistics2:parts/export_bus_sides",
|
||||||
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/monitor_back",
|
"back": "appliedenergistics2:parts/monitor_back",
|
||||||
"front": "appliedenergistics2:items/part/export_bus"
|
"front": "appliedenergistics2:items/part/export_bus",
|
||||||
|
"particle": "appliedenergistics2:parts/monitor_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"sides": "appliedenergistics2:parts/import_bus_sides",
|
"sides": "appliedenergistics2:parts/import_bus_sides",
|
||||||
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/monitor_back",
|
"back": "appliedenergistics2:parts/monitor_back",
|
||||||
"front": "appliedenergistics2:items/part/import_bus"
|
"front": "appliedenergistics2:items/part/import_bus",
|
||||||
|
"particle": "appliedenergistics2:parts/monitor_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"sides": "appliedenergistics2:parts/export_bus_sides",
|
"sides": "appliedenergistics2:parts/export_bus_sides",
|
||||||
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/monitor_back",
|
"back": "appliedenergistics2:parts/monitor_back",
|
||||||
"front": "appliedenergistics2:items/part/interface"
|
"front": "appliedenergistics2:items/part/interface",
|
||||||
|
"particle": "appliedenergistics2:parts/monitor_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-1
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"textures": {
|
"textures": {
|
||||||
"emitter": "appliedenergistics2:parts/level_emitter_off",
|
"emitter": "appliedenergistics2:parts/level_emitter_off",
|
||||||
"sides": "appliedenergistics2:parts/monitor_sides"
|
"sides": "appliedenergistics2:parts/monitor_sides",
|
||||||
|
"particle": "appliedenergistics2:parts/level_emitter_off"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-1
@@ -2,7 +2,8 @@
|
|||||||
"uvlMarker": true,
|
"uvlMarker": true,
|
||||||
"ambientocclusion": false,
|
"ambientocclusion": false,
|
||||||
"textures": {
|
"textures": {
|
||||||
"emitter": "appliedenergistics2:parts/level_emitter_on"
|
"emitter": "appliedenergistics2:parts/level_emitter_on",
|
||||||
|
"particle": "appliedenergistics2:parts/level_emitter_on"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"textures": {
|
"textures": {
|
||||||
"sides": "appliedenergistics2:parts/monitor_sides",
|
"sides": "appliedenergistics2:parts/monitor_sides",
|
||||||
"back": "appliedenergistics2:parts/monitor_back",
|
"back": "appliedenergistics2:parts/monitor_back",
|
||||||
"front": "appliedenergistics2:parts/monitor_front"
|
"front": "appliedenergistics2:parts/monitor_front",
|
||||||
|
"particle": "appliedenergistics2:parts/monitor_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"front": "appliedenergistics2:items/part/p2p_tunnel_front",
|
"front": "appliedenergistics2:items/part/p2p_tunnel_front",
|
||||||
"sides": "appliedenergistics2:parts/p2p_tunnel_sides",
|
"sides": "appliedenergistics2:parts/p2p_tunnel_sides",
|
||||||
"back": "appliedenergistics2:items/part/p2p_tunnel_back",
|
"back": "appliedenergistics2:items/part/p2p_tunnel_back",
|
||||||
"back2": "appliedenergistics2:items/part/p2p_tunnel_back2"
|
"back2": "appliedenergistics2:items/part/p2p_tunnel_back2",
|
||||||
|
"particle": "appliedenergistics2:items/part/p2p_tunnel_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"textures": {
|
"textures": {
|
||||||
"fiber": "appliedenergistics2:items/part/quartz_fiber"
|
"fiber": "appliedenergistics2:items/part/quartz_fiber",
|
||||||
|
"particle": "appliedenergistics2:items/part/quartz_fiber"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"sides": "appliedenergistics2:parts/storage_bus_sides",
|
"sides": "appliedenergistics2:parts/storage_bus_sides",
|
||||||
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
"sidesStatus": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/storage_bus_back",
|
"back": "appliedenergistics2:parts/storage_bus_back",
|
||||||
"front": "appliedenergistics2:items/part/storage_bus"
|
"front": "appliedenergistics2:items/part/storage_bus",
|
||||||
|
"particle": "appliedenergistics2:parts/storage_bus_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"textures": {
|
"textures": {
|
||||||
"bus": "appliedenergistics2:items/part/toggle_bus",
|
"bus": "appliedenergistics2:items/part/toggle_bus",
|
||||||
"sides": "appliedenergistics2:parts/monitor_sides_status"
|
"sides": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
|
"particle": "appliedenergistics2:items/part/toggle_bus"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
"textures": {
|
"textures": {
|
||||||
"sides": "appliedenergistics2:parts/monitor_sides_status",
|
"sides": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/transition_plane_back",
|
"back": "appliedenergistics2:parts/transition_plane_back",
|
||||||
"indicator": "appliedenergistics2:parts/monitor_sides_status_off"
|
"indicator": "appliedenergistics2:parts/monitor_sides_status_off",
|
||||||
|
"particle": "appliedenergistics2:parts/transition_plane_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -3,7 +3,8 @@
|
|||||||
"textures": {
|
"textures": {
|
||||||
"sides": "appliedenergistics2:parts/monitor_sides_status",
|
"sides": "appliedenergistics2:parts/monitor_sides_status",
|
||||||
"back": "appliedenergistics2:parts/transition_plane_back",
|
"back": "appliedenergistics2:parts/transition_plane_back",
|
||||||
"indicator": "appliedenergistics2:parts/monitor_sides_status_on"
|
"indicator": "appliedenergistics2:parts/monitor_sides_status_on",
|
||||||
|
"particle": "appliedenergistics2:parts/transition_plane_back"
|
||||||
},
|
},
|
||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user