@Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { if (lastWorld != FMLClientHandler.instance().getClient().theWorld || thePlayer != FMLClientHandler.instance().getClient().thePlayer) { thePlayer = FMLClientHandler.instance().getClient().thePlayer; if (thePlayer != null) { lastWorld = thePlayer.worldObj; } else { lastWorld = null; } } if (thePlayer != null && thePlayer.isEntityAlive() && !DynamicLights.globalLightsOff()) { int prevLight = lightLevel; ItemStack item = thePlayer.getCurrentEquippedItem(); lightLevel = getLightFromItemStack(item); for (ItemStack armor : thePlayer.inventory.armorInventory) { lightLevel = Math.max(lightLevel, getLightFromItemStack(armor)); } if (prevLight != 0 && lightLevel != prevLight) { lightLevel = 0; } else { if (thePlayer.isBurning()) { lightLevel = 15; } else { if (checkPlayerWater(thePlayer) && item != null && notWaterProofItems.retrieveValue(item.itemID, item.getItemDamage()) == 1) { lightLevel = 0; for (ItemStack armor : thePlayer.inventory.armorInventory) { if (armor != null && notWaterProofItems.retrieveValue(armor.itemID, item.getItemDamage()) == 0) { lightLevel = Math.max(lightLevel, getLightFromItemStack(armor)); } } } } } if (!enabled && lightLevel > 8) { enableLight(); } else if (enabled && lightLevel < 9) { disableLight(); } } }
@SubscribeEvent public void onTick(TickEvent.ClientTickEvent tick) { if (lastWorld != FMLClientHandler.instance().getClient().theWorld || thePlayer != FMLClientHandler.instance().getClient().thePlayer) { thePlayer = FMLClientHandler.instance().getClient().thePlayer; if (thePlayer != null) { lastWorld = thePlayer.worldObj; } else { lastWorld = null; } } if (thePlayer != null && thePlayer.isEntityAlive() && !DynamicLights.globalLightsOff()) { List<IMCMessage> messages = FMLInterModComms.fetchRuntimeMessages(this); if (messages.size() > 0) { // just get the last one IMCMessage imcMessage = messages.get(messages.size() - 1); if (imcMessage.key.equalsIgnoreCase("forceplayerlighton")) { if (!fmlOverrideEnable) { fmlOverrideEnable = true; if (!enabled) { lightLevel = 15; enableLight(); } } } else if (imcMessage.key.equalsIgnoreCase("forceplayerlightoff")) { if (fmlOverrideEnable) { fmlOverrideEnable = false; if (enabled) { disableLight(); } } } } if (!fmlOverrideEnable) { int prevLight = lightLevel; ItemStack item = thePlayer.getCurrentEquippedItem(); lightLevel = itemsMap.getLightFromItemStack(item); for (ItemStack armor : thePlayer.inventory.armorInventory) { lightLevel = DynamicLights.maxLight(lightLevel, itemsMap.getLightFromItemStack(armor)); } if (prevLight != 0 && lightLevel != prevLight) { lightLevel = 0; } else { if (thePlayer.isBurning()) { lightLevel = 15; } else { if (checkPlayerWater(thePlayer) && item != null && notWaterProofItems.retrieveValue( GameData.getItemRegistry().getNameForObject(item.getItem()), item.getItemDamage()) == 1) { lightLevel = 0; for (ItemStack armor : thePlayer.inventory.armorInventory) { if (armor != null && notWaterProofItems.retrieveValue( GameData.getItemRegistry().getNameForObject(armor.getItem()), item.getItemDamage()) == 0) { lightLevel = DynamicLights.maxLight(lightLevel, itemsMap.getLightFromItemStack(armor)); } } } } } if (!enabled && lightLevel > 0) { enableLight(); } else if (enabled && lightLevel < 1) { disableLight(); } } } }
private void disableLight() { if (!fmlOverrideEnable) { DynamicLights.removeLightSource(this); enabled = false; } }
private void enableLight() { DynamicLights.addLightSource(this); enabled = true; }
private void disableLight() { DynamicLights.removeLightSource(this); enabled = false; }