From 5a4375f6ac69a84aa662088b3b63e28d982af897 Mon Sep 17 00:00:00 2001 From: SquidDev Date: Fri, 5 May 2017 00:54:41 +0100 Subject: [PATCH] Allow changing the colour of the modem light This now uses an integer between 0 and 15 to represent a colour, rather than a simple on/off flag. --- .../api/pocket/IPocketAccess.java | 23 +++++++++--- .../proxy/ComputerCraftProxyClient.java | 35 +++++++++++------- .../pocket/core/PocketServerComputer.java | 19 ++++++---- .../pocket/items/ItemPocketComputer.java | 12 ++++-- .../pocket/peripherals/PocketModem.java | 3 +- .../advanced_pocket_computer_blinking.json | 3 +- ...ced_pocket_computer_blinking_modem_on.json | 7 ---- .../item/advanced_pocket_computer_on.json | 3 +- .../advanced_pocket_computer_on_modem_on.json | 7 ---- .../models/item/pocket_computer_blinking.json | 3 +- .../pocket_computer_blinking_modem_on.json | 7 ---- .../models/item/pocket_computer_on.json | 3 +- .../item/pocket_computer_on_modem_on.json | 7 ---- .../textures/items/pocketComputerLight.png | Bin 0 -> 246 bytes .../items/pocketComputerModemLight.png | Bin 242 -> 0 bytes 15 files changed, 68 insertions(+), 64 deletions(-) delete mode 100644 src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking_modem_on.json delete mode 100644 src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on_modem_on.json delete mode 100644 src/main/resources/assets/computercraft/models/item/pocket_computer_blinking_modem_on.json delete mode 100644 src/main/resources/assets/computercraft/models/item/pocket_computer_on_modem_on.json create mode 100644 src/main/resources/assets/computercraft/textures/items/pocketComputerLight.png delete mode 100644 src/main/resources/assets/computercraft/textures/items/pocketComputerModemLight.png diff --git a/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java b/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java index f2df7ca91..8a7b6f26b 100644 --- a/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java +++ b/src/main/java/dan200/computercraft/api/pocket/IPocketAccess.java @@ -23,29 +23,40 @@ public interface IPocketAccess Entity getEntity(); /** - * Get if the modem light is turned on + * Get the colour of the modem light. * - * @return If the modem light is turned on + * See {@link #setLight(int)} for the values this may return. + * + * @return The colour of the modem light. + * @see #setLight(int) */ - boolean getModemLight(); + int getLight(); /** - * Turn on/off the modem light + * Set the colour of the modem light. Use {@link 0} to turn it off. * - * @param value If the light should be on + * Colours take the form of an integer between 0 and 15, using the opposite order to those in + * {@link The colors API} - so 0 being black, + * 1 representing red, 2 representing green all the way up to 15 for white. + * + * @param value The colour the light should have. + * @see #getLight() */ - void setModemLight( boolean value ); + void setLight( int value ); /** * Get the upgrade specific NBT * * @return The upgrade's NBT + * @see #updateUpgradeNBTData() */ @Nonnull NBTTagCompound getUpgradeNBTData(); /** * Mark the upgrade specific NBT as dirty + * + * @see #getUpgradeNBTData() */ void updateUpgradeNBTData(); diff --git a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java index 747fef93d..7dab83860 100644 --- a/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java +++ b/src/main/java/dan200/computercraft/client/proxy/ComputerCraftProxyClient.java @@ -25,6 +25,7 @@ import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon; import dan200.computercraft.shared.turtle.blocks.TileTurtle; import dan200.computercraft.shared.turtle.entity.TurtleVisionCamera; +import dan200.computercraft.shared.util.Colour; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; @@ -53,7 +54,6 @@ import net.minecraftforge.fml.common.gameevent.TickEvent; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import org.lwjgl.opengl.GL11; import java.io.File; import java.util.ArrayList; @@ -117,19 +117,14 @@ public ModelResourceLocation getModelLocation( ItemStack stack ) private ModelResourceLocation pocket_computer_off = new ModelResourceLocation( "computercraft:pocketComputer", "inventory" ); private ModelResourceLocation pocket_computer_on = new ModelResourceLocation( "computercraft:pocket_computer_on", "inventory" ); private ModelResourceLocation pocket_computer_blinking = new ModelResourceLocation( "computercraft:pocket_computer_blinking", "inventory" ); - private ModelResourceLocation pocket_computer_on_modem_on = new ModelResourceLocation( "computercraft:pocket_computer_on_modem_on", "inventory" ); - private ModelResourceLocation pocket_computer_blinking_modem_on = new ModelResourceLocation( "computercraft:pocket_computer_blinking_modem_on", "inventory" ); private ModelResourceLocation advanced_pocket_computer_off = new ModelResourceLocation( "computercraft:advanced_pocket_computer_off", "inventory" ); private ModelResourceLocation advanced_pocket_computer_on = new ModelResourceLocation( "computercraft:advanced_pocket_computer_on", "inventory" ); private ModelResourceLocation advanced_pocket_computer_blinking = new ModelResourceLocation( "computercraft:advanced_pocket_computer_blinking", "inventory" ); - private ModelResourceLocation advanced_pocket_computer_on_modem_on = new ModelResourceLocation( "computercraft:advanced_pocket_computer_on_modem_on", "inventory" ); - private ModelResourceLocation advanced_pocket_computer_blinking_modem_on = new ModelResourceLocation( "computercraft:advanced_pocket_computer_blinking_modem_on", "inventory" ); @Override public ModelResourceLocation getModelLocation( ItemStack stack ) { ItemPocketComputer itemPocketComputer = (ItemPocketComputer)stack.getItem(); - boolean modemOn = itemPocketComputer.getLightState( stack ); switch( itemPocketComputer.getFamily( stack ) ) { case Advanced: @@ -143,11 +138,11 @@ public ModelResourceLocation getModelLocation( ItemStack stack ) } case On: { - return modemOn ? advanced_pocket_computer_on_modem_on : advanced_pocket_computer_on; + return advanced_pocket_computer_on; } case Blinking: { - return modemOn ? advanced_pocket_computer_blinking_modem_on : advanced_pocket_computer_blinking; + return advanced_pocket_computer_blinking; } } } @@ -163,24 +158,36 @@ public ModelResourceLocation getModelLocation( ItemStack stack ) } case On: { - return modemOn ? pocket_computer_on_modem_on : pocket_computer_on; + return pocket_computer_on; } case Blinking: { - return modemOn ? pocket_computer_blinking_modem_on : pocket_computer_blinking; + return pocket_computer_blinking; } } } } } }, new String[] { - "pocketComputer", "pocket_computer_on", "pocket_computer_blinking", "pocket_computer_on_modem_on", "pocket_computer_blinking_modem_on", - "advanced_pocket_computer_off", "advanced_pocket_computer_on", "advanced_pocket_computer_blinking", "advanced_pocket_computer_on_modem_on", "advanced_pocket_computer_blinking_modem_on", + "pocketComputer", "pocket_computer_on", "pocket_computer_blinking", + "advanced_pocket_computer_off", "advanced_pocket_computer_on", "advanced_pocket_computer_blinking", } ); // Setup - mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.disk), ComputerCraft.Items.disk); - mc.getItemColors().registerItemColorHandler(new DiskColorHandler(ComputerCraft.Items.diskExpanded), ComputerCraft.Items.diskExpanded); + mc.getItemColors().registerItemColorHandler( new DiskColorHandler( ComputerCraft.Items.disk ), ComputerCraft.Items.disk ); + mc.getItemColors().registerItemColorHandler( new DiskColorHandler( ComputerCraft.Items.diskExpanded ), ComputerCraft.Items.diskExpanded ); + + mc.getItemColors().registerItemColorHandler( new IItemColor() + { + @Override + public int getColorFromItemstack( ItemStack stack, int layout ) + { + if( layout != 1 ) return 0xFFFFFF; + + Colour colour = Colour.fromInt( ComputerCraft.Items.pocketComputer.getLightState( stack ) ); + return colour == null ? Colour.Black.getHex() : colour.getHex(); + } + }, ComputerCraft.Items.pocketComputer ); // Setup renderers ClientRegistry.bindTileEntitySpecialRenderer( TileMonitor.class, new TileEntityMonitorRenderer() ); diff --git a/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java b/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java index 9f01eb70c..bccc4f371 100644 --- a/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java +++ b/src/main/java/dan200/computercraft/shared/pocket/core/PocketServerComputer.java @@ -40,18 +40,21 @@ public Entity getEntity() } @Override - public boolean getModemLight() + public int getLight() { - return getUserData().getBoolean( "modemLight" ); + int value = getUserData().getInteger( "modemLight" ); + return value >= 0 && value <= 15 ? value : 0; } @Override - public void setModemLight( boolean value ) + public void setLight( int value ) { + if( value < 0 || value > 15 ) throw new IllegalArgumentException( "Colour out of bounds" ); + NBTTagCompound tag = getUserData(); - if( tag.getBoolean( "modemLight" ) != value ) + if( tag.getInteger( "modemLight" ) != value ) { - tag.setBoolean( "modemLight", value ); + tag.setInteger( "modemLight", value ); updateUserData(); } } @@ -117,11 +120,13 @@ public Map getUpgrades() } } - public ItemStack getStack() { + public ItemStack getStack() + { return m_stack; } - public IPocketUpgrade getUpgrade() { + public IPocketUpgrade getUpgrade() + { return m_upgrade; } diff --git a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java index 6a4c3da85..ba86bbe9e 100644 --- a/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java +++ b/src/main/java/dan200/computercraft/shared/pocket/items/ItemPocketComputer.java @@ -32,6 +32,8 @@ import net.minecraft.util.SoundEvent; import net.minecraft.world.World; import net.minecraftforge.common.util.Constants; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import java.util.List; @@ -433,6 +435,7 @@ private void setSessionID( ItemStack stack, int sessionID ) stack.getTagCompound().setInteger( "sessionID", sessionID ); } + @SideOnly(Side.CLIENT) public ComputerState getState( ItemStack stack ) { ClientComputer computer = getClientComputer( stack ); @@ -443,18 +446,19 @@ public ComputerState getState( ItemStack stack ) return ComputerState.Off; } - public boolean getLightState( ItemStack stack ) + @SideOnly(Side.CLIENT) + public int getLightState( ItemStack stack ) { ClientComputer computer = getClientComputer( stack ); if( computer != null && computer.isOn() ) { NBTTagCompound computerNBT = computer.getUserData(); - if( computerNBT != null && computerNBT.getBoolean( "modemLight" ) ) + if( computerNBT != null ) { - return true; + return computerNBT.getInteger( "modemLight" ); } } - return false; + return 0; } public static IPocketUpgrade getUpgrade( ItemStack stack ) diff --git a/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java b/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java index 8ef40b64a..8d58a8365 100644 --- a/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java +++ b/src/main/java/dan200/computercraft/shared/pocket/peripherals/PocketModem.java @@ -5,6 +5,7 @@ import dan200.computercraft.api.pocket.IPocketUpgrade; import dan200.computercraft.shared.peripheral.PeripheralType; import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory; +import dan200.computercraft.shared.util.Colour; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; @@ -76,7 +77,7 @@ else if( entity != null ) modem.setLocation( entity.getEntityWorld(), entity.posX, entity.posY, entity.posZ ); } - access.setModemLight( modem.isActive() ); + access.setLight( modem.isActive() ? Colour.Red.ordinal() : Colour.Black.ordinal() ); } } diff --git a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking.json b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking.json index 44d6ba418..784b5a5cd 100644 --- a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking.json +++ b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking.json @@ -1,6 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "computercraft:items/pocketComputerBlinkAdvanced" + "layer0": "computercraft:items/pocketComputerBlinkAdvanced", + "layer1": "computercraft:items/pocketComputerLight" } } diff --git a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking_modem_on.json b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking_modem_on.json deleted file mode 100644 index e7a01ae0b..000000000 --- a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_blinking_modem_on.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "computercraft:items/pocketComputerBlinkAdvanced", - "layer1": "computercraft:items/pocketComputerModemLight" - } -} diff --git a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on.json b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on.json index 5edc838c8..c3ce43796 100644 --- a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on.json +++ b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on.json @@ -1,6 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "computercraft:items/pocketComputerOnAdvanced" + "layer0": "computercraft:items/pocketComputerOnAdvanced", + "layer1": "computercraft:items/pocketComputerLight" } } diff --git a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on_modem_on.json b/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on_modem_on.json deleted file mode 100644 index da39d266c..000000000 --- a/src/main/resources/assets/computercraft/models/item/advanced_pocket_computer_on_modem_on.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "computercraft:items/pocketComputerOnAdvanced", - "layer1": "computercraft:items/pocketComputerModemLight" - } -} diff --git a/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking.json b/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking.json index 2600d8049..7309710cb 100644 --- a/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking.json +++ b/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking.json @@ -1,6 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "computercraft:items/pocketComputerBlink" + "layer0": "computercraft:items/pocketComputerBlink", + "layer1": "computercraft:items/pocketComputerLight" } } diff --git a/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking_modem_on.json b/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking_modem_on.json deleted file mode 100644 index 47a53343b..000000000 --- a/src/main/resources/assets/computercraft/models/item/pocket_computer_blinking_modem_on.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "computercraft:items/pocketComputerBlink", - "layer1": "computercraft:items/pocketComputerModemLight" - } -} diff --git a/src/main/resources/assets/computercraft/models/item/pocket_computer_on.json b/src/main/resources/assets/computercraft/models/item/pocket_computer_on.json index 6c7c827ea..9575e139a 100644 --- a/src/main/resources/assets/computercraft/models/item/pocket_computer_on.json +++ b/src/main/resources/assets/computercraft/models/item/pocket_computer_on.json @@ -1,6 +1,7 @@ { "parent": "item/generated", "textures": { - "layer0": "computercraft:items/pocketComputerOn" + "layer0": "computercraft:items/pocketComputerOn", + "layer1": "computercraft:items/pocketComputerLight" } } diff --git a/src/main/resources/assets/computercraft/models/item/pocket_computer_on_modem_on.json b/src/main/resources/assets/computercraft/models/item/pocket_computer_on_modem_on.json deleted file mode 100644 index a08912c00..000000000 --- a/src/main/resources/assets/computercraft/models/item/pocket_computer_on_modem_on.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "computercraft:items/pocketComputerOn", - "layer1": "computercraft:items/pocketComputerModemLight" - } -} diff --git a/src/main/resources/assets/computercraft/textures/items/pocketComputerLight.png b/src/main/resources/assets/computercraft/textures/items/pocketComputerLight.png new file mode 100644 index 0000000000000000000000000000000000000000..52f186fc7ba3a286d8080d4a3d67f2ac4f48ed95 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85p>QK$!8;-MT+OLG}_)Usv|~JY2j=+Oi0Mh)eV$b z&scQnQiWk4+n@jc<(-vzgx@m7v|TvQy5oa_dBWpky%DC0$rGgZun9DuG-8l2PGCs7 ie2#TVf)*ni8v|?otZC=E7L@{xXYh3Ob6Mw<&;$U{3`V~I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/computercraft/textures/items/pocketComputerModemLight.png b/src/main/resources/assets/computercraft/textures/items/pocketComputerModemLight.png deleted file mode 100644 index 42238aafdb77b6e8d5c6093cfad78564b3ede5a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~4;QZz_g+udBS4{gPZ!4!i_^&o3j_=fNoZ+lsbuac ze$K}X0^FMtQc_d`XHD0S=S$zbz*}#QIsf`+KbEM7*a@4t^3S(Xyrmt%J7M}n#ajY% z^nmojGpr(&jUo=Q%sxIo99a(G%@g_5{AasK>lgg`{r~xw@BjPt&N;1Nyl