From 2e7302e6542092aede0953107c9e7d52b15fa15c Mon Sep 17 00:00:00 2001 From: SquidDev Date: Fri, 19 Jan 2018 12:42:32 +0000 Subject: [PATCH 1/2] Fix turtle speaker upgrade's missing texture The sprite was not registered into the atlas, meaning it rendered the missing texture instead. --- .../dan200/computercraft/client/proxy/CCTurtleProxyClient.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java index 9e778ba46..8c99b8959 100644 --- a/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java @@ -143,6 +143,7 @@ public class CCTurtleProxyClient extends CCTurtleProxyCommon public void onTextureStitchEvent( TextureStitchEvent.Pre event ) { event.getMap().registerSprite( new ResourceLocation( "computercraft", "blocks/crafty_upgrade" ) ); + event.getMap().registerSprite( new ResourceLocation( "computercraft", "blocks/turtle_speaker_face" ) ); } @SubscribeEvent From 80b1170b631630a93ee8e43b426395b3ef4f852f Mon Sep 17 00:00:00 2001 From: SquidDev Date: Fri, 19 Jan 2018 13:04:50 +0000 Subject: [PATCH 2/2] Extract required textures from models instead This ensures we will not get missing texture errors in the future, and allows resource pack artists to use additional textures. --- .../client/proxy/CCTurtleProxyClient.java | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java index 8c99b8959..31b3b9385 100644 --- a/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/CCTurtleProxyClient.java @@ -20,6 +20,7 @@ import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.color.IItemColor; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.resources.IResourceManager; import net.minecraft.client.resources.SimpleReloadableResourceManager; @@ -115,8 +116,23 @@ public class CCTurtleProxyClient extends CCTurtleProxyCommon MinecraftForge.EVENT_BUS.register( handlers ); } - public class ForgeHandlers + public static class ForgeHandlers { + private static final String[] TURTLE_UPGRADES = { + "turtle_modem_off_left", + "turtle_modem_on_left", + "turtle_modem_off_right", + "turtle_modem_on_right", + "turtle_crafting_table_left", + "turtle_crafting_table_right", + "advanced_turtle_modem_off_left", + "advanced_turtle_modem_on_left", + "advanced_turtle_modem_off_right", + "advanced_turtle_modem_on_right", + "turtle_speaker_upgrade_left", + "turtle_speaker_upgrade_right", + }; + private TurtleSmartItemModel m_turtleSmartItemModel; public ForgeHandlers() @@ -142,25 +158,27 @@ public class CCTurtleProxyClient extends CCTurtleProxyCommon @SubscribeEvent public void onTextureStitchEvent( TextureStitchEvent.Pre event ) { - event.getMap().registerSprite( new ResourceLocation( "computercraft", "blocks/crafty_upgrade" ) ); - event.getMap().registerSprite( new ResourceLocation( "computercraft", "blocks/turtle_speaker_face" ) ); + // Load all textures for upgrades + TextureMap map = event.getMap(); + for( String upgrade : TURTLE_UPGRADES ) + { + IModel model = ModelLoaderRegistry.getModelOrMissing( new ResourceLocation( "computercraft", "block/" + upgrade ) ); + for( ResourceLocation texture : model.getTextures() ) + { + map.registerSprite( texture ); + } + } } @SubscribeEvent public void onModelBakeEvent( ModelBakeEvent event ) { - loadModel( event, "turtle_modem_off_left" ); - loadModel( event, "turtle_modem_on_left" ); - loadModel( event, "turtle_modem_off_right" ); - loadModel( event, "turtle_modem_on_right" ); - loadModel( event, "turtle_crafting_table_left" ); - loadModel( event, "turtle_crafting_table_right" ); - loadModel( event, "advanced_turtle_modem_off_left" ); - loadModel( event, "advanced_turtle_modem_on_left" ); - loadModel( event, "advanced_turtle_modem_off_right" ); - loadModel( event, "advanced_turtle_modem_on_right" ); - loadModel( event, "turtle_speaker_upgrade_left" ); - loadModel( event, "turtle_speaker_upgrade_right" ); + // Load all upgrade models + for( String upgrade : TURTLE_UPGRADES ) + { + loadModel( event, upgrade ); + } + loadSmartModel( event, "turtle_dynamic", m_turtleSmartItemModel ); }